Skip to content
Snippets Groups Projects
Account.php 2.3 KiB
Newer Older
class Account
{
    private static function checkTokenLifetime($creationDate) {
        $config = Kohana::$config->load('security.securityPolicy');
PavelBegunkov's avatar
PavelBegunkov committed
        $lifetime = $config['recoveryToken']['lifetime'];
        return (time() - $creationDate) > $lifetime;
    public static function checkToken($token) {
        $recovery = Model_Account::getRecoveryInfoByToken($token)[0];
PavelBegunkov's avatar
PavelBegunkov committed
        $response = true;
PavelBegunkov's avatar
PavelBegunkov committed
        if ($recovery['isUsed']) {
            $response = false;
        } else {
            $date = strtotime($recovery['Date']);
            if (self::checkTokenLifetime($date)) {
                Model_Account::useRecoveryToken($recovery['Token']);
PavelBegunkov's avatar
PavelBegunkov committed
                $response = false;
            }
PavelBegunkov's avatar
PavelBegunkov committed
        return $response;
    public static function createRecoveryRequest($email) {
        $requestToken = sha1($email.time().Cookie::$salt);
        $UserFullName = Model_Account::createRecoveryToken($email, $requestToken);
        if (!$UserFullName) {
            throw HTTP_Exception::factory(403, 'Пользователь с таким e-mail адресом не зарегистрирован в системе!');
        }
        $subject = ASSEMBLY_SYSTEM_NAME . ": Восстановление пароля";

        $twig = Twig::factory('email/recovery');
        $twig->curl = 'https://grade.sfedu.ru/'; // URL::base('https', TRUE); TODO: fix after mmcs.sfedu.ru gets SSL-certificate
        $twig->Token = $requestToken;
        $twig->EMail = $email;
        $twig->Subject = $subject;

        SendMail::send($subject, $twig->render(), $email, $UserFullName);
    // remind password
    public static function changePasswordByToken($token, $password) {
        $recovery = Model_Account::getRecoveryInfoByToken($token)[0];
        Model_Account::changePassword($recovery['AccountID'], $password);
        Model_Account::useRecoveryToken($token);
    public static function doesLoginExist($login) {
        return Model_Account::checkAccountExistenceBy('login', $login);
    public static function doesEmailExist($email) {
        return Model_Account::checkAccountExistenceBy('email', $email);
//    // We don't change email address:\
//    public static function changeEMail($id, $newEMail) {
//        return (bool) Model_Account::changeMail($id, $newEMail);