mirror of
https://github.com/Kevsl/crypto-exchange-api.git
synced 2026-02-08 19:16:13 +01:00
testing all features
This commit is contained in:
1
src/role/dto/index.ts
Normal file
1
src/role/dto/index.ts
Normal file
@@ -0,0 +1 @@
|
||||
export * from './role.dto';
|
||||
11
src/role/dto/role.dto.ts
Normal file
11
src/role/dto/role.dto.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
import { ApiProperty } from '@nestjs/swagger';
|
||||
import { IsString } from 'class-validator';
|
||||
export class RoleDto {
|
||||
@ApiProperty({
|
||||
type: String,
|
||||
description: 'Role Name',
|
||||
example: 'user',
|
||||
})
|
||||
@IsString()
|
||||
name: string;
|
||||
}
|
||||
63
src/role/role.controller.ts
Normal file
63
src/role/role.controller.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
Delete,
|
||||
Get,
|
||||
HttpCode,
|
||||
HttpStatus,
|
||||
Param,
|
||||
Patch,
|
||||
Post,
|
||||
UseGuards,
|
||||
// UseGuards,
|
||||
} from '@nestjs/common';
|
||||
import { GetUser } from '../auth/decorator';
|
||||
// import { JwtGuard } from '../auth/guard';
|
||||
import { RoleDto } from './dto';
|
||||
import { RoleService } from './role.service';
|
||||
import { ApiTags } from '@nestjs/swagger';
|
||||
import { User } from '@prisma/client';
|
||||
import { JwtGuard } from 'src/auth/guard';
|
||||
|
||||
@UseGuards(JwtGuard)
|
||||
@ApiTags('role')
|
||||
@Controller('role')
|
||||
export class RoleController {
|
||||
constructor(private roleService: RoleService) {}
|
||||
|
||||
@Get('/all')
|
||||
getAllRoles(@GetUser() user: User) {
|
||||
return this.roleService.getRolesAdmin(user.id);
|
||||
}
|
||||
// @Get('/cm/all')
|
||||
// getRolesCm(@GetUser() user: User) {
|
||||
// return this.roleService.getRolesCm(user)
|
||||
// }
|
||||
|
||||
@HttpCode(HttpStatus.CREATED)
|
||||
@Post('/create')
|
||||
createRole(
|
||||
// @GetUser() user: User,
|
||||
@Body()
|
||||
dto: RoleDto,
|
||||
@GetUser() user: User,
|
||||
) {
|
||||
return this.roleService.createRole(user.id, dto);
|
||||
}
|
||||
|
||||
@HttpCode(HttpStatus.OK)
|
||||
@Patch('/update/:id')
|
||||
editRoleById(
|
||||
@Param('id') roleId: string,
|
||||
@Body() dto: RoleDto,
|
||||
@GetUser() user: User,
|
||||
) {
|
||||
return this.roleService.editRoleById(user.id, roleId, dto);
|
||||
}
|
||||
|
||||
@HttpCode(HttpStatus.NO_CONTENT)
|
||||
@Delete('/delete/:id')
|
||||
deleteRoleById(@Param('id') roleId: string, @GetUser() user: User) {
|
||||
return this.roleService.deleteRoleById(user.id, roleId);
|
||||
}
|
||||
}
|
||||
8
src/role/role.module.ts
Normal file
8
src/role/role.module.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { RoleController } from './role.controller';
|
||||
import { RoleService } from './role.service';
|
||||
@Module({
|
||||
providers: [RoleService],
|
||||
controllers: [RoleController],
|
||||
})
|
||||
export class RoleModule {}
|
||||
72
src/role/role.service.ts
Normal file
72
src/role/role.service.ts
Normal file
@@ -0,0 +1,72 @@
|
||||
import { ForbiddenException, Injectable } from '@nestjs/common';
|
||||
import { PrismaService } from '../prisma/prisma.service';
|
||||
import { RoleDto } from './dto';
|
||||
import { checkuserIsAdmin } from 'src/utils/checkUser';
|
||||
// import { checkRoleLevel, checkUserIsStaff } from 'src/utils/checkUser';
|
||||
@Injectable()
|
||||
export class RoleService {
|
||||
constructor(private prisma: PrismaService) {}
|
||||
|
||||
async getRolesAdmin(userId: string) {
|
||||
await checkuserIsAdmin(userId);
|
||||
return this.prisma.role.findMany({
|
||||
orderBy: {
|
||||
name: 'asc',
|
||||
},
|
||||
select: {
|
||||
id: true,
|
||||
name: true,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
async createRole(userId: string, dto: RoleDto) {
|
||||
await checkuserIsAdmin(userId);
|
||||
const role = await this.prisma.role.create({
|
||||
data: {
|
||||
name: dto.name,
|
||||
},
|
||||
});
|
||||
|
||||
return role;
|
||||
}
|
||||
async editRoleById(userId: string, roleId: string, dto: RoleDto) {
|
||||
await checkuserIsAdmin(userId);
|
||||
|
||||
const role = await this.prisma.role.findUnique({
|
||||
where: {
|
||||
id: roleId,
|
||||
},
|
||||
});
|
||||
|
||||
if (!role || role.id !== roleId)
|
||||
throw new ForbiddenException('Access to resources denied');
|
||||
|
||||
return this.prisma.role.update({
|
||||
where: {
|
||||
id: roleId,
|
||||
},
|
||||
data: {
|
||||
...dto,
|
||||
},
|
||||
});
|
||||
}
|
||||
async deleteRoleById(userId: string, id: string) {
|
||||
await checkuserIsAdmin(userId);
|
||||
|
||||
const role = await this.prisma.role.findUnique({
|
||||
where: {
|
||||
id: id,
|
||||
},
|
||||
});
|
||||
|
||||
if (!role || role.id !== id)
|
||||
throw new ForbiddenException('Access to resources denied');
|
||||
|
||||
await this.prisma.role.delete({
|
||||
where: {
|
||||
id: id,
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user