feat: secure admin user management
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import { UserDirectoryReferenceDto } from './user-directory-response.dto';
|
||||
|
||||
export class AdminPlayerTeamDto {
|
||||
id: number;
|
||||
name: string;
|
||||
alias: string;
|
||||
}
|
||||
|
||||
export class AdminPlayerCurrentUserDto {
|
||||
id: number;
|
||||
firstName: string | null;
|
||||
lastName: string | null;
|
||||
status: UserDirectoryReferenceDto | null;
|
||||
}
|
||||
|
||||
export class AdminPlayerSummaryDto {
|
||||
id: number;
|
||||
firstName: string;
|
||||
lastName: string;
|
||||
active: boolean;
|
||||
team: AdminPlayerTeamDto;
|
||||
currentUser: AdminPlayerCurrentUserDto | null;
|
||||
}
|
||||
|
||||
export class AdminPlayerPageDto {
|
||||
data: AdminPlayerSummaryDto[];
|
||||
page: number;
|
||||
limit: number;
|
||||
total: number;
|
||||
hasNextPage: boolean;
|
||||
}
|
||||
67
myteamwallet_backend/src/users/dto/admin-user.dto.ts
Normal file
67
myteamwallet_backend/src/users/dto/admin-user.dto.ts
Normal file
@@ -0,0 +1,67 @@
|
||||
import { Type } from 'class-transformer';
|
||||
import {
|
||||
IsIn,
|
||||
IsInt,
|
||||
IsOptional,
|
||||
IsString,
|
||||
Max,
|
||||
MaxLength,
|
||||
Min,
|
||||
} from 'class-validator';
|
||||
import { RoleEnum } from '../../roles/roles.enum';
|
||||
import { StatusEnum } from '../../statuses/statuses.enum';
|
||||
|
||||
export class AdminUserProfileDto {
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
@MaxLength(255)
|
||||
firstName?: string | null;
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
@MaxLength(255)
|
||||
lastName?: string | null;
|
||||
}
|
||||
|
||||
export class AdminUserRoleDto {
|
||||
@Type(() => Number)
|
||||
@IsIn([RoleEnum.admin, RoleEnum.user])
|
||||
role: RoleEnum;
|
||||
}
|
||||
|
||||
export class AdminUserStatusDto {
|
||||
@Type(() => Number)
|
||||
@IsIn([StatusEnum.active, StatusEnum.inactive])
|
||||
status: StatusEnum;
|
||||
}
|
||||
|
||||
export type AdminPlayerAssignmentFilter = 'all' | 'assigned' | 'unassigned';
|
||||
|
||||
export class AdminPlayerQueryDto {
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
search?: string;
|
||||
|
||||
@IsOptional()
|
||||
@Type(() => Number)
|
||||
@IsInt()
|
||||
@Min(1)
|
||||
teamId?: number;
|
||||
|
||||
@IsOptional()
|
||||
@IsIn(['all', 'assigned', 'unassigned'])
|
||||
assignment: AdminPlayerAssignmentFilter = 'all';
|
||||
|
||||
@IsOptional()
|
||||
@Type(() => Number)
|
||||
@IsInt()
|
||||
@Min(1)
|
||||
page = 1;
|
||||
|
||||
@IsOptional()
|
||||
@Type(() => Number)
|
||||
@IsInt()
|
||||
@Min(1)
|
||||
@Max(50)
|
||||
limit = 20;
|
||||
}
|
||||
Reference in New Issue
Block a user