update oauth

This commit is contained in:
lendry
2026-06-25 14:23:55 +03:00
parent c3e06e03cf
commit 1796008a28
21 changed files with 340 additions and 64 deletions

View File

@@ -0,0 +1,41 @@
import { PublicUser } from '@/lib/api';
export const ROLE_LABELS: Record<string, string> = {
admin: 'Администратор',
moderator: 'Модератор',
manager: 'Менеджер',
'super-admin': 'Супер-админ'
};
export function getPrimaryRoleLabel(user: PublicUser): string {
if (user.isSuperAdmin) return ROLE_LABELS['super-admin'];
const slugs = user.roles ?? [];
if (slugs.includes('admin')) return ROLE_LABELS.admin;
for (const slug of slugs) {
if (ROLE_LABELS[slug]) return ROLE_LABELS[slug];
}
return slugs[0] ?? 'Админ';
}
export function getAdminLandingPath(user: PublicUser): string {
if (user.canViewUsers || user.canManageUsers) return '/admin/users';
if (user.canViewOAuth || user.canManageOAuth) return '/admin/oauth';
if (user.canManageSettings) return '/admin/settings';
if (user.canManageRoles) return '/admin/rbac';
return '/admin/oauth';
}
export function canAccessAdminSection(user: PublicUser, section: 'users' | 'oauth' | 'settings' | 'rbac') {
switch (section) {
case 'users':
return Boolean(user.canViewUsers || user.canManageUsers);
case 'oauth':
return Boolean(user.canViewOAuth || user.canManageOAuth);
case 'settings':
return Boolean(user.canManageSettings);
case 'rbac':
return Boolean(user.canManageRoles);
default:
return false;
}
}

View File

@@ -70,8 +70,11 @@ export interface PublicUser {
permissions?: string[];
canAccessAdmin?: boolean;
canManageRoles?: boolean;
canViewOAuth?: boolean;
canManageOAuth?: boolean;
canManageAllOAuth?: boolean;
canManageUsers?: boolean;
canManageAllUsers?: boolean;
canManageSettings?: boolean;
canViewUsers?: boolean;
canViewUserDocuments?: boolean;
@@ -121,6 +124,9 @@ export interface OAuthClient {
isActive: boolean;
type: string;
clientSecret?: string;
createdById?: string | null;
createdByDisplayName?: string | null;
canManage?: boolean;
}
export interface AuthTokens {