/** * Caso exista o cookie de autenticação, verifica se o token é válido */ public static function checkUser() { $user = self::user(); if ($user == null) { \Log::warning('Usuário do cookie inválido. Removendo cookie'); // remove o cookie \Controllers\SessionsController::destroySessionCookie(); } else { $data = \Controllers\SessionsController::extractCookieInfo(); $cookieToken = isset($data['token']) ? $data['token'] : null; $dbToken = $user->getToken(); if ($data == null || $cookieToken != $dbToken) { \Log::warning('Token do cookie inválido. Removendo cookie'); // remove o cookie \Controllers\SessionsController::destroySessionCookie(); redirect(getBaseURL()); } } }
/** * Altera a senha do usuário * @param string $password Nova senha, sem aplicação do hash * @return bool TRUE em caso de sucesso, FALSE caso contrário */ public function changePassword($password) { $hashedNewPassword = \Hash::password($password); $this->password = $hashedNewPassword; $userID = $this->getId(); $now = date('Y-m-d H:i:s'); $DB = new \DB(); $sql = "UPDATE users SET password = :password, updated_at = :now WHERE id = :id"; $stmt = $DB->prepare($sql); $stmt->bindParam(':password', $hashedNewPassword); $stmt->bindParam(":now", $now); $stmt->bindParam(':id', $userID, \PDO::PARAM_INT); if ($stmt->execute()) { // gera um novo token $token = $this->generateToken(); $this->updateToken($token); // atualiza o token do cookie \Controllers\SessionsController::saveSessionCookieForUser($this); return true; } else { return false; } }
/* ======================= Rotas da Aplicação ===================== */ // página inicial $app->get('/', function () { \Controllers\PagesController::home(); }); // login // GET: exibe formulário de login // POST: processa o formulário de login $app->map('/login', function () { \Controllers\SessionsController::login(); })->via('GET', 'POST'); // logout (sair) $app->get('/logout', function () { \Controllers\SessionsController::logout(); }); // página de erro ao tentar acessar uma rota restrita a usuários logados $app->get('/erro-login-necessario', function () { \View::make('erro-login-necessario'); }); // página de erro ao tentar acessar uma rota restrita a administradores $app->get('/erro-nivel-admin-necessario', function () { \View::make('erro-nivel-admin-necessario'); }); // formulário de cadastro $app->get('/cadastro', function () { \Controllers\UsersController::create(); }); // processa o formulário de cadastro $app->post('/cadastro_salvar', function () {