public function testTokenGenerate() { $options = array('prefix' => 123456, 'salt' => 'us3rmanag3r'); $email = '*****@*****.**'; $expected = '006956d2bc0127492315a10d7432858c6e6ed4eb24860dfcbec93dd1eb7e4627'; $this->assertEqual($expected, Token::generate($email, $options)); $options['salt'] = 'userm4n4ger'; $expected = '0658b7bded39eae35cfb996e3d2b759526e6a35fea9b9ecd75ff20ca4eb71c69'; $this->assertEqual($expected, Token::generate($email, $options)); $options['type'] = 'md5'; $expected = '853a77ca78669592b7175a15083b4347'; $this->assertEqual($expected, Token::generate($email, $options)); $options['prefix'] = 'li3'; $expected = 'e4b7e045f0b80cc96904190d90b84934'; $this->assertEqual($expected, Token::generate($email, $options)); }
/** * Logic to request password reset for user * * @param array $conditions * @return int */ public static function requestPasswordReset(array $conditions = array()) { $self = static::_object(); if ($user = $self::first(compact('conditions'))) { $time = new \DateTime(); $reset = PasswordResets::first(array('conditions' => array('user_id' => $user->id))); if ($reset) { $expires = new \DateTime($reset->expires); if ($expires <= $time) { $reset->delete(); } else { return PasswordResets::RESET_TOKEN_EXISTS; } } if (!$reset || !$reset->exists()) { $expires = clone $time; $expires->modify(LI3_UM_PasswordResetExpires); $token = Token::generate($user->email); $reset = PasswordResets::create(array('user_id' => $user->id, 'expires' => $expires->format('Y-m-d H:i:s'), 'token' => $token)); if ($reset->save()) { $link = Router::match(array('li3_usermanager.Users::resetPassword', 'id' => $user->id, 'token' => $token), $self::$request, array('absolute' => true)); Mailer::$_data['subject'] = 'Your password reset link!'; Mailer::$_data['from'] = LI3_UM_PasswordResetEmailFrom; Mailer::$_data['to'] = $user->email; Mailer::$_data['body'] = 'This is your password reset link:' . "\n" . $link; return PasswordResets::GENERATED_NEW_RESET_TOKEN; } } } }