refactor: changed the get workspaces by user logic
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user