File manager - Edit - /home/webapp69.cm.in.th/u69319090028/Shop/app/Models/AdminPermission.php
Back
<?php /** * AdminPermission Model * Maps to `admin_permissions` table * Source of Truth: `admin_permissions` table (role_id, module, action) */ require_once __DIR__ . '/../Core/Model.php'; class AdminPermission extends Model { protected string $table = 'admin_permissions'; /** * Default permission mapping sets per admin role (module.action) */ public static array $roleDefaults = [ 'admin' => [ 'users.view', 'users.create', 'users.edit', 'users.delete', 'user.view', 'user.suspend', 'stores.view', 'stores.approve', 'stores.reject', 'stores.suspend', 'seller.view', 'seller.approve', 'seller.suspend', 'products.view', 'products.approve', 'products.reject', 'products.delete', 'product.view', 'product.approve', 'product.hide', 'categories.view', 'categories.create', 'categories.edit', 'categories.delete', 'category.manage', 'orders.view', 'orders.edit', 'order.view', 'order.investigate', 'settlements.view', 'settlements.approve', 'commissions.view', 'commissions.edit', 'transactions.view', 'finance.view', 'finance.settle', 'settlement.manage', 'reports.view', 'reports.resolve', 'report.manage', 'settings.view', 'settings.edit', 'settings.manage', 'permissions.view', 'permissions.edit', 'admin.manage', 'activity_logs.view', 'announcement.manage', 'policy.manage', 'dashboard.view', 'payment.verify', 'payment.refund', 'payment.manage_accounts', ], 'operation_admin' => [ 'users.view', 'users.create', 'users.edit', 'user.view', 'user.suspend', 'stores.view', 'stores.approve', 'stores.reject', 'stores.suspend', 'seller.view', 'seller.approve', 'seller.suspend', 'products.view', 'products.approve', 'products.reject', 'products.delete', 'product.view', 'product.approve', 'product.hide', 'categories.view', 'categories.create', 'categories.edit', 'categories.delete', 'category.manage', 'orders.view', 'orders.edit', 'order.view', 'order.investigate', 'reports.view', 'reports.resolve', 'report.manage', 'dashboard.view', 'announcement.manage', 'policy.manage', ], 'finance_admin' => [ 'seller.view', 'stores.view', 'order.view', 'orders.view', 'finance.view', 'finance.settle', 'settlement.manage', 'commissions.view', 'commissions.edit', 'settlements.view', 'settlements.approve', 'settlements.complete', 'transactions.view', 'payment.verify', 'payment.refund', 'payment.manage_accounts', 'dashboard.view', ], 'support_admin' => [ 'user.view', 'users.view', 'seller.view', 'stores.view', 'product.view', 'product.hide', 'products.view', 'order.view', 'order.investigate', 'orders.view', 'reports.view', 'reports.resolve', 'report.manage', 'dashboard.view', ], ]; /** * Get all permissions assigned to roles from database */ public function getPermissionsForRoles(array $roleNames): array { if (empty($roleNames)) { return []; } $placeholders = implode(',', array_fill(0, count($roleNames), '?')); $sql = "SELECT r.name AS role_name, ap.module, ap.action FROM `admin_permissions` ap JOIN `roles` r ON ap.role_id = r.id WHERE r.name IN ($placeholders)"; $rows = $this->fetchAll($sql, array_values($roleNames)); $perms = []; foreach ($rows as $row) { $key = $row['module'] . '.' . $row['action']; $perms[$key] = true; // Also register mapped alias keys for compatibility $alias = $this->normalizePermissionKey($row['module'], $row['action']); if ($alias) { $perms[$alias] = true; } } return $perms; } /** * Normalize module.action to standard architecture key aliases */ private function normalizePermissionKey(string $module, string $action): ?string { $map = [ 'users.view' => 'user.view', 'users.edit' => 'user.suspend', 'stores.view' => 'seller.view', 'stores.approve' => 'seller.approve', 'stores.suspend' => 'seller.suspend', 'products.view' => 'product.view', 'products.approve' => 'product.approve', 'products.reject' => 'product.hide', 'categories.view' => 'category.manage', 'categories.create' => 'category.manage', 'categories.edit' => 'category.manage', 'orders.view' => 'order.view', 'orders.edit' => 'order.investigate', 'reports.view' => 'report.manage', 'reports.resolve' => 'report.manage', 'settings.view' => 'settings.manage', 'settings.edit' => 'settings.manage', 'permissions.view' => 'admin.manage', 'permissions.edit' => 'admin.manage', 'commissions.view' => 'finance.view', 'settlements.view' => 'finance.view', 'settlements.approve' => 'finance.settle', ]; return $map["{$module}.{$action}"] ?? null; } /** * Get per-user overrides if table exists, otherwise return empty array */ public function getForAdmin(int $adminUserId): array { return []; } /** * Set per-user permission override placeholder */ public function setPermission(int $adminUserId, string $key, bool $granted, int $grantedBy): void { // No-op or role-based mapping } /** * Remove permission override placeholder */ public function removePermission(int $adminUserId, string $key): void { // No-op } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.28 |
proxy
|
phpinfo
|
Settings