public static function login(array $post) { $callbackObj = new \stdClass(); $callbackObj->user = null; $callbackObj->status = false; $callbackObj->code = null; $callbackObj->tentativas_restantes = null; $user = self::find_by_username($post['username']); if (!is_null($user)) { $password = \HXPHP\System\Tools::hashHX($post['password'], $user->salt); if ($user->status === 1) { if (LoginAttempt::ExistemTentativas($user->id)) { if ($password['password'] === $user->password) { $callbackObj->user = $user; $callbackObj->status = true; LoginAttempt::LimparTentativas($user->id); } else { if (LoginAttempt::TentativasRestantes($user->id) <= 3) { $callbackObj->code = 'tentativas-esgotando'; $callbackObj->tentativas_restantes = LoginAttempt::TentativasRestantes($user->id); } else { $callbackObj->code = 'dados-incorretos'; } LoginAttempt::RegistrarTentativa($user->id); } } else { $callbackObj->code = 'usuario-bloqueado'; $user->status = 0; $user->save(false); } } else { $callbackObj->code = 'usuario-bloqueado'; } } else { $callbackObj->code = 'usuario-inexistente'; } return $callbackObj; }