forked from Silverfish/proton-bridge
feat(BRIDGE-14): HV3 implementation - GUI & CLI; ownership verification & CAPTCHA are supported
This commit is contained in:
@ -302,6 +302,18 @@ SPStreamEvent newLoginTfaRequestedEvent(QString const &username) {
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \return The event.
|
||||
//****************************************************************************************************************************************************
|
||||
SPStreamEvent newLoginHvRequestedEvent() {
|
||||
auto event = new ::grpc::LoginHvRequestedEvent;
|
||||
event->set_hvurl("https://verify.proton.me/?methods=captcha&token=SOME_RANDOM_TOKEN");
|
||||
auto loginEvent = new grpc::LoginEvent;
|
||||
loginEvent->set_allocated_hvrequested(event);
|
||||
return wrapLoginEvent(loginEvent);
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \param[in] username The username.
|
||||
/// \return The event.
|
||||
|
||||
@ -48,6 +48,7 @@ SPStreamEvent newLoginTfaRequestedEvent(QString const &username); ///< Create a
|
||||
SPStreamEvent newLoginTwoPasswordsRequestedEvent(QString const &username); ///< Create a new LoginTwoPasswordsRequestedEvent event.
|
||||
SPStreamEvent newLoginFinishedEvent(QString const &userID, bool wasSignedOut); ///< Create a new LoginFinishedEvent event.
|
||||
SPStreamEvent newLoginAlreadyLoggedInEvent(QString const &userID); ///< Create a new LoginAlreadyLoggedInEvent event.
|
||||
SPStreamEvent newLoginHvRequestedEvent(); ///< Create a new LoginHvRequestedEvent
|
||||
|
||||
// Update related events
|
||||
SPStreamEvent newUpdateErrorEvent(grpc::UpdateErrorType errorType); ///< Create a new UpdateErrorEvent event.
|
||||
|
||||
@ -23,7 +23,6 @@
|
||||
#include "../ProcessMonitor.h"
|
||||
#include "../Log/LogUtils.h"
|
||||
|
||||
|
||||
using namespace google::protobuf;
|
||||
using namespace grpc;
|
||||
|
||||
@ -607,6 +606,20 @@ grpc::Status GRPCClient::login(QString const &username, QString const &password)
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \param[in] username The username.
|
||||
/// \param[in] password The password.
|
||||
/// \return the status for the gRPC call.
|
||||
//****************************************************************************************************************************************************
|
||||
grpc::Status GRPCClient::loginHv(QString const &username, QString const &password) {
|
||||
LoginRequest request;
|
||||
request.set_username(username.toStdString());
|
||||
request.set_password(password.toStdString());
|
||||
request.set_usehvdetails(true);
|
||||
return this->logGRPCCallStatus(stub_->Login(this->clientContext().get(), request, &empty), __FUNCTION__);
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \param[in] username The username.
|
||||
/// \param[in] code The The 2FA code.
|
||||
@ -1221,6 +1234,9 @@ void GRPCClient::processLoginEvent(LoginEvent const &event) {
|
||||
case TWO_PASSWORDS_ABORT:
|
||||
emit login2PasswordErrorAbort(QString::fromStdString(error.message()));
|
||||
break;
|
||||
case HV_ERROR:
|
||||
emit loginHvError(QString::fromStdString(error.message()));
|
||||
break;
|
||||
default:
|
||||
this->logError("Unknown login error event received.");
|
||||
break;
|
||||
@ -1245,6 +1261,10 @@ void GRPCClient::processLoginEvent(LoginEvent const &event) {
|
||||
this->logTrace("Login event received: AlreadyLoggedIn.");
|
||||
emit loginAlreadyLoggedIn(QString::fromStdString(event.finished().userid()));
|
||||
break;
|
||||
case LoginEvent::kHvRequested:
|
||||
this->logTrace("Login event Received: HvRequested");
|
||||
emit loginHvRequested(QString::fromStdString(event.hvrequested().hvurl()));
|
||||
break;
|
||||
default:
|
||||
this->logError("Unknown Login event received.");
|
||||
break;
|
||||
|
||||
@ -155,6 +155,7 @@ public: // login related calls
|
||||
grpc::Status login2FA(QString const &username, QString const &code); ///< Performs the 'login2FA' call.
|
||||
grpc::Status login2Passwords(QString const &username, QString const &password); ///< Performs the 'login2Passwords' call.
|
||||
grpc::Status loginAbort(QString const &username); ///< Performs the 'loginAbort' call.
|
||||
grpc::Status loginHv(QString const &username, QString const &password); ///< Performs the 'login' call with additional useHv flag
|
||||
|
||||
signals:
|
||||
void loginUsernamePasswordError(QString const &errMsg);
|
||||
@ -168,6 +169,8 @@ signals:
|
||||
void login2PasswordErrorAbort(QString const &errMsg);
|
||||
void loginFinished(QString const &userID, bool wasSignedOut);
|
||||
void loginAlreadyLoggedIn(QString const &userID);
|
||||
void loginHvRequested(QString const &hvUrl);
|
||||
void loginHvError(QString const &errMsg);
|
||||
|
||||
public: // Update related calls
|
||||
grpc::Status checkUpdate();
|
||||
|
||||
Reference in New Issue
Block a user