Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 36 additions & 3 deletions apps/server/src/modules/board/authorisation/board-node.rule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {
isDrawingElement,
isSubmissionItem,
isSubmissionItemContent,
MediaBoard,
SubmissionItem,
UserWithBoardRoles,
} from '@modules/board';
Expand Down Expand Up @@ -113,6 +114,18 @@ export class BoardNodeRule implements Rule<BoardNodeAuthorizable> {
return this.canEditBoard(user, authorizable);
}

public canCreateMediaBoardLine(user: User, authorizable: BoardNodeAuthorizable): boolean {
return this.canEditBoard(user, authorizable);
}

public canDeleteMediaBoardLine(user: User, authorizable: BoardNodeAuthorizable): boolean {
return this.canEditBoard(user, authorizable);
}

public canUpdateMediaBoardLine(user: User, authorizable: BoardNodeAuthorizable): boolean {
return this.canEditBoard(user, authorizable);
}

public canCreateSubmissionItemContent(user: User, authorizable: BoardNodeAuthorizable): boolean {
return this.isSubmissionItemOfUser(user, authorizable);
}
Expand Down Expand Up @@ -165,6 +178,10 @@ export class BoardNodeRule implements Rule<BoardNodeAuthorizable> {
return this.canEditBoard(user, authorizable);
}

public canMoveElement(user: User, authorizable: BoardNodeAuthorizable): boolean {
return this.canEditBoard(user, authorizable);
}

public canCopyBoard(user: User, authorizable: BoardNodeAuthorizable): boolean {
return this.canManageBoard(user, authorizable);
}
Expand All @@ -182,6 +199,18 @@ export class BoardNodeRule implements Rule<BoardNodeAuthorizable> {
return isBoard && canManageReadersCanEdit;
}

public canUpdateMediaBoardColor(user: User, authorizable: BoardNodeAuthorizable): boolean {
return this.canEditBoard(user, authorizable);
}

public canUpdateMediaBoardLayout(user: User, authorizable: BoardNodeAuthorizable): boolean {
return this.canEditBoard(user, authorizable);
}

public canCollapseMediaBoard(user: User, authorizable: BoardNodeAuthorizable): boolean {
return this.canEditBoard(user, authorizable);
}

public canUpdateBoardLayout(user: User, authorizable: BoardNodeAuthorizable): boolean {
return this.canManageBoard(user, authorizable);
}
Expand All @@ -194,6 +223,10 @@ export class BoardNodeRule implements Rule<BoardNodeAuthorizable> {
return this.canViewBoard(user, authorizable);
}

public canViewMediaBoard(user: User, authorizable: BoardNodeAuthorizable): boolean {
return this.canViewBoard(user, authorizable);
}

public canRelocateContent(user: User, authorizable: BoardNodeAuthorizable): boolean {
const permissions = authorizable.getUserPermissions(user.id);

Expand Down Expand Up @@ -330,23 +363,23 @@ export class BoardNodeRule implements Rule<BoardNodeAuthorizable> {
private canEditBoard(user: User, authorizable: BoardNodeAuthorizable): boolean {
const permissions = authorizable.getUserPermissions(user.id);

const isBoard = authorizable.rootNode instanceof ColumnBoard;
const isBoard = authorizable.rootNode instanceof ColumnBoard || authorizable.rootNode instanceof MediaBoard;
const canEditBoard = permissions.includes(Permission.BOARD_EDIT);
return isBoard && canEditBoard;
}

private canManageBoard(user: User, authorizable: BoardNodeAuthorizable): boolean {
const permissions = authorizable.getUserPermissions(user.id);

const isBoard = authorizable.rootNode instanceof ColumnBoard;
const isBoard = authorizable.rootNode instanceof ColumnBoard || authorizable.rootNode instanceof MediaBoard;
const canManageBoard = permissions.includes(Permission.BOARD_MANAGE);
return isBoard && canManageBoard;
}

private canViewBoard(user: User, authorizable: BoardNodeAuthorizable): boolean {
const permissions = authorizable.getUserPermissions(user.id);

const isBoard = authorizable.rootNode instanceof ColumnBoard;
const isBoard = authorizable.rootNode instanceof ColumnBoard || authorizable.rootNode instanceof MediaBoard;
const canViewBoard = permissions.includes(Permission.BOARD_VIEW);
return isBoard && canViewBoard;
}
Expand Down
12 changes: 1 addition & 11 deletions apps/server/src/modules/board/board-api.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ import {
ElementController,
} from './controller';
import { CopyRoomBoardsStep } from './saga';
import { BoardNodePermissionService } from './service';
import { BoardErrorReportUc, BoardUc, CardUc, ColumnUc, ElementUc, SubmissionItemUc } from './uc';

@Module({
Expand All @@ -40,15 +39,6 @@ import { BoardErrorReportUc, BoardUc, CardUc, ColumnUc, ElementUc, SubmissionIte
BoardSubmissionController,
BoardErrorReportController,
],
providers: [
BoardUc,
BoardNodePermissionService,
BoardErrorReportUc,
ColumnUc,
CardUc,
ElementUc,
SubmissionItemUc,
CopyRoomBoardsStep,
],
providers: [BoardUc, BoardErrorReportUc, ColumnUc, CardUc, ElementUc, SubmissionItemUc, CopyRoomBoardsStep],
})
export class BoardApiModule {}
11 changes: 1 addition & 10 deletions apps/server/src/modules/board/board-ws-api.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ import { forwardRef, Module } from '@nestjs/common';
import { BoardModule } from './board.module';
import { BoardCollaborationGateway } from './gateway/board-collaboration.gateway';
import { MetricsService } from './metrics/metrics.service';
import { BoardNodePermissionService } from './service';
import { BoardUc, CardUc, ColumnUc, ElementUc } from './uc';

@Module({
Expand All @@ -23,15 +22,7 @@ import { BoardUc, CardUc, ColumnUc, ElementUc } from './uc';
RoomModule,
BoardContextApiHelperModule,
],
providers: [
BoardCollaborationGateway,
BoardNodePermissionService,
CardUc,
ColumnUc,
ElementUc,
BoardUc,
MetricsService,
],
providers: [BoardCollaborationGateway, CardUc, ColumnUc, ElementUc, BoardUc, MetricsService],
exports: [],
})
export class BoardWsApiModule {}
3 changes: 2 additions & 1 deletion apps/server/src/modules/board/board.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import { CqrsModule } from '@nestjs/cqrs';
import { AuthorizationModule } from '../authorization';
import { RoomMembershipModule } from '../room-membership';
import { BoardNodeRule } from './authorisation/board-node.rule';
import { BoardNodeFactory } from './domain';
import { BoardNodeFactory, MediaBoardNodeFactory } from './domain';
import { BoardNodeRepo } from './repo';
import { BoardNodeEventSubscriber } from './repo/board-node-event-subscriber';
import {
Expand Down Expand Up @@ -78,6 +78,7 @@ import {
ColumnBoardTitleService,
ContextExternalToolDeletedEventHandlerService,
// TODO replace by import of MediaBoardModule (fix dependency cycle)
MediaBoardNodeFactory,
MediaBoardService,
BoardNodeEventSubscriber,
],
Expand Down
14 changes: 3 additions & 11 deletions apps/server/src/modules/board/media-board-api.module.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { LoggerModule } from '@core/logger';
import { AuthorizationModule } from '@modules/authorization';
import { SagaModule } from '@modules/saga';
import { SchoolLicenseModule } from '@modules/school-license';
import { UserModule } from '@modules/user';
import { UserLicenseModule } from '@modules/user-license';
Expand All @@ -8,10 +9,8 @@ import { ToolModule } from '../tool';
import { BoardModule } from './board.module';
import { MediaBoardController, MediaElementController, MediaLineController } from './controller';
import { MediaBoardModule } from './media-board.module';
import { BoardNodePermissionService } from './service';
import { MediaAvailableLineUc, MediaBoardUc, MediaElementUc, MediaLineUc } from './uc';
import { SagaModule } from '@modules/saga';
import { DeleteUserBoardDataStep } from './saga';
import { MediaAvailableLineUc, MediaBoardUc, MediaElementUc, MediaLineUc } from './uc';

@Module({
imports: [
Expand All @@ -26,13 +25,6 @@ import { DeleteUserBoardDataStep } from './saga';
SagaModule,
],
controllers: [MediaBoardController, MediaLineController, MediaElementController],
providers: [
BoardNodePermissionService,
MediaBoardUc,
MediaLineUc,
MediaElementUc,
MediaAvailableLineUc,
DeleteUserBoardDataStep,
],
providers: [MediaBoardUc, MediaLineUc, MediaElementUc, MediaAvailableLineUc, DeleteUserBoardDataStep],
})
export class MediaBoardApiModule {}

This file was deleted.

Loading
Loading