Merge pull request #1866 from nextcloud/fix/boardClonePermission

This commit is contained in:
Julius Härtl
2020-05-15 14:05:15 +02:00
committed by GitHub
3 changed files with 24 additions and 22 deletions

View File

@@ -153,6 +153,6 @@ class BoardController extends ApiController {
* @return \OCP\Deck\DB\Board
*/
public function clone($boardId) {
return $this->boardService->clone($boardId);
return $this->boardService->clone($boardId, $this->userId);
}
}

View File

@@ -621,13 +621,14 @@ class BoardService {
/**
* @param $id
* @param $userId
* @return Board
* @throws DoesNotExistException
* @throws \OCA\Deck\NoPermissionException
* @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException
* @throws BadRequestException
*/
public function clone($id) {
public function clone($id, $userId) {
if (is_numeric($id) === false) {
throw new BadRequestException('board id must be a number');
}
@@ -637,7 +638,7 @@ class BoardService {
$board = $this->boardMapper->find($id);
$newBoard = new Board();
$newBoard->setTitle($board->getTitle() . ' (' . $this->l10n->t('copy') . ')');
$newBoard->setOwner($board->getOwner());
$newBoard->setOwner($userId);
$newBoard->setColor($board->getColor());
$permissions = $this->permissionService->matchPermissions($board);
$newBoard->setPermissions([

View File

@@ -149,26 +149,27 @@ export default {
text: t('deck', 'Edit board'),
})
}
actions.push({
action: async() => {
this.hideMenu()
this.loading = true
try {
const newBoard = await this.$store.dispatch('cloneBoard', this.board)
this.loading = false
const route = this.routeTo
route.params.id = newBoard.id
this.$router.push(route)
} catch (e) {
OC.Notification.showTemporary(t('deck', 'An error occurred'))
console.error(e)
}
},
icon: 'icon-clone',
text: t('deck', 'Clone board'),
})
if (canManage) {
actions.push({
action: async() => {
this.hideMenu()
this.loading = true
try {
const newBoard = await this.$store.dispatch('cloneBoard', this.board)
this.loading = false
const route = this.routeTo
route.params.id = newBoard.id
this.$router.push(route)
} catch (e) {
OC.Notification.showTemporary(t('deck', 'An error occurred'))
console.error(e)
}
},
icon: 'icon-clone',
text: t('deck', 'Clone board'),
})
if (!this.board.archived) {
actions.push({
action: () => {