Search in sources :

Example 1 with VerifyEmailActionToken

use of org.keycloak.authentication.actiontoken.verifyemail.VerifyEmailActionToken in project keycloak by keycloak.

the class VerifyEmail method sendVerifyEmail.

private Response sendVerifyEmail(KeycloakSession session, LoginFormsProvider forms, UserModel user, AuthenticationSessionModel authSession, EventBuilder event) throws UriBuilderException, IllegalArgumentException {
    RealmModel realm = session.getContext().getRealm();
    UriInfo uriInfo = session.getContext().getUri();
    int validityInSecs = realm.getActionTokenGeneratedByUserLifespan(VerifyEmailActionToken.TOKEN_TYPE);
    int absoluteExpirationInSecs = Time.currentTime() + validityInSecs;
    String authSessionEncodedId = AuthenticationSessionCompoundId.fromAuthSession(authSession).getEncodedId();
    VerifyEmailActionToken token = new VerifyEmailActionToken(user.getId(), absoluteExpirationInSecs, authSessionEncodedId, user.getEmail(), authSession.getClient().getClientId());
    UriBuilder builder = Urls.actionTokenBuilder(uriInfo.getBaseUri(), token.serialize(session, realm, uriInfo), authSession.getClient().getClientId(), authSession.getTabId());
    String link = builder.build(realm.getName()).toString();
    long expirationInMinutes = TimeUnit.SECONDS.toMinutes(validityInSecs);
    try {
        session.getProvider(EmailTemplateProvider.class).setAuthenticationSession(authSession).setRealm(realm).setUser(user).sendVerifyEmail(link, expirationInMinutes);
        event.success();
    } catch (EmailException e) {
        logger.error("Failed to send verification email", e);
        event.error(Errors.EMAIL_SEND_FAILED);
    }
    return forms.createResponse(UserModel.RequiredAction.VERIFY_EMAIL);
}
Also used : EmailException(org.keycloak.email.EmailException) VerifyEmailActionToken(org.keycloak.authentication.actiontoken.verifyemail.VerifyEmailActionToken)

Aggregations

VerifyEmailActionToken (org.keycloak.authentication.actiontoken.verifyemail.VerifyEmailActionToken)1 EmailException (org.keycloak.email.EmailException)1