/** * 偽装ログイン処理 * * @param $id ユーザーIDとユーザーグループID * - 1 システム管理者 * - 2 サイト運営 */ public function login($id) { session_id('baser'); // 適当な文字列を与え強制的にコンソール上でセッションを有効にする $this->Favorite->setSession(new SessionComponent(new ComponentCollection())); $prefix = BcUtil::authSessionKey('admin'); $this->Favorite->_Session->write('Auth.' . $prefix . '.id', $id); $this->Favorite->_Session->write('Auth.' . $prefix . '.user_group_id', $id); }
/** * ログイン状態にする * * @return void */ protected function _login() { $User = ClassRegistry::init('User'); $user = $User->find('first', array('conditions' => array('User.id' => 1))); unset($user['User']['password']); $this->BcBaser->set('user', $user['User']); $user['User']['UserGroup'] = $user['UserGroup']; $sessionKey = BcUtil::authSessionKey('admin'); $_SESSION['Auth'][$sessionKey] = $user['User']; }
/** * ログインユーザーのデータを取得する * * @return array */ public static function loginUser($prefix = 'admin') { $Session = new CakeSession(); $sessionKey = BcUtil::authSessionKey($prefix); $user = $Session->read('Auth.' . $sessionKey); if (!$user) { if (!empty($_SESSION['Auth'][$sessionKey])) { $user = $_SESSION['Auth'][$sessionKey]; } } return $user; }
/** * アクセス権があるかチェックする * * @param array $check */ public function isPermitted($check) { if (!$this->_Session) { return true; } $url = $check[key($check)]; $prefix = BcUtil::authSessionKey('admin'); $userGroupId = $this->_Session->read('Auth.' . $prefix . '.user_group_id'); if ($userGroupId == Configure::read('BcApp.adminGroupId')) { return true; } $Permission = ClassRegistry::init('Permission'); return $Permission->check($url, $userGroupId); }
/** * ログインしているユーザー名を取得 */ public function testLoginUserName() { // ログインしていない場合 $result = BcUtil::loginUserName(); $this->assertEmpty($result, 'ログインユーザーのデータを正しく取得できません'); // ログインしている場合 session_id('baser'); // 適当な文字列を与え強制的にコンソール上でセッションを有効にする $Session = new CakeSession(); $Session->write('Auth.' . BcUtil::authSessionKey() . '.name', 'hoge'); $result = BcUtil::loginUserName(); $this->assertEquals('hoge', $result, 'ログインユーザーのデータを正しく取得できません'); }