Skip to content

Commit 8a916e5

Browse files
committed
feat: new api call to check if username exists
1 parent fa1872a commit 8a916e5

2 files changed

Lines changed: 21 additions & 7 deletions

File tree

apps/api/src/users/users.controller.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,13 @@ import { UsersService } from './users.service';
1212
export class UsersController {
1313
constructor(private readonly usersService: UsersService) {}
1414

15+
@ApiOperation({ summary: 'Get User by Username' })
16+
@Get('/check-username/:username')
17+
@RouteAccess({ action: 'read', subject: 'User' })
18+
checkUsernameExists(@Param('username') username: string, @CurrentUser('ability') ability: AppAbility) {
19+
return this.usersService.checkUsernameExists(username, { ability });
20+
}
21+
1522
@ApiOperation({ summary: 'Create User' })
1623
@Post()
1724
@RouteAccess({ action: 'create', subject: 'User' })
@@ -40,13 +47,6 @@ export class UsersController {
4047
return this.usersService.findById(id, { ability });
4148
}
4249

43-
@ApiOperation({ summary: 'Get User by Username' })
44-
@Get('/check-username/:username')
45-
@RouteAccess({ action: 'read', subject: 'User' })
46-
findByUsername(@Param('username') username: string, @CurrentUser('ability') ability: AppAbility) {
47-
return this.usersService.findByUsername(username, { ability });
48-
}
49-
5050
@ApiOperation({ summary: 'Update User' })
5151
@Patch(':id')
5252
@RouteAccess({ action: 'update', subject: 'User' })

apps/api/src/users/users.service.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,20 @@ export class UsersService {
1717
private readonly groupsService: GroupsService
1818
) {}
1919

20+
async checkUsernameExists(username: string, { ability }: EntityOperationOptions = {}) {
21+
const user = await this.userModel.findFirst({
22+
include: { groups: true },
23+
omit: {
24+
hashedPassword: true
25+
},
26+
where: { AND: [accessibleQuery(ability, 'read', 'User'), { username }] }
27+
});
28+
if (!user) {
29+
return false;
30+
}
31+
return user;
32+
}
33+
2034
async count(
2135
filter: NonNullable<Parameters<Model<'User'>['count']>[0]>['where'] = {},
2236
{ ability }: EntityOperationOptions = {}

0 commit comments

Comments
 (0)