/** * @param array[string] $parts * @param array[string] $mod * @return string */ public static function main($parts, $mod) { $session = new \NekoPHP\Session('user'); if ($session->get('id') !== null) { return $mod['twig']->render('profile.twig', ['warning' => 'You are already logged in', 'user' => new Models\User($session->get('id'))]); } return $mod['twig']->render('login.twig', ['form_url' => \NekoPHP\NekoPHP::getModuleUrl() . '/login']); }
/** * @param array[string] $parts * @param array[string] $mod * @return string */ public static function main($parts, $mod) { if (Session::get('user_id') === null) { Session::setOnce('warning', "You aren't logged in"); NekoPHP::redirect(NekoPHP::getModuleUrl() . '/login'); } Session::set('user_id', null); Session::setOnce('success', 'You have been logged out'); NekoPHP::redirect(NekoPHP::getBaseUrl()); }
/** * @param array[string] $parts * @param array[string] $mod * @return string */ public static function main($parts, $mod) { $user = Models\User::getByEmail($_POST['email']); if ($user === null || !$user->checkPassword($_POST['password'])) { return $mod['twig']->render('login.twig', ['error' => 'Username or password incorrect', 'form_url' => \NekoPHP\NekoPHP::getModuleUrl() . '/login']); } Session::set('user_id', $user->getId()); Session::setOnce('success', "You have been logged in as {$user->getEmail()}"); if (Session::existsOnce('login-redirect-to')) { return NekoPHP::redirect(Session::getOnce('login-redirect-to')); } return NekoPHP::redirect(NekoPHP::getModuleUrl() . '/profile'); }
/** * @param array[string] $parts * @param array[string] $mod * @return string */ public static function main($parts, $mod) { if (Session::get('user_id') === null) { Session::setOnce('error', 'You must be logged in to see this page'); NekoPHP::redirect(NekoPHP::getModuleUrl() . '/login'); } try { $user = new Models\User($parts[1] ?: Session::get('user_id')); } catch (\Exception $e) { http_response_code(404); return $mod['twig']->render('error/404.twig'); } return $mod['twig']->render('profile.twig', ['user' => $user]); }
/** * @param array[string] $parts * @param array[string => mixed] $mod * @return string */ public static function main($parts, $mod) { Models\User::checkPermissions($mod['cuser'], 'UserAdmin', true); $errors = []; if (empty($_POST['email'])) { $errors[] = 'No email address given'; } elseif (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) { $errors[] = 'Invalid email address'; } if (empty($_POST['password']) || empty($_POST['password_confirm'])) { $errors[] = 'Both password fields need to be filled out'; } elseif ($_POST['password'] !== $_POST['password_confirm']) { $errors[] = 'The passwords don\'t match'; } if (count($errors) > 0) { Session::setOnce('error', $errors); return NekoPHP::redirect(NekoPHP::getModuleUrl() . '/create'); } try { $user = new Models\User(); $user->setEmail($_POST['email']); $user->setPassword($_POST['password']); if (!$user->create()) { throw new \Exception($user->exception()->getMessage()); } $user->getInfo()->setRealname($_POST['realname']); $user->getInfo()->update(); $user->getPermissions()->setUserAdmin(isset($_POST['permission_user_admin'])); $user->getPermissions()->update(); // @todo: send out an email to the newly created user } catch (\Exception $e) { Session::setOnce('error', $e->getMessage()); return NekoPHP::redirect(NekoPHP::getModuleUrl() . '/create/'); } Session::setOnce('success', 'Account created'); return NekoPHP::redirect(NekoPHP::getModuleUrl() . '/profile/' . $user->getId()); }
/** * @param array[string] $parts * @param array[string] $mod * @return string */ public static function main($parts, $mod) { NekoPHP::redirect(NekoPHP::getModuleUrl() . '/profile'); }
/** * @param array[string] $parts * @param array[string] $mod * @return string */ public static function main($parts, $mod) { Models\User::checkPermission($mod['cuser'], 'UserAdmin', true); return $mod['twig']->render('create.twig', ['form_url' => \NekoPHP\NekoPHP::getModuleUrl() . '/create']); }