Ejemplo n.º 1
1
 public function afterCasAuthenticate(Event $event)
 {
     $user = $event->data();
     if (empty($user['username'])) {
         return null;
     }
     if (!array_key_exists('id', $user)) {
         $user['id'] = $user['username'];
     }
     $localUser = TableRegistry::get('Users')->findOrCreateByNetid($user['username'], true);
     //force PersonSummary update check
     if (empty($localUser)) {
         return null;
     }
     $user['id'] = $localUser->id;
     if (empty($user['name']) && !empty($localUser->name)) {
         $user['name'] = $localUser->name;
     }
     if (empty($user['byuId']) && !empty($localUser->byu_id)) {
         $user['byuId'] = $localUser->byu_id;
     }
     $user['officers'] = TableRegistry::get('Officers')->listUserActive($localUser->id);
     $user['advisors'] = TableRegistry::get('Advisors')->listUserApproved($localUser->id);
     $user['members'] = TableRegistry::get('Members')->listActiveClubs($localUser->id);
     $user['roles'] = TableRegistry::get('Roles')->listByUser($localUser->id);
     $user['roles']['dean'] = TableRegistry::get('Departments')->listByDean($user['username']);
     $homePrefixes = ['admin', 'dean', 'risk', 'review'];
     //roles that have a default home, in descending preference order
     foreach ($homePrefixes as $prefix) {
         if (!empty($user['roles'][$prefix])) {
             $user['default_home'] = ['prefix' => $prefix, 'controller' => 'clubs', 'action' => 'index'];
         }
     }
     return $user;
 }
Ejemplo n.º 2
0
 /**
  * Calls a listener.
  *
  * Direct callback invocation is up to 30% faster than using call_user_func_array.
  * Optimize the common cases to provide improved performance.
  *
  * @param callable $listener The listener to trigger.
  * @param \Cake\Event\Event $event Event instance.
  * @return mixed The result of the $listener function.
  */
 protected function _callListener(callable $listener, Event $event)
 {
     $data = $event->data();
     $length = count($data);
     if ($length) {
         $data = array_values($data);
     }
     switch ($length) {
         case 0:
             return $listener($event);
         case 1:
             return $listener($event, $data[0]);
         case 2:
             return $listener($event, $data[0], $data[1]);
         case 3:
             return $listener($event, $data[0], $data[1], $data[2]);
         default:
             array_unshift($data, $event);
             return call_user_func_array($listener, $data);
     }
 }