From d880e1a1c5b8c1fd0ec5cc21f82207f336e571c8 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Thu, 3 Jul 2025 14:53:33 +0700 Subject: [PATCH] refactor: move variable out of function --- src/stores/utils/index.ts | 123 +++++++++++++++++++------------------- 1 file changed, 62 insertions(+), 61 deletions(-) diff --git a/src/stores/utils/index.ts b/src/stores/utils/index.ts index 4b63c72b..76efc0f7 100644 --- a/src/stores/utils/index.ts +++ b/src/stores/utils/index.ts @@ -232,71 +232,72 @@ export function isRoleInclude(role2check: string[]): boolean { return isIncluded; } +const allRoles = [ + 'head_of_admin', + 'admin', + 'executive', + 'accountant', + 'branch_admin', + 'branch_manager', + 'branch_accountant', + 'head_of_sale', + 'sale', + 'data_entry', + 'document_checker', + 'messenger', + 'corporate_customer', + 'agency', +]; + +const permissions = { + branch: { + edit: allRoles.slice(0, 7), + view: allRoles.slice(0, 7), + }, + personnel: { + edit: allRoles.slice(0, 6).filter((r) => r !== 'accountant'), + view: allRoles.slice(0, 6).filter((r) => r !== 'accountant'), + }, + product: { + edit: allRoles.slice(0, 7), + view: allRoles, + }, + workflow: { + edit: allRoles.slice(0, 6), + view: allRoles.filter((r) => r !== 'branch_accountant'), + }, + customer: { + edit: allRoles.slice(0, 6), + view: allRoles.slice(0, 8), + }, + agencies: { + edit: allRoles.slice(0, 7), + view: allRoles, + }, + related: { + // ใช้กับหลายเมนู + edit: allRoles.slice(0, 6), + view: allRoles, + }, + account: { + edit: allRoles.slice(0, 6), + view: allRoles.slice(0, 7), + }, + uploadSlip: { + edit: allRoles.slice(0, 6), + view: allRoles.filter((r) => r !== 'head_of_sale' && r !== 'sale'), + }, + dashBoard: { + edit: allRoles.slice(0, 6).filter((r) => r !== 'admin'), + view: allRoles.filter((r) => r !== 'admin'), + }, +}; + export function canAccess( - menu: string, + menu: keyof typeof permissions, action: 'edit' | 'view' = 'view', ): boolean { // uma_authorization = all roles - const allRoles = [ - 'head_of_admin', - 'admin', - 'executive', - 'accountant', - 'branch_admin', - 'branch_manager', - 'branch_accountant', - 'head_of_sale', - 'sale', - 'data_entry', - 'document_checker', - 'messenger', - 'corporate_customer', - 'agency', - ]; - - const permissions = { - branch: { - edit: allRoles.slice(0, 7), - view: allRoles.slice(0, 7), - }, - personnel: { - edit: allRoles.slice(0, 6).filter((r) => r !== 'accountant'), - view: allRoles.slice(0, 6).filter((r) => r !== 'accountant'), - }, - product: { - edit: allRoles.slice(0, 7), - view: allRoles, - }, - workflow: { - edit: allRoles.slice(0, 6), - view: allRoles.filter((r) => r !== 'branch_accountant'), - }, - customer: { - edit: allRoles.slice(0, 6), - view: allRoles.slice(0, 8), - }, - agencies: { - edit: allRoles.slice(0, 7), - view: allRoles, - }, - related: { - // ใช้กับหลายเมนู - edit: allRoles.slice(0, 6), - view: allRoles, - }, - account: { - edit: allRoles.slice(0, 6), - view: allRoles.slice(0, 7), - }, - uploadSlip: { - edit: allRoles.slice(0, 6), - view: allRoles.filter((r) => r !== 'head_of_sale' && r !== 'sale'), - }, - dashBoard: { - edit: allRoles.slice(0, 6).filter((r) => r !== 'admin'), - view: allRoles.filter((r) => r !== 'admin'), - }, - }; const roles = getRole() ?? []; if (roles.includes('system')) return true;