/** * Mails the forgot password link. * * @param user */ public void mailForgotPasswordLink(U user) { log.debug("Mailing forgot password link to user: " + user); String forgotPasswordCode = greenTokenService.createToken( GreenTokenService.FORGOT_PASSWORD_AUDIENCE, user.getEmail(), properties.getJwt().getExpirationMillis()); // make the link String forgotPasswordLink = properties.getApplicationUrl() + "/reset-password?code=" + forgotPasswordCode; mailForgotPasswordLink(user, forgotPasswordLink); log.debug("Forgot password link mail queued."); }
public Mono<UserDto> resetPassword(Mono<ResetPasswordForm> resetPasswordForm) { return resetPasswordForm.map(form -> { log.debug("Resetting password ..."); JWTClaimsSet claims = greenTokenService.parseToken(form.getCode(), GreenTokenService.FORGOT_PASSWORD_AUDIENCE); String email = claims.getSubject(); return Tuples.of(email, claims, form.getNewPassword()); }) .flatMap(tuple -> Mono.zip( findUserByEmail(tuple.getT1()), Mono.just(tuple.getT2()), Mono.just(tuple.getT3())) ) .map(this::resetPassword) .flatMap(userRepository::save) .map(AbstractMongoUser::toUserDto); }
"com.naturalprogrammer.spring.alreadyVerified").go(); JWTClaimsSet claims = greenTokenService.parseToken(verificationCode, GreenTokenService.VERIFY_AUDIENCE, user.getCredentialsUpdatedMillis());
/** * Mails the forgot password link. * * @param user */ public void mailForgotPasswordLink(U user) { log.debug("Mailing forgot password link to user: " + user); String forgotPasswordCode = greenTokenService.createToken( GreenTokenService.FORGOT_PASSWORD_AUDIENCE, user.getEmail(), properties.getJwt().getExpirationMillis()); // make the link String forgotPasswordLink = properties.getApplicationUrl() + "/reset-password?code=" + forgotPasswordCode; mailForgotPasswordLink(user, forgotPasswordLink); log.debug("Forgot password link mail queued."); }
JWTClaimsSet claims = greenTokenService.parseToken(form.getCode(), GreenTokenService.FORGOT_PASSWORD_AUDIENCE);
/** * Mails the change-email verification link to the user. */ protected void mailChangeEmailLink(U user) { String changeEmailCode = greenTokenService.createToken( GreenTokenService.CHANGE_EMAIL_AUDIENCE, user.getId().toString(), properties.getJwt().getExpirationMillis(), LecUtils.mapOf("newEmail", user.getNewEmail())); try { log.debug("Mailing change email link to user: " + user); // make the link String changeEmailLink = properties.getApplicationUrl() + "/users/" + user.getId() + "/change-email?code=" + changeEmailCode; // mail it mailChangeEmailLink(user, changeEmailLink); log.debug("Change email link mail queued."); } catch (Throwable e) { // In case of exception, just log the error and keep silent log.error(ExceptionUtils.getStackTrace(e)); } }
protected U validateChangeEmail(Tuple2<U, MultiValueMap<String, String>> tuple) { U user = tuple.getT1(); String code = tuple.getT2().getFirst("code"); LexUtils.validate(StringUtils.isNotBlank(code), "com.naturalprogrammer.spring.blank", "code").go(); LexUtils.validate(StringUtils.isNotBlank(user.getNewEmail()), "com.naturalprogrammer.spring.blank.newEmail").go(); JWTClaimsSet claims = greenTokenService.parseToken(code, GreenTokenService.CHANGE_EMAIL_AUDIENCE, user.getCredentialsUpdatedMillis()); LecUtils.ensureAuthority( claims.getSubject().equals(user.getId().toString()) && claims.getClaim("newEmail").equals(user.getNewEmail()), "com.naturalprogrammer.spring.wrong.changeEmailCode"); return user; }
/** * Mails the change-email verification link to the user. */ protected void mailChangeEmailLink(U user) { String changeEmailCode = greenTokenService.createToken( GreenTokenService.CHANGE_EMAIL_AUDIENCE, user.getId().toString(), properties.getJwt().getExpirationMillis(), LecUtils.mapOf("newEmail", user.getNewEmail())); try { log.debug("Mailing change email link to user: " + user); // make the link String changeEmailLink = properties.getApplicationUrl() + "/users/" + user.getId() + "/change-email?code=" + changeEmailCode; // mail it mailChangeEmailLink(user, changeEmailLink); log.debug("Change email link mail queued."); } catch (Throwable e) { // In case of exception, just log the error and keep silent log.error(ExceptionUtils.getStackTrace(e)); } }
public U verifyUser(Tuple2<U, MultiValueMap<String,String>> tuple) { log.debug("Verifying user ..."); U user = tuple.getT1(); String verificationCode = tuple.getT2().getFirst("code"); LexUtils.validate(StringUtils.isNotBlank(verificationCode), "com.naturalprogrammer.spring.blank", "code").go(); // ensure that he is unverified LexUtils.validate(user.hasRole(UserUtils.Role.UNVERIFIED), "com.naturalprogrammer.spring.alreadyVerified").go(); JWTClaimsSet claims = greenTokenService.parseToken( verificationCode, GreenTokenService.VERIFY_AUDIENCE, user.getCredentialsUpdatedMillis()); LecUtils.ensureAuthority( claims.getSubject().equals(user.getId().toString()) && claims.getClaim("email").equals(user.getEmail()), "com.naturalprogrammer.spring.wrong.verificationCode"); user.getRoles().remove(UserUtils.Role.UNVERIFIED); // make him verified user.setCredentialsUpdatedMillis(System.currentTimeMillis()); return user; }
/** * Sends verification mail to a unverified user. */ protected void sendVerificationMail(final U user) { try { log.debug("Sending verification mail to: " + user); String verificationCode = greenTokenService.createToken( GreenTokenService.VERIFY_AUDIENCE, user.getId().toString(), properties.getJwt().getExpirationMillis(), LecUtils.mapOf("email", user.getEmail())); // make the link String verifyLink = properties.getApplicationUrl() + "/users/" + user.getId() + "/verification?code=" + verificationCode; // send the mail sendVerificationMail(user, verifyLink); log.debug("Verification mail to " + user.getEmail() + " queued."); } catch (Throwable e) { // In case of exception, just log the error and keep silent log.error(ExceptionUtils.getStackTrace(e)); } }
"com.naturalprogrammer.spring.blank.newEmail").go(); JWTClaimsSet claims = greenTokenService.parseToken(changeEmailCode, GreenTokenService.CHANGE_EMAIL_AUDIENCE, user.getCredentialsUpdatedMillis());
/** * Sends verification mail to a unverified user. */ protected void sendVerificationMail(final U user) { try { log.debug("Sending verification mail to: " + user); String verificationCode = greenTokenService.createToken(GreenTokenService.VERIFY_AUDIENCE, user.getId().toString(), properties.getJwt().getExpirationMillis(), LecUtils.mapOf("email", user.getEmail())); // make the link String verifyLink = properties.getApplicationUrl() + "/users/" + user.getId() + "/verification?code=" + verificationCode; // send the mail sendVerificationMail(user, verifyLink); log.debug("Verification mail to " + user.getEmail() + " queued."); } catch (Throwable e) { // In case of exception, just log the error and keep silent log.error(ExceptionUtils.getStackTrace(e)); } }