/** * Handle the event. * * @param Event $event * @return void */ public function handle($event) { if (isset($event->user)) { $event->user->forgetPermissions(); } else { if (isset($event->users)) { foreach ($event->users as $user) { $user->forgetPermissions(); } } else { RoleCache::delete(); } } }
/** * Return the user's entire permission object, * build it if nessecary. * * @param string $board_uri * @param string $route * @return array */ protected function getPermissionsWithRoutes($board_uri = null, $route = null) { if (!isset($this->permissions)) { $this->permissions = []; } if (!isset($this->permissions[$route][$board_uri])) { $cache = RoleCache::firstOrNew(['user_id' => !$this->isAnonymous() ? $this->user_id : null, 'board_uri' => is_null($board_uri) ? null : $board_uri]); if (!$cache->exists) { $value = $this->getPermissionMask($board_uri); $cache->value = json_encode($value); $cache->save(); } else { $value = json_decode($cache->value, true); } $this->permissions = array_merge_recursive($this->permissions, $value); if (!isset($this->permissions[$route][$board_uri])) { $this->permissions[$route][$board_uri] = []; } } if (!is_null($route)) { if (isset($this->permissions[$route][$board_uri])) { return $this->permissions[$route][$board_uri]; } return []; } return $this->permissions; }