/** * @param string $value * @return bool */ public function isValid($value) { $returnValue = false; $this->_setValue($value); $users = new Users(); if (empty($value)) { $this->_error(self::EMPTYSTRING); } else { $user = $users->search("email", $value); if ($user !== null && !Login::loggedIn() || Login::loggedIn() && $user->userid !== $_SESSION['user']->userid) { $this->_error(self::USED); $returnValue = false; } else { $returnValue = parent::isValid($value); } } return $returnValue; }
/** * @param string $value * @return bool */ public function isValid($value) { $this->_setValue($value); if (empty($value) || strlen($value) < 2 || strlen($value) > 20) { $this->_error(self::LENGTH); return false; } $users = new Users(); $user = $users->search("username", $value); if ($user !== null && (Login::loggedIn() && $user->userid !== $_SESSION['user']->userid)) { $this->_error(self::USED); return false; } $status = preg_match('/^[A-Za-z0-9_.-]*$/', $value); if (false === $status || !$status) { $this->_error(self::INVALID); return false; } return true; }
/** * */ public function reset() { $error_messages = []; $view = new ResetPassword(); if (!empty($_POST)) { $users = new Users(); $user = $users->search("email", $_POST['email']); if ($user !== null) { $tokendata = json_decode($user->password_token, true); if ($_POST['token'] == $tokendata['token']) { if (time() - $tokendata["time"] > 1800) { $this->errors["token"] = "The given token has expired! Every token is only valid for 30 minutes"; } else { $validatePassword = new Password(); if (!$validatePassword->passwordValid($_POST['password'], $_POST['password_repeat'])) { $this->errors["password"] = implode(',', $validatePassword->getMessages()); $this->errors["password_repeat"] = ""; } else { $user->password = sha1($_POST['password'] . $user->salt); $user->password_token = null; $user->save(); new Message("Done!", "Your password was changed successfully! You can now login!", "success"); exit; } } } else { $this->errors["token"] = "The given token is not correct!"; } } else { $this->errors["email"] = "Email was not found in our system!"; } $this->assignErrors($view, $error_messages); $view->show(); } else { $view->show(); } }
/** * @param bool $autologin * @return bool|null|\Zend_Db_Table_Row_Abstract */ public static function checkAutoLogin($autologin = true) { if (!isset($_COOKIE['cunity-login']) || !isset($_COOKIE['cunity-login-token'])) { return false; } $users = new Users(); $user = $users->search("username", base64_decode($_COOKIE['cunity-login'])); if (md5($user->salt . "-" . $user->registered . "-" . $user->userhash) == $_COOKIE['cunity-login-token']) { if ($autologin) { $user->setLogin(true); header("Location:" . Url::convertUrl("index.php?m=profile")); exit; } else { return $user; } } return false; }
/** * */ private function forgetPw() { if (!isset($_POST['resetPw'])) { $view = new ForgetPw(); $view->render(); exit; } else { $users = new Users(); $user = $users->search("email", $_POST['email']); if ($user !== null) { $token = rand(123123, 999999); $user->password_token = json_encode(["token" => $token, "time" => time()]); $user->save(); new ForgetPwMail(["name" => $user->username, "email" => $user->email], $token); new Message("Done!", "Please check your mails! We have sent you a token to reset your password!", "success"); exit; } } $view = new ForgetPw(); $view->assign("error", true); $view->render(); }