/** * Return the user's entire permission object, * build it if nessecary. * * @return array */ protected function getPermissions() { if (!isset($this->permissions)) { $rememberTags = ["user.{$this->user_id}", "permissions"]; $rememberTimer = 3600; $rememberKey = "user.{$this->user_id}.permissions"; $rememberClosure = function () { $permissions = []; // Fetch our permission mask. if ($this->isAnonymous()) { $permissions["anonymous"] = Role::getRoleMaskByName("anonymous"); if (!$this->isAccountable()) { $permissions["unaccountable"] = Role::getRoleMaskByName("unaccountable"); } } else { $userRoles = []; foreach ($this->roles as $role) { $userRoles[] = $role->role_id; } if (!count($userRoles)) { $permissions = Role::getRoleMaskByName("anonymous"); } else { $permissions = Role::getRoleMaskByID($userRoles); } } return $permissions; }; switch (env('CACHE_DRIVER')) { case "file": case "database": $this->permissions = Cache::remember($rememberKey, $rememberTimer, $rememberClosure); break; default: $this->permissions = Cache::tags($rememberTags)->remember($rememberKey, $rememberTimer, $rememberClosure); break; } } return $this->permissions; }
/** * Return the user's entire permission object, * build it if nessecary. * * @return array */ protected function getPermissions() { if (!isset($this->permissions)) { $this->permissions = Cache::remember("user.{$this->user_id}.permissions", 3600, function () { $permissions = []; // Fetch our permission mask. if ($this->isAnonymous()) { $permissions["anonymous"] = Role::getRoleMaskByName("anonymous"); if (!$this->isAccountable()) { $permissions["unaccountable"] = Role::getRoleMaskByName("unaccountable"); } } else { $userRoles = []; foreach ($this->roles as $role) { $userRoles[] = $role->role_id; } if (!count($userRoles)) { $permissions = Role::getRoleMaskByName("anonymous"); } else { $permissions = Role::getRoleMaskByID($userRoles); } } return $permissions; }); } return $this->permissions; }