Skip to content

Commit fac1dfe

Browse files
user serialization add username, role access for endpoint
1 parent d173454 commit fac1dfe

File tree

5 files changed

+47
-2
lines changed

5 files changed

+47
-2
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ack-nestjs-boilerplate",
3-
"version": "4.1.3",
3+
"version": "4.1.4",
44
"description": "Ack NestJs Boilerplate",
55
"repository": {
66
"type": "git",

src/modules/role/controllers/role.admin.controller.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ import {
5454
} from 'src/modules/role/decorators/role.admin.decorator';
5555
import { GetRole } from 'src/modules/role/decorators/role.decorator';
5656
import {
57+
RoleAccessForDoc,
5758
RoleActiveDoc,
5859
RoleCreateDoc,
5960
RoleDeleteDoc,
@@ -68,8 +69,10 @@ import { RoleUpdateNameDto } from 'src/modules/role/dtos/role.update-name.dto';
6869
import { RoleUpdatePermissionDto } from 'src/modules/role/dtos/role.update-permission.dto';
6970
import { IRoleEntity } from 'src/modules/role/interfaces/role.interface';
7071
import { RoleEntity } from 'src/modules/role/repository/entities/role.entity';
72+
import { RoleAccessForSerialization } from 'src/modules/role/serializations/role.access-for.serialization';
7173
import { RoleGetSerialization } from 'src/modules/role/serializations/role.get.serialization';
7274
import { RoleListSerialization } from 'src/modules/role/serializations/role.list.serialization';
75+
import { RoleEnumService } from 'src/modules/role/services/role.enum.service';
7376
import { RoleService } from 'src/modules/role/services/role.service';
7477

7578
@ApiTags('modules.admin.role')
@@ -81,7 +84,8 @@ export class RoleAdminController {
8184
constructor(
8285
private readonly paginationService: PaginationService,
8386
private readonly permissionService: PermissionService,
84-
private readonly roleService: RoleService
87+
private readonly roleService: RoleService,
88+
private readonly roleEnumService: RoleEnumService
8589
) {}
8690

8791
@RoleListDoc()
@@ -382,4 +386,16 @@ export class RoleAdminController {
382386

383387
return;
384388
}
389+
390+
@RoleAccessForDoc()
391+
@Response('role.accessFor', { serialization: RoleAccessForSerialization })
392+
@RequestParamGuard(RoleRequestDto)
393+
@AuthPermissionProtected(ENUM_AUTH_PERMISSIONS.ROLE_READ)
394+
@AuthJwtAdminAccessProtected()
395+
@Get('/access-for')
396+
async accessFor(): Promise<IResponse> {
397+
const accessFor: string[] = await this.roleEnumService.getAccessFor();
398+
399+
return { accessFor };
400+
}
385401
}

src/modules/role/docs/role.admin.doc.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
ROLE_DEFAULT_AVAILABLE_SEARCH,
1111
ROLE_DEFAULT_AVAILABLE_SORT,
1212
} from 'src/modules/role/constants/role.list.constant';
13+
import { RoleAccessForSerialization } from 'src/modules/role/serializations/role.access-for.serialization';
1314
import { RoleGetSerialization } from 'src/modules/role/serializations/role.get.serialization';
1415
import { RoleListSerialization } from 'src/modules/role/serializations/role.list.serialization';
1516

@@ -118,3 +119,15 @@ export function RoleInactiveDoc(): MethodDecorator {
118119
})
119120
);
120121
}
122+
123+
export function RoleAccessForDoc(): MethodDecorator {
124+
return applyDecorators(
125+
Doc<RoleAccessForSerialization>('role.accessFor', {
126+
auth: {
127+
jwtAccessToken: true,
128+
permissionToken: true,
129+
},
130+
response: { serialization: RoleAccessForSerialization },
131+
})
132+
);
133+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { ApiProperty } from '@nestjs/swagger';
2+
import { ENUM_AUTH_ACCESS_FOR } from 'src/common/auth/constants/auth.enum.constant';
3+
4+
export class RoleAccessForSerialization {
5+
@ApiProperty({
6+
description: 'Access for role',
7+
example: [ENUM_AUTH_ACCESS_FOR.USER, ENUM_AUTH_ACCESS_FOR.ADMIN],
8+
required: true,
9+
})
10+
groups: string[];
11+
}

src/modules/user/serializations/user.get.serialization.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ export class UserGetSerialization {
2020
})
2121
readonly email: string;
2222

23+
@ApiProperty({
24+
example: faker.internet.userName(),
25+
})
26+
readonly username: string;
27+
2328
@ApiProperty({
2429
example: faker.internet.email(),
2530
})

0 commit comments

Comments
 (0)