getLoggedInUser(); if ($user) { header('Location: /'); exit(); } $doLogin = $_SERVER['REQUEST_METHOD'] === 'POST'; $error = ''; if ($doLogin) { if (!\verify_csrf_token($_POST['csrf_token'])) { header('Location: /'); exit(); } unset($_POST['csrf_token']); $a = []; if (count($_POST) === 2) { $i = 0; foreach ($_POST as $p) { $a[(int)$i] = $p; $i++; } } $auth = new Auth($a[0]); $res = $auth->isUserExist($a[0]); if (!$res->isSuccess) { $error = $res->message; } else { $auth->setToken($a[0], $a[1]); header('Location: /'); exit(); } } $tmpl = new Template('/'); $pagetit = 'サインイン'; $description = 'サイトにサインイン'; $tmpl->assign('pagetit', $pagetit); $tmpl->assign('curPage', 'auth'); $tmpl->assign('custCss', false); $tmpl->assign('menu', $this->getMenu()); $tmpl->assign('description', $description); $tmpl->assign('error', $error); $tmpl->render('login'); } catch (\Exception $e) { throw new \Exception($e->getMessage()); } } public function logout(array $params): void { if (!AUTH_ENABLED) return; try { $auth = new Auth; $user = $auth->getLoggedInUser(); if (!$user) { header('Location: /'); exit(); } $auth->logout(); header('Location: /'); exit(); } catch (\Exception $e) { throw new \Exception($e->getMessage()); } } public function register(array $params): void { if (!AUTH_REGISTER_ENABLED) return; try { $auth = new Auth; $user = $auth->getLoggedInUser(); if ($user) { header('Location: /'); exit(); } $doRegister = $_SERVER['REQUEST_METHOD'] === 'POST'; $error = ''; $nyuU = ''; $nyuE = ''; if ($doRegister) { if (!\verify_csrf_token($_POST['csrf_token'])) { header('Location: /'); exit(); } unset($_POST['csrf_token']); $a = []; if (count($_POST) === 4) { $i = 0; foreach ($_POST as $p) { $a[(int)$i] = $p; $i++; } } $auth = new Auth; $res = $auth->mkUser($a[0], $a[1], $a[2], $a[3]); if (!$res->isSuccess) { $error = $res->message; $nyuU = $a[0]; $nyuE = $a[3]; } else { $auth = new Auth($a[0]); $auth->setToken($a[0], $a[1]); header('Location: /'); exit(); } } $tmpl = new Template('/'); $pagetit = '登録'; $description = 'サイトに登録'; $tmpl->assign('pagetit', $pagetit); $tmpl->assign('curPage', 'auth'); $tmpl->assign('custCss', false); $tmpl->assign('menu', $this->getMenu()); $tmpl->assign('description', $description); $tmpl->assign('error', $error); $tmpl->assign('nyuU', $nyuU); $tmpl->assign('nyuE', $nyuE); $tmpl->render('register'); } catch (\Exception $e) { throw new \Exception($e->getMessage()); } } public function profile(array $params): void { if (!AUTH_ENABLED) return; $name = ''; if (isset($params['name'])) $name = $params['name']; if ($name === '') { header('Location: /'); exit(); } try { $auth = new Auth; $user = $auth->getLoggedInUser(); $u = $auth->getUser($name); if (!$u) { header('Location: /404'); exit(); } $tmpl = new Template('/'); $suffix = $u->gender === '男' ? 'くん' : ($u->gender === '女' ? 'ちゃん' : 'さん'); $pagetit = $u->altName.$suffix.'のプロフィール'; $description = ''; $tmpl->assign('pagetit', $pagetit); $tmpl->assign('curPage', 'auth'); $tmpl->assign('custCss', false); $tmpl->assign('menu', $this->getMenu()); $tmpl->assign('description', $description); $tmpl->assign('error', $error); $tmpl->assign('user', $user); $tmpl->assign('u', $u); $tmpl->render('profile'); } catch (\Exception $e) { throw new \Exception($e->getMessage()); } } }