Files
lotteryAdmin/src/modules/agents/agent-line-subnav-visibility.ts
kang 65eaeecf8c feat(agents, i18n): enhance agent management and settlement features with new translations and UI updates
Added new translations for agent management and settlement features in English, Nepali, and Chinese, improving multi-language support. Updated the agents console to reflect changes in funding modes and player details, enhancing user experience. Refactored the admin permission gate to include new logic for handling bound line agents, ensuring better permission management. Additionally, streamlined the UI for agent-related pages and improved navigation to the settlement center, consolidating related functionalities for better accessibility.
2026-06-04 18:01:05 +08:00

77 lines
2.1 KiB
TypeScript

import { adminHasAnyPermission } from "@/lib/admin-permissions";
import {
PRD_AGENT_LINE_PROVISION,
PRD_AGENTS_ACCESS_ANY,
PRD_SETTLEMENT_AGENT_ACCESS_ANY,
} from "@/lib/admin-prd";
import type { AdminAgentContext } from "@/types/api/admin-agent";
type AdminSessionLike = {
is_super_admin?: boolean;
permissions?: string[] | null;
agent?: AdminAgentContext | null;
};
/** 线路内绑定代理可查看账单;平台账号需 settlement.agent.* */
export function canAccessAgentSettlementBills(
session: AdminSessionLike | null | undefined,
): boolean {
if (session?.agent != null) {
return true;
}
return adminHasAnyPermission(session?.permissions ?? [], [...PRD_SETTLEMENT_AGENT_ACCESS_ANY]);
}
/** 仅平台侧可开通新线路;绑定代理永不可见 */
export function canAccessAgentLineProvision(
session: AdminSessionLike | null | undefined,
): boolean {
if (session?.agent != null) {
return false;
}
return adminHasAnyPermission(session?.permissions ?? [], [PRD_AGENT_LINE_PROVISION]);
}
export function isAgentLineSubnavTabVisible(
href: string,
session: AdminSessionLike | null | undefined,
): boolean {
const perms = session?.permissions ?? [];
const isSuper = session?.is_super_admin === true;
const boundAgent = session?.agent ?? null;
if (isSuper) {
return adminHasAnyPermission(perms, tabRequiredSlugs(href));
}
if (href === "/admin/agents/provision") {
return canAccessAgentLineProvision(session);
}
if (href === "/admin/settlement-center" || href === "/admin/agents/settlement-bills") {
return canAccessAgentSettlementBills(session);
}
if (href === "/admin/agents") {
return adminHasAnyPermission(perms, [...PRD_AGENTS_ACCESS_ANY]);
}
return false;
}
function tabRequiredSlugs(href: string): readonly string[] {
switch (href) {
case "/admin/agents":
return PRD_AGENTS_ACCESS_ANY;
case "/admin/agents/provision":
return [PRD_AGENT_LINE_PROVISION];
case "/admin/settlement-center":
case "/admin/agents/settlement-bills":
return PRD_SETTLEMENT_AGENT_ACCESS_ANY;
default:
return [];
}
}