/**
  * 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();
         }
     }
 }
Пример #2
0
 /**
  * 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;
 }