> */ private array $rolePermissions = [ 'admin' => [ 'users.view', 'users.create', 'users.edit', 'users.delete', 'settings.manage', ], 'manager' => [ 'users.view', 'reports.view', 'projects.manage', ], 'user' => [ 'dashboard.view', 'profile.view', 'profile.edit', ], ]; /** * @param list $roles * @return list */ public function permissionsForRoles(array $roles): array { $permissions = []; foreach ($roles as $role) { $permissions = array_merge($permissions, $this->rolePermissions[$role] ?? []); } return array_values(array_unique($permissions)); } public function hasPermission(array $roles, string $permission): bool { return in_array($permission, $this->permissionsForRoles($roles), true); } }