Example #1
0
 /**
  * Session情報を元に認証チェックする
  *
  * @return 認証結果配列 result:認証結果, adminUserInfo:ログインAdminユーザー情報
  */
 public function checkAuth()
 {
     global $request;
     // レスポンス格納用
     $result = array('result' => false, 'admin_user_info' => array(), 'errors' => array());
     // 必須パラメータ確認
     if (!isset($_SESSION[SESSION_LOGGED_IN]) || !isset($_SESSION[SESSION_USER]) || !isset($_SESSION[SESSION_USER_ID]) || !isset($_SESSION[SESSION_EXPIRED])) {
         $this->sessionUnset();
         $result['errors'][] = 'ログイン情報が不正です。ログインからやり直して下さい。';
         return $result;
     }
     // セッションからログイン情報を取得
     $loggedIn = $_SESSION[SESSION_LOGGED_IN];
     $user = $_SESSION[SESSION_USER];
     $userId = $_SESSION[SESSION_USER_ID];
     $userCd = $_SESSION[SESSION_USER_CD];
     $expired = $_SESSION[SESSION_EXPIRED];
     $group_cd = $_SESSION[SESSION_GROUP_CD];
     // ログイン情報をチェックする
     if (!isset($loggedIn) || $loggedIn != true || !isset($userId)) {
         $this->sessionUnset();
         $result['errors'][] = 'ログイン情報が不正です。ログインからやり直して下さい。';
         return $result;
     }
     // ログイン時に設定した期限を過ぎていないか確認
     if ($expired < time()) {
         $this->sessionUnset();
         $result['errors'][] = 'タイムアウトしました。ログインからやり直して下さい。';
         return $result;
     }
     // 表示対象ページのアクセス権限を確認する
     if (!Page::isAccessEnabled()) {
         $result['errors'][] = 'このページへアクセスするための権限がありません。';
         return $result;
     }
     // Adminユーザー情報を取得
     $adminUserInfo = $this->getAdminUserInfo($userCd);
     //Adminユーザー存在チェック
     if ($adminUserInfo == -1 || strlen($adminUserInfo['staff_cd']) < 1) {
         $this->sessionUnset();
         $result['errors'][] = 'アカウントが存在しません。削除された可能性があるため管理者にお問い合わせ下さい。';
         return $result;
     }
     //退職者チェック
     if ($adminUserInfo['retire_flg'] == 1) {
         $result['errors'][] = '無効なアカウントです。';
         return $result;
     }
     //権限チェック
     if (count($adminUserInfo['group_cd']) <= 0) {
         $result['errors'][] = 'アカウントが存在しません。削除された可能性があるため管理者にお問い合わせ下さい。';
         return $result;
     }
     //ID・PW確認 -> リマインダ遷移
     if ($adminUserInfo['passwd'] == $adminUserInfo['staff_cd'] || empty($adminUserInfo['passwd'])) {
         redirect("/reminder/");
         return false;
     }
     //セッションにログイン情報を格納
     $_SESSION[SESSION_LOGGED_IN] = SESSION_LOGGED_IN_Y;
     $_SESSION[SESSION_USER] = $adminUserInfo['name'];
     $_SESSION[SESSION_USER_ID] = $adminUserInfo['id'];
     $_SESSION[SESSION_USER_CD] = $adminUserInfo['staff_cd'];
     $_SESSION[SESSION_EXPIRED] = time() + MAX_LOGIN_TIME;
     //ヘッダー・サイドバー等で利用
     include_once "class.Search.php";
     $_SESSION[SESSION_FUNC] = Page::accessEnablePages();
     //保有機能一覧
     $_SESSION[SESSION_FUNC_NOW] = Page::getPageInfo();
     //現在表示中の機能情報
     $_SESSION[SESSION_CHARGE_NEWEMP] = search::getNewEmps($adminUserInfo['id']);
     //担当新入社員一覧
     $_SESSION[SESSION_CHARGE_ADMIN] = search::getAdmins($adminUserInfo['id']);
     //担当責任者一覧
     $_SESSION[SESSION_CURRENT_NEWEMP] = null;
     //現在表示中の新入社員
     $_SESSION[SESSION_CURRENT_ADMIN] = null;
     //現在表示中の責任者
     //新入社員の場合カレントユーザーは自分自身
     if (in_array(ACCOUNT_NEW_EMP, $_SESSION[SESSION_GROUP_CD])) {
         $_SESSION[SESSION_CURRENT_NEWEMP] = $adminUserInfo['id'];
     }
     //人事部権限の場合カレントユーザーはリクエスト値を代入
     if (in_array(ACCOUNT_HUMAN_RESOURCES, $_SESSION[SESSION_GROUP_CD])) {
         $_SESSION[SESSION_CURRENT_NEWEMP] = isset($request['id']) ? $request['id'] : null;
         $_SESSION[SESSION_CURRENT_ADMIN] = isset($request['admin_id']) ? $request['admin_id'] : null;
     }
     //その他権限の場合カレントユーザーは担当新人 -> リクエスト値の順に代入
     if (count($_SESSION[SESSION_CHARGE_NEWEMP]) > 0) {
         foreach ($_SESSION[SESSION_CHARGE_NEWEMP] as $first => $dummy) {
             break;
         }
         $_SESSION[SESSION_CURRENT_NEWEMP] = isset($request['id']) ? $request['id'] : $first;
     }
     if (count($_SESSION[SESSION_CHARGE_ADMIN]) > 0) {
         foreach ($_SESSION[SESSION_CHARGE_ADMIN] as $first => $dummy) {
             break;
         }
         $_SESSION[SESSION_CURRENT_ADMIN] = isset($request['admin_id']) ? $request['admin_id'] : $first;
     }
     $result['result'] = true;
     $result['admin_user_info'] = $adminUserInfo;
     return $result;
 }