public Result doResetPassword() { com.feth.play.module.pa.controllers.AuthenticateDI.noCache(this.session.response()); final Form<ModelAuth.PasswordReset> filledForm = getResetPasswordForm().bindFromRequest(); if (filledForm.hasErrors()) { boolean disableIndexing = false; ContentInner contentInner = renderResetPasswordView(filledForm); return Results.badRequest(this.onRenderListener.onRender(contentInner, disableIndexing)); } else { final String token = filledForm.get().token; final String newPassword = filledForm.get().password; final EntryTokenAction tokenAction = Auth.isTokenValid(token, EntryTokenAction.Type.PASSWORD_RESET); if (tokenAction == null) { ContentInner contentInner = new PageAuthAccount(this.session, this.onRenderListener).renderNoTokenOrInvalidView(); boolean disableIndexing = false; return Results.badRequest(this.onRenderListener.onRender(contentInner, disableIndexing)); } final EntryUser user = tokenAction.targetUser; try { // Pass true for the second parameter if you want to // automatically create a password and the exception never to // happen user.resetPassword(new ProviderUsernamePasswordAuthUser(newPassword), false); } catch (final RuntimeException re) { this.session.flash( Auth.FLASH_MESSAGE_KEY, Messages.get("playauthenticate.reset_password.message.no_password_account")); } final boolean login = ProviderUsernamePasswordAuth.getProvider().isLoginAfterPasswordReset(); if (login) { // automatically log in this.session.flash( Auth.FLASH_MESSAGE_KEY, Messages.get("playauthenticate.reset_password.message.success.auto_login")); return PlayAuthenticate.loginAndRedirect( this.session.ctx(), new ProviderLoginUsernamePasswordAuthUser(user.email)); } else { // send the user to the login page this.session.flash( Auth.FLASH_MESSAGE_KEY, Messages.get("playauthenticate.reset_password.message.success.manual_login")); } return this.onRenderListener.redirectToLogin(); } }
public Result renderResetPassword(final String token) { com.feth.play.module.pa.controllers.AuthenticateDI.noCache(this.session.response()); final EntryTokenAction ta = Auth.isTokenValid(token, EntryTokenAction.Type.PASSWORD_RESET); if (ta == null) { ContentInner contentInner = new PageAuthAccount(this.session, this.onRenderListener).renderNoTokenOrInvalidView(); boolean disableIndexing = false; return Results.badRequest(this.onRenderListener.onRender(contentInner, disableIndexing)); } boolean disableIndexing = false; ContentInner contentInner = renderResetPasswordView(getResetPasswordForm().fill(new ModelAuth.PasswordReset(token))); return Results.ok(this.onRenderListener.onRender(contentInner, disableIndexing)); }