feat(BRIDGE-424): FIDO2 GUI support.
This commit is contained in:
@ -302,6 +302,32 @@ SPStreamEvent newLoginTfaRequestedEvent(QString const &username) {
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \param[in] username The username.
|
||||
/// \return The event.
|
||||
//****************************************************************************************************************************************************
|
||||
SPStreamEvent newLoginFidoRequestedEvent(QString const &username) {
|
||||
auto event = new ::grpc::LoginFidoRequestedEvent;
|
||||
event->set_username(username.toStdString());
|
||||
auto loginEvent = new grpc::LoginEvent;
|
||||
loginEvent->set_allocated_fidorequested(event);
|
||||
return wrapLoginEvent(loginEvent);
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \param[in] username The username.
|
||||
/// \return The event.
|
||||
//****************************************************************************************************************************************************
|
||||
SPStreamEvent newLoginTfaOrFidoRequestedEvent(QString const &username) {
|
||||
auto event = new ::grpc::LoginTfaOrFidoRequestedEvent;
|
||||
event->set_username(username.toStdString());
|
||||
auto loginEvent = new grpc::LoginEvent;
|
||||
loginEvent->set_allocated_tfaorfidorequested(event);
|
||||
return wrapLoginEvent(loginEvent);
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \return The event.
|
||||
//****************************************************************************************************************************************************
|
||||
|
||||
@ -48,7 +48,9 @@ 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
|
||||
SPStreamEvent newLoginHvRequestedEvent(); ///< Create a new LoginHvRequestedEvent.
|
||||
SPStreamEvent newLoginFidoRequestedEvent(QString const &username); ///< Create a new LoginFidoRequestedEvent.
|
||||
SPStreamEvent newLoginTfaOrFidoRequestedEvent(QString const &username); ///< Create a new LoginTfaOrFidoRequestedEvent.
|
||||
|
||||
// Update related events
|
||||
SPStreamEvent newUpdateErrorEvent(grpc::UpdateErrorType errorType); ///< Create a new UpdateErrorEvent event.
|
||||
|
||||
@ -632,6 +632,28 @@ grpc::Status GRPCClient::login2FA(QString const &username, QString const &code)
|
||||
return this->logGRPCCallStatus(stub_->Login2FA(this->clientContext().get(), request, &empty), __FUNCTION__);
|
||||
}
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \param[in] username The username.
|
||||
/// \param[in] code The Security key PIN.
|
||||
/// \return the status for the gRPC call.
|
||||
//****************************************************************************************************************************************************
|
||||
grpc::Status GRPCClient::loginFido(const QString &username, const QString &pin) {
|
||||
LoginRequest request;
|
||||
request.set_username(username.toStdString());
|
||||
request.set_password(pin.toStdString());
|
||||
return this->logGRPCCallStatus(stub_->LoginFido(this->clientContext().get(), request, &empty), __FUNCTION__ );
|
||||
}
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \param[in] username The username.
|
||||
/// \return the status for the gRPC call.
|
||||
//****************************************************************************************************************************************************
|
||||
grpc::Status GRPCClient::abortFidoAssertion(const QString &username) {
|
||||
LoginAbortRequest request;
|
||||
request.set_username(username.toStdString());
|
||||
return this->logGRPCCallStatus(stub_->FidoAssertionAbort(this->clientContext().get(), request, &empty), __FUNCTION__);
|
||||
}
|
||||
|
||||
|
||||
//****************************************************************************************************************************************************
|
||||
/// \param[in] username The username.
|
||||
@ -1256,6 +1278,15 @@ void GRPCClient::processLoginEvent(LoginEvent const &event) {
|
||||
case HV_ERROR:
|
||||
emit loginHvError(QString::fromStdString(error.message()));
|
||||
break;
|
||||
case FIDO_PIN_INVALID:
|
||||
emit loginFidoPinInvalid(QString::fromStdString(error.message()));
|
||||
break;
|
||||
case FIDO_PIN_BLOCKED:
|
||||
emit loginFidoPinBlocked(QString::fromStdString(error.message()));
|
||||
break;
|
||||
case FIDO_ERROR:
|
||||
emit loginFidoError(QString::fromStdString(error.message()));
|
||||
break;
|
||||
default:
|
||||
this->logError("Unknown login error event received.");
|
||||
break;
|
||||
@ -1266,6 +1297,14 @@ void GRPCClient::processLoginEvent(LoginEvent const &event) {
|
||||
this->logTrace("Login event received: TfaRequested.");
|
||||
emit login2FARequested(QString::fromStdString(event.tfarequested().username()));
|
||||
break;
|
||||
case LoginEvent::kFidoRequested:
|
||||
this->logTrace("Login event received: FidoRequested.");
|
||||
emit loginFidoRequested(QString::fromStdString(event.fidorequested().username()));
|
||||
break;
|
||||
case LoginEvent::kTfaOrFidoRequested:
|
||||
this->logTrace("Login event received: TfaOrFidoRequested.");
|
||||
emit login2FAOrFidoRequested(QString::fromStdString(event.tfaorfidorequested().username()));
|
||||
break;
|
||||
case LoginEvent::kTwoPasswordRequested:
|
||||
this->logTrace("Login event received: TwoPasswordRequested.");
|
||||
emit login2PasswordRequested(QString::fromStdString(event.twopasswordrequested().username()));
|
||||
@ -1284,6 +1323,18 @@ void GRPCClient::processLoginEvent(LoginEvent const &event) {
|
||||
this->logTrace("Login event Received: HvRequested");
|
||||
emit loginHvRequested(QString::fromStdString(event.hvrequested().hvurl()));
|
||||
break;
|
||||
case LoginEvent::kLoginFidoTouchRequested:
|
||||
this->logTrace("Login event received: FidoTouchRequested");
|
||||
emit loginFidoTouchRequested(QString::fromStdString(event.loginfidotouchrequested().username()));
|
||||
break;
|
||||
case LoginEvent::kLoginFidoTouchCompleted:
|
||||
this->logTrace("Login event received: FidoTouchCompleted");
|
||||
emit loginFidoTouchCompleted(QString::fromStdString(event.loginfidotouchcompleted().username()));
|
||||
break;
|
||||
case LoginEvent::kLoginFidoPinRequired:
|
||||
this->logTrace("Login event received: FidoPinRequired");
|
||||
emit loginFidoPinRequired(QString::fromStdString(event.loginfidopinrequired().username()));
|
||||
break;
|
||||
default:
|
||||
this->logError("Unknown Login event received.");
|
||||
break;
|
||||
|
||||
@ -175,9 +175,11 @@ signals:
|
||||
public: // login related calls
|
||||
grpc::Status login(QString const &username, QString const &password); ///< Performs the 'login' call.
|
||||
grpc::Status login2FA(QString const &username, QString const &code); ///< Performs the 'login2FA' call.
|
||||
grpc::Status loginFido(QString const &username, QString const &pin); ///< Performs the 'loginFido' 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
|
||||
grpc::Status loginHv(QString const &username, QString const &password); ///< Performs the 'login' call with additional useHv flag.
|
||||
grpc::Status abortFidoAssertion(const QString &username); ///< Performs the 'abortFidoAssertion' call.
|
||||
|
||||
signals:
|
||||
void loginUsernamePasswordError(QString const &errMsg);
|
||||
@ -186,6 +188,8 @@ signals:
|
||||
void login2FARequested(QString const &username);
|
||||
void login2FAError(QString const &errMsg);
|
||||
void login2FAErrorAbort(QString const &errMsg);
|
||||
void loginFidoRequested(QString const &username);
|
||||
void login2FAOrFidoRequested(QString const &username);
|
||||
void login2PasswordRequested(QString const &username);
|
||||
void login2PasswordError(QString const &errMsg);
|
||||
void login2PasswordErrorAbort(QString const &errMsg);
|
||||
@ -193,6 +197,12 @@ signals:
|
||||
void loginAlreadyLoggedIn(QString const &userID);
|
||||
void loginHvRequested(QString const &hvUrl);
|
||||
void loginHvError(QString const &errMsg);
|
||||
void loginFidoTouchRequested(QString const &username);
|
||||
void loginFidoTouchCompleted(QString const &username);
|
||||
void loginFidoPinRequired(QString const &username);
|
||||
void loginFidoPinInvalid(QString const &errMsg);
|
||||
void loginFidoPinBlocked(QString const &errMsg);
|
||||
void loginFidoError(QString const &errMsg);
|
||||
|
||||
public: // Update related calls
|
||||
grpc::Status checkUpdate();
|
||||
|
||||
Reference in New Issue
Block a user