Some checks failed
lotteryadmin CI / build (push) Has been cancelled
Refactored the admin account kind resolution to utilize a normalization function for better consistency across the application. Updated the currency fallback logic in the reports console to prioritize enabled and bettable currencies, enhancing the accuracy of currency display.
47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
import { normalizeAdminAccountKind } from "@/lib/admin-account-kind";
|
||
import {
|
||
adminHasAnyPermission,
|
||
adminHasAnyPermissionCode,
|
||
adminOperationalPermissionCodes,
|
||
} from "@/lib/admin-permissions";
|
||
import { useAdminProfile } from "@/stores/admin-session";
|
||
import type { AdminAccountKind, AdminProfile } from "@/types/api/admin-auth";
|
||
|
||
export function resolveAdminAccountKind(profile: AdminProfile | null | undefined): AdminAccountKind | null {
|
||
if (!profile) {
|
||
return null;
|
||
}
|
||
const normalized = normalizeAdminAccountKind(profile.account_kind);
|
||
if (normalized) {
|
||
return normalized;
|
||
}
|
||
if (profile.is_super_admin) {
|
||
return "super_admin";
|
||
}
|
||
if (profile.agent != null) {
|
||
return "agent_operator";
|
||
}
|
||
if (profile.site != null) {
|
||
return "site_admin";
|
||
}
|
||
return "platform_account";
|
||
}
|
||
|
||
/** 统一权限与会话身份读取:legacy `prd.*` 与 action code 并存,新代码优先用 `hasAnyCode`。 */
|
||
export function useAdminPermission() {
|
||
const profile = useAdminProfile();
|
||
const legacyPermissions = profile?.permissions ?? [];
|
||
const operationalPermissions = adminOperationalPermissionCodes(profile);
|
||
|
||
return {
|
||
profile,
|
||
legacyPermissions,
|
||
operationalPermissions,
|
||
accountKind: resolveAdminAccountKind(profile),
|
||
isSuperAdmin: profile?.is_super_admin === true,
|
||
/** @deprecated 逐步改用 {@link hasAnyCode} */
|
||
hasAnyLegacy: (required: readonly string[]) => adminHasAnyPermission(legacyPermissions, required),
|
||
hasAnyCode: (required: readonly string[]) => adminHasAnyPermissionCode(operationalPermissions, required),
|
||
};
|
||
}
|