refactor: changed the get workspaces by user logic

This commit is contained in:
2026-07-07 15:53:18 +03:30
parent a22d6ceb81
commit 29d647556c
3 changed files with 11 additions and 23 deletions
@@ -4,12 +4,12 @@ import { WorkspaceService } from '../providers/workspace.service';
import { CreateWorkspaceDto } from '../dto/workspace/create-workspace.dto'; import { CreateWorkspaceDto } from '../dto/workspace/create-workspace.dto';
import { UpdateWorkspaceDto } from '../dto/workspace/update-workspace.dto'; import { UpdateWorkspaceDto } from '../dto/workspace/update-workspace.dto';
import { TMWorkspace } from '../entities/workspace.entity'; import { TMWorkspace } from '../entities/workspace.entity';
// import { AuthGuards } from '../../../common/decorators/auth-guard.decorator';
import { AdminRoute } from '../../../common/decorators/admin.decorator'; import { AdminRoute } from '../../../common/decorators/admin.decorator';
import { PermissionsDec } from '../../../common/decorators/permission.decorator'; import { PermissionsDec } from '../../../common/decorators/permission.decorator';
import { PermissionEnum } from '../../users/enums/permission.enum'; import { PermissionEnum } from '../../users/enums/permission.enum';
import { UserDec } from '../../../common/decorators/user.decorator'; import { UserDec } from '../../../common/decorators/user.decorator';
import { AuthGuards } from '../../../common/decorators/auth-guard.decorator'; import { AuthGuards } from '../../../common/decorators/auth-guard.decorator';
import { ITokenPayload } from '../../auth/interfaces/IToken-payload';
@AuthGuards() @AuthGuards()
@AdminRoute() @AdminRoute()
@@ -18,24 +18,6 @@ import { AuthGuards } from '../../../common/decorators/auth-guard.decorator';
export class WorkspaceController { export class WorkspaceController {
constructor(private readonly workspaceService: WorkspaceService) {} constructor(private readonly workspaceService: WorkspaceService) {}
@Get()
@PermissionsDec(PermissionEnum.WORKSPACE)
@ApiOperation({ summary: 'Get all workspaces' })
@ApiResponse({ status: 200, description: 'List of workspaces', type: [TMWorkspace] })
findAll(): Promise<TMWorkspace[]> {
return this.workspaceService.findAll();
}
@Get(':id')
@PermissionsDec(PermissionEnum.WORKSPACE)
@ApiOperation({ summary: 'Get a workspace by ID' })
@ApiParam({ name: 'id', description: 'Workspace ID' })
@ApiResponse({ status: 200, description: 'Workspace found', type: TMWorkspace })
@ApiResponse({ status: 404, description: 'Workspace not found' })
findOne(@Param('id') id: string): Promise<TMWorkspace> {
return this.workspaceService.findOneOrFail(id);
}
@Post() @Post()
@PermissionsDec(PermissionEnum.WORKSPACE) @PermissionsDec(PermissionEnum.WORKSPACE)
@ApiOperation({ summary: 'Create a new workspace' }) @ApiOperation({ summary: 'Create a new workspace' })
@@ -68,7 +50,7 @@ export class WorkspaceController {
@ApiOperation({summary: 'Get User WorkSpaces'}) @ApiOperation({summary: 'Get User WorkSpaces'})
@ApiResponse({ status: 200, description: 'Got Workspaces successfully!' }) @ApiResponse({ status: 200, description: 'Got Workspaces successfully!' })
@ApiResponse({ status: 404, description: 'Bad Request!' }) @ApiResponse({ status: 404, description: 'Bad Request!' })
findByUser(@UserDec('id') userId: string) { findByUser(@UserDec() user: ITokenPayload) {
return this.workspaceService.findByUser(userId); return this.workspaceService.findByUser(user.id, user.permissions);
} }
} }
@@ -7,6 +7,7 @@ import { CreateWorkspaceDto } from "../dto/workspace/create-workspace.dto";
import { UpdateWorkspaceDto } from "../dto/workspace/update-workspace.dto"; import { UpdateWorkspaceDto } from "../dto/workspace/update-workspace.dto";
import { User } from "../../users/entities/user.entity"; import { User } from "../../users/entities/user.entity";
import { WorkSpaceMessage } from "../../../common/enums/message.enum"; import { WorkSpaceMessage } from "../../../common/enums/message.enum";
import { PermissionEnum } from "../../users/enums/permission.enum";
@Injectable() @Injectable()
export class WorkspaceService { export class WorkspaceService {
@@ -68,7 +69,10 @@ export class WorkspaceService {
return workspace; return workspace;
} }
async findByUser(userId: string): Promise<TMWorkspace[]> { async findByUser(userId: string, permissions: PermissionEnum[]): Promise<TMWorkspace[]> {
if(permissions.includes(PermissionEnum.WORKSPACE)) {
return await this.workspaceRepository.find();
}
return await this.workspaceRepository.findByUser(userId); return await this.workspaceRepository.findByUser(userId);
} }
} }
+3 -1
View File
@@ -26,8 +26,10 @@ export enum PermissionEnum {
DMAIL = 'dmail', DMAIL = 'dmail',
RESELLER="reseller", RESELLER="reseller",
WORKSPACE="workspace", WORKSPACE="workspace",
VIEW_ALL_WORKSPACES="view_all_workspaces",
PROJECT="project", PROJECT="project",
TASK_PHASE="task_phase", VIEW_ALL_PROJECTS="view_all_projects",
TASK="task", TASK="task",
TASK_PHASE="task_phase",
REMARK="remark" REMARK="remark"
} }