/** * 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; }