Skip to content

Commit 86ea0f8

Browse files
author
Ángel De La Cruz
committed
Cals Roles With Persisted Permission
1 parent 0d7c63d commit 86ea0f8

File tree

5 files changed

+39
-7
lines changed

5 files changed

+39
-7
lines changed

src/auth/auth.service.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,6 @@ export class AuthService extends AuthJwt {
4949

5050
const user = await this.findUserEmail(dto.email);
5151

52-
console.log(user)
53-
5452
await this.compareUserPassword(dto.password, user.password);
5553

5654
const tokens = await this.getToken(user.id, user.email, user.role_id);

src/casls/guards/abilities.guard.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export const actions = [
3535
'delete'
3636
] as const;
3737

38-
export const subjects = ['User', 'all'] as const;
38+
export const subjects = ['Role', 'User', 'all'] as const;
3939

4040
export type Abilities = [
4141
(typeof actions)[number],
@@ -68,7 +68,7 @@ export class AbilitiesGuard implements CanActivate {
6868
}
6969
});
7070

71-
71+
7272
const parsedUserPermissions = this.parseCondition(
7373
userPermissions,
7474
currentUser

src/permissions/permissions.controller.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,50 @@
1-
import { Controller, Get, Post, Body, Param, Delete, Put } from '@nestjs/common';
1+
import { Controller, Get, Post, Body, Param, Delete, Put, UseGuards } from '@nestjs/common';
22
import { PermissionsService } from './permissions.service';
33
import { CreatePermissionDto } from './dto/create-permission.dto';
44
import { UpdatePermissionDto } from './dto/update-permission.dto';
5+
import { checkAbilites } from '../casls/decorators/abilities.decorator';
6+
import { AbilitiesGuard } from '../casls/guards/abilities.guard';
57

68
@Controller('permissions')
79
export class PermissionsController {
810
constructor(private readonly permissionsService: PermissionsService) { }
911

12+
13+
@checkAbilites({ action: 'create', subject: 'Permission' })
14+
@UseGuards(AbilitiesGuard)
1015
@Post()
1116
create(@Body() createPermissionDto: CreatePermissionDto) {
1217
return this.permissionsService.create(createPermissionDto);
1318
}
1419

20+
21+
22+
@checkAbilites({ action: 'read', subject: 'Permission' })
23+
@UseGuards(AbilitiesGuard)
1524
@Get()
1625
findAll() {
1726
return this.permissionsService.findAll();
1827
}
1928

29+
30+
@checkAbilites({ action: 'read', subject: 'Permission' })
31+
@UseGuards(AbilitiesGuard)
2032
@Get(':id')
2133
findOne(@Param('id') id: string) {
2234
return this.permissionsService.findOne(+id);
2335
}
2436

37+
38+
@checkAbilites({ action: 'update', subject: 'Permission' })
39+
@UseGuards(AbilitiesGuard)
2540
@Put(':id')
2641
update(@Param('id') id: string, @Body() updatePermissionDto: UpdatePermissionDto) {
2742
return this.permissionsService.update(+id, updatePermissionDto);
2843
}
2944

45+
46+
@checkAbilites({ action: 'delete', subject: 'Permission' })
47+
@UseGuards(AbilitiesGuard)
3048
@Delete(':id')
3149
remove(@Param('id') id: string) {
3250
return this.permissionsService.remove(+id);

src/roles/roles.controller.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,47 @@
1-
import { Controller, Get, Post, Body, Patch, Param, Delete, Put } from '@nestjs/common';
1+
import { Controller, Get, Post, Body, Patch, Param, Delete, Put, UseGuards } from '@nestjs/common';
22
import { RolesService } from './roles.service';
33
import { CreateRoleDto } from './dto/create-role.dto';
44
import { UpdateRoleDto } from './dto/update-role.dto';
5+
import { checkAbilites } from '../casls/decorators/abilities.decorator';
6+
import { AbilitiesGuard } from '../casls/guards/abilities.guard';
57

68
@Controller('roles')
79
export class RolesController {
810
constructor(private readonly rolesService: RolesService) { }
911

12+
@checkAbilites({ action: 'update', subject: 'Role' })
13+
@UseGuards(AbilitiesGuard)
1014
@Post()
1115
create(@Body() createRoleDto: CreateRoleDto) {
1216
return this.rolesService.create(createRoleDto);
1317
}
1418

19+
20+
@checkAbilites({ action: 'read', subject: 'Role' })
21+
@UseGuards(AbilitiesGuard)
1522
@Get()
1623
findAll() {
1724
return this.rolesService.findAll();
1825
}
1926

27+
@checkAbilites({ action: 'read', subject: 'Role' })
28+
@UseGuards(AbilitiesGuard)
2029
@Get(':id')
2130
findOne(@Param('id') id: string) {
2231
return this.rolesService.findOne(+id);
2332
}
2433

34+
35+
@checkAbilites({ action: 'update', subject: 'Role' })
36+
@UseGuards(AbilitiesGuard)
2537
@Put(':id')
2638
update(@Param('id') id: string, @Body() updateRoleDto: UpdateRoleDto) {
2739
return this.rolesService.update(+id, updateRoleDto);
2840
}
2941

42+
43+
@checkAbilites({ action: 'delete', subject: 'Role' })
44+
@UseGuards(AbilitiesGuard)
3045
@Delete(':id')
3146
remove(@Param('id') id: string) {
3247
return this.rolesService.remove(+id);

src/users/users.service.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { HttpException, HttpStatus, Injectable } from '@nestjs/common';
22
import { CreateUserDto } from './dto/create-user.dto';
3+
import { UpdateUserDto } from './dto/update-user.dto';
34
import { PrismaService } from '../prisma/prisma.service';
45
import { Prisma, User } from '@prisma/client';
56
import * as bcrypt from 'bcrypt';
@@ -73,7 +74,7 @@ export class UsersService {
7374
// Actualizar un usuario, su rol o su perfil
7475
async updateUser(
7576
id: number,
76-
data: Prisma.UserUpdateInput,
77+
data: UpdateUserDto,
7778
): Promise<User> {
7879
try {
7980
return await this.prismaService.user.update({

0 commit comments

Comments
 (0)