set users permissions
This commit is contained in:
@@ -25,12 +25,17 @@ export enum PermissionEnum {
|
||||
DELETE_ORDER = 'delete_order',
|
||||
|
||||
|
||||
CREATE_USER = 'create_user',
|
||||
UPDATE_USER = 'update_user',
|
||||
DELETE_USER = 'delete_user',
|
||||
VIEW_USERS = 'view_users',
|
||||
|
||||
|
||||
// User & Admin Management
|
||||
MANAGE_ADMINS = 'manage_admins',
|
||||
// Role Management
|
||||
MANAGE_ROLES = 'manage_roles',
|
||||
|
||||
MANAGE_USERS = 'manage_users',
|
||||
|
||||
MANAGE_PAYMENTS = 'manage_payments',
|
||||
|
||||
@@ -71,7 +76,6 @@ export const PermissionTitles: Record<PermissionEnum, string> = {
|
||||
[PermissionEnum.ASSIGN_DESIGNER]: "اضافه کردن طراح به سفارش",
|
||||
|
||||
[PermissionEnum.MANAGE_ADMINS]: 'مدیریت مدیران',
|
||||
[PermissionEnum.MANAGE_USERS]: 'مدیریت کاربران',
|
||||
[PermissionEnum.MANAGE_ROLES]: 'مدیریت نقشها',
|
||||
[PermissionEnum.MANAGE_PAYMENTS]: 'مدیریت پرداختها',
|
||||
[PermissionEnum.MANAGE_SETTINGS]: 'مدیریت تنظیمات',
|
||||
@@ -93,5 +97,9 @@ export const PermissionTitles: Record<PermissionEnum, string> = {
|
||||
[PermissionEnum.MANAGE_ANNOUNCEMENTS]: "مدیریت اطلاعیهها",
|
||||
[PermissionEnum.MANAGE_TICKETS]: "مدیریت تیکتها",
|
||||
[PermissionEnum.NEW_REQUEST_NOTIFICATION]: "",
|
||||
[PermissionEnum.NEW_PAYMENT_NOTIFICATION]: ""
|
||||
[PermissionEnum.NEW_PAYMENT_NOTIFICATION]: "",
|
||||
[PermissionEnum.CREATE_USER]: "",
|
||||
[PermissionEnum.UPDATE_USER]: "",
|
||||
[PermissionEnum.DELETE_USER]: "",
|
||||
[PermissionEnum.VIEW_USERS]: ""
|
||||
};
|
||||
|
||||
@@ -9,6 +9,8 @@ import { } from 'src/common/decorators';
|
||||
import { FindUsersDto } from '../dto/find-user.dto';
|
||||
import { AdminAuthGuard } from 'src/modules/auth/guards/adminAuth.guard';
|
||||
import { CreditService } from '../providers/credit.service';
|
||||
import { PermissionEnum } from 'src/common/enums/permission.enum';
|
||||
import { Permissions } from 'src/common/decorators/permissions.decorator';
|
||||
|
||||
@ApiTags('User')
|
||||
@ApiBearerAuth()
|
||||
@@ -41,29 +43,33 @@ export class UsersController {
|
||||
// =================== Admin =====================
|
||||
|
||||
@Post('admin/users')
|
||||
@UseGuards(AuthGuard)
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@Permissions(PermissionEnum.CREATE_USER)
|
||||
@ApiOperation({ summary: 'Create user ' })
|
||||
createUser(@Body() dto: CreateUserAsAdminDto) {
|
||||
return this.userService.createUserAsAdmin(dto);
|
||||
}
|
||||
|
||||
@Post('admin/users/:id')
|
||||
@UseGuards(AuthGuard)
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@Permissions(PermissionEnum.VIEW_USERS)
|
||||
@ApiOperation({ summary: 'find user ' })
|
||||
findUser(@Param('id') id: string) {
|
||||
return this.userService.findById(id);
|
||||
}
|
||||
|
||||
@Patch('admin/users/:id')
|
||||
@UseGuards(AuthGuard)
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@Permissions(PermissionEnum.UPDATE_USER)
|
||||
@ApiOperation({ summary: 'Update user ' })
|
||||
upateUser(@Param('id') id: string, @Body() dto: UpdateUserAsAdminDto) {
|
||||
return this.userService.updateUser(id, dto);
|
||||
}
|
||||
|
||||
@Delete('admin/users/:id')
|
||||
@UseGuards(AuthGuard)
|
||||
@ApiOperation({ summary: 'find user ' })
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@Permissions(PermissionEnum.DELETE_USER)
|
||||
@ApiOperation({ summary: 'delete user ' })
|
||||
deleteUser(@Param('id') id: string) {
|
||||
return this.userService.softDeleteUser(id);
|
||||
}
|
||||
@@ -72,10 +78,19 @@ export class UsersController {
|
||||
@Get('admin/users')
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@ApiBearerAuth()
|
||||
// @Permissions(Permission.MANAGE_USERS)
|
||||
@ApiOperation({ summary: 'Get paginated list of restuarant users with filters' })
|
||||
@Permissions(PermissionEnum.VIEW_USERS)
|
||||
@ApiOperation({ summary: 'Get paginated list of عسثقس users with filters' })
|
||||
async findUsers(
|
||||
@Query() query: FindUsersDto) {
|
||||
return this.userService.findAll(query);
|
||||
}
|
||||
|
||||
@Get('admin/users/search')
|
||||
@UseGuards(AdminAuthGuard)
|
||||
@ApiBearerAuth()
|
||||
@ApiOperation({ summary: 'Search users by name or email' })
|
||||
async searchUsers(
|
||||
@Query() query: FindUsersDto) {
|
||||
return this.userService.findAll(query);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,10 +8,7 @@ const sortOrderOptions = ['asc', 'desc'] as const;
|
||||
type SortOrder = (typeof sortOrderOptions)[number];
|
||||
|
||||
export class FindUsersDto {
|
||||
/**
|
||||
* The page number to retrieve.
|
||||
* @default 1
|
||||
*/
|
||||
|
||||
@ApiPropertyOptional({
|
||||
description: 'شماره صفحه',
|
||||
type: Number,
|
||||
@@ -24,10 +21,7 @@ export class FindUsersDto {
|
||||
@Type(() => Number)
|
||||
page?: number = 1;
|
||||
|
||||
/**
|
||||
* The number of items per page.
|
||||
* @default 10
|
||||
*/
|
||||
|
||||
@ApiPropertyOptional({
|
||||
description: 'تعداد مورد در هر صفحه',
|
||||
type: Number,
|
||||
@@ -40,10 +34,7 @@ export class FindUsersDto {
|
||||
@Type(() => Number)
|
||||
limit?: number = 10;
|
||||
|
||||
/**
|
||||
* A general search term to filter by.
|
||||
* Searches firstName, lastName, phone, and nationalCode.
|
||||
*/
|
||||
|
||||
@ApiPropertyOptional({
|
||||
description: 'جستجو بر اساس نام، نامخانوادگی یا شماره تماس',
|
||||
type: String,
|
||||
@@ -52,10 +43,7 @@ export class FindUsersDto {
|
||||
@IsString()
|
||||
search?: string;
|
||||
|
||||
/**
|
||||
* The field to sort the results by.
|
||||
* @default "createdAt"
|
||||
*/
|
||||
|
||||
@ApiPropertyOptional({
|
||||
description: 'فیلد مرتبسازی',
|
||||
type: String,
|
||||
@@ -65,10 +53,7 @@ export class FindUsersDto {
|
||||
@IsString()
|
||||
orderBy?: keyof User = 'createdAt';
|
||||
|
||||
/**
|
||||
* The direction to sort the results.
|
||||
* @default "desc"
|
||||
*/
|
||||
|
||||
@ApiPropertyOptional({
|
||||
description: 'جهت مرتبسازی (asc یا desc)',
|
||||
enum: sortOrderOptions,
|
||||
|
||||
Reference in New Issue
Block a user