예제 #1
0
파일: auth.php 프로젝트: halkeye/ecmproject
 /**
  * Complete the login for a account by incrementing the logins and setting
  * session data: account_id, accountname, groups
  *
  * @param   object   account model object
  * @return  void
  */
 public function complete_login(Model_Account $account)
 {
     // Update the number of logins
     $account->incrNumLogins();
     $this->groups = array();
     $this->permissions = array();
     $groups = array();
     array_push($groups, 1);
     // registered
     foreach ($account->Usergroups->find_all() as $group) {
         array_push($groups, intval($group->id));
     }
     array_unique($groups);
     $query = DB::select(array('g.name', 'groupName'), array('p.pkey', 'pkey'))->from(array('usergroups', 'g'))->join(array('usergroups_permissions', 'up'))->on('g.id', '=', 'up.usergroup_id')->join(array('permissions', 'p'))->on('p.id', '=', 'up.permission_id')->where('g.id', 'IN', $groups);
     foreach ($query->execute() as $result) {
         $this->groups[$result['groupName']] = 1;
         $this->permissions[$result['pkey']] = 1;
     }
     // extra safety to prevent session fixation - http://en.wikipedia.org/wiki/Session_fixation
     $this->session->regenerate();
     $this->account = serialize($account);
     $this->storeAccount($account);
 }