roles update
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { Injectable, OnModuleInit } from '@nestjs/common';
|
||||
import { PrismaService } from '../infra/prisma.service';
|
||||
import { DEFAULT_USER_ROLE_SLUG } from './rbac.constants';
|
||||
import { RbacService } from './rbac.service';
|
||||
|
||||
const PERMISSIONS = [
|
||||
@@ -14,28 +15,42 @@ const PERMISSIONS = [
|
||||
{ slug: 'users.manage.all', name: 'Полное управление пользователями', description: 'Расширенное управление всеми пользователями' },
|
||||
{ slug: 'users.read', name: 'Просмотр пользователей (устар.)', description: 'Устаревшее право, заменено на users.view' },
|
||||
{ slug: 'settings.manage', name: 'Управление настройками', description: 'Изменение глобальных SystemSetting' },
|
||||
{ slug: 'rbac.manage', name: 'Управление ролями', description: 'Назначение ролей и прав (только супер-админ)' },
|
||||
{ slug: 'rbac.manage', name: 'Управление ролями и правами', description: 'Назначение ролей, прав пользователям и редактирование ролей' },
|
||||
{ slug: 'documents.view_others', name: 'Просмотр документов пользователей', description: 'Просмотр документов и фото других пользователей' }
|
||||
] as const;
|
||||
|
||||
const ROLES = [
|
||||
{
|
||||
slug: DEFAULT_USER_ROLE_SLUG,
|
||||
name: 'Пользователь',
|
||||
description: 'Стандартная роль всех пользователей системы',
|
||||
permissions: [] as string[],
|
||||
isSystem: true,
|
||||
isDefault: true
|
||||
},
|
||||
{
|
||||
slug: 'admin',
|
||||
name: 'Администратор',
|
||||
description: 'Полный доступ к админ-панели без назначения ролей',
|
||||
permissions: ['admin.access', 'oauth.manage.all', 'oauth.view.all', 'users.manage.all', 'users.view.all', 'settings.manage']
|
||||
description: 'Полный доступ к админ-панели',
|
||||
permissions: ['admin.access', 'oauth.manage.all', 'oauth.view.all', 'users.manage.all', 'users.view.all', 'settings.manage', 'rbac.manage'],
|
||||
isSystem: false,
|
||||
isDefault: false
|
||||
},
|
||||
{
|
||||
slug: 'moderator',
|
||||
name: 'Модератор',
|
||||
description: 'Просмотр пользователей и базовый доступ к админке',
|
||||
permissions: ['admin.access', 'users.view', 'users.view.all']
|
||||
permissions: ['admin.access', 'users.view', 'users.view.all'],
|
||||
isSystem: false,
|
||||
isDefault: false
|
||||
},
|
||||
{
|
||||
slug: 'manager',
|
||||
name: 'Менеджер',
|
||||
description: 'Управление OAuth-приложениями',
|
||||
permissions: ['admin.access', 'oauth.manage', 'oauth.view']
|
||||
permissions: ['admin.access', 'oauth.manage', 'oauth.view'],
|
||||
isSystem: false,
|
||||
isDefault: false
|
||||
}
|
||||
] as const;
|
||||
|
||||
@@ -76,13 +91,20 @@ export class AdminSeedService implements OnModuleInit {
|
||||
data: {
|
||||
slug: role.slug,
|
||||
name: role.name,
|
||||
description: role.description
|
||||
description: role.description,
|
||||
isSystem: role.isSystem,
|
||||
isDefault: role.isDefault
|
||||
}
|
||||
}));
|
||||
|
||||
await this.prisma.role.update({
|
||||
where: { id: roleRecord.id },
|
||||
data: { name: role.name, description: role.description }
|
||||
data: {
|
||||
name: role.name,
|
||||
description: role.description,
|
||||
isSystem: role.isSystem,
|
||||
isDefault: role.isDefault
|
||||
}
|
||||
});
|
||||
|
||||
for (const slug of role.permissions) {
|
||||
@@ -95,5 +117,10 @@ export class AdminSeedService implements OnModuleInit {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
const users = await this.prisma.user.findMany({ where: { deletedAt: null }, select: { id: true } });
|
||||
for (const user of users) {
|
||||
await this.rbac.ensureDefaultUserRole(user.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user