예제 #1
0
파일: Recover.php 프로젝트: difra-org/difra
 /**
  * Verify password change link
  * @param $key
  * @param bool|false $returnUser
  * @return bool|User|string
  * @throws UsersException
  */
 public static function verify($key, $returnUser = false)
 {
     $db = DB::getInstance(Users::getDB());
     $data = $db->fetchRow('SELECT * FROM `user_recover` WHERE `recover`=?', [$key]);
     if (empty($data)) {
         throw new UsersException(self::RECOVER_INVALID);
     }
     if ($data['used']) {
         throw new UsersException(self::RECOVER_USED);
     }
     $date = $data['date_requested'];
     $date = explode(' ', $date);
     $day = explode('-', $date[0]);
     $time = explode(':', $date[1]);
     $day1 = mktime($time[0], $time[1], $time[2], $day[1], $day[2], $day[0]);
     if ($day1 and time() - $day1 > 3600 * Users::getRecoverTTL()) {
         throw new UsersException(self::RECOVER_OUTDATED);
     }
     return $returnUser ? User::getById($data['user']) : true;
 }