Search in sources :

Example 66 with PwmSession

use of password.pwm.http.PwmSession in project pwm by pwm-project.

the class SetupResponsesServlet method handleClearExisting.

@ActionHandler(action = "clearExisting")
private ProcessStatus handleClearExisting(final PwmRequest pwmRequest) throws PwmUnrecoverableException, ChaiUnavailableException, IOException {
    LOGGER.trace(pwmRequest, "request for response clear received");
    final PwmApplication pwmApplication = pwmRequest.getPwmApplication();
    final PwmSession pwmSession = pwmRequest.getPwmSession();
    try {
        final String userGUID = pwmSession.getUserInfo().getUserGuid();
        final ChaiUser theUser = pwmSession.getSessionManager().getActor(pwmApplication);
        pwmApplication.getCrService().clearResponses(pwmSession.getLabel(), pwmRequest.getUserInfoIfLoggedIn(), theUser, userGUID);
        pwmSession.reloadUserInfoBean(pwmApplication);
        pwmRequest.getPwmApplication().getSessionStateService().clearBean(pwmRequest, SetupResponsesBean.class);
        // mark the event log
        final UserAuditRecord auditRecord = new AuditRecordFactory(pwmRequest).createUserAuditRecord(AuditEvent.CLEAR_RESPONSES, pwmSession.getUserInfo(), pwmSession);
        pwmApplication.getAuditManager().submit(auditRecord);
        pwmRequest.sendRedirect(PwmServletDefinition.SetupResponses);
    } catch (PwmOperationalException e) {
        LOGGER.debug(pwmSession, e.getErrorInformation());
        setLastError(pwmRequest, e.getErrorInformation());
    }
    return ProcessStatus.Continue;
}
Also used : UserAuditRecord(password.pwm.svc.event.UserAuditRecord) AuditRecordFactory(password.pwm.svc.event.AuditRecordFactory) PwmApplication(password.pwm.PwmApplication) ChaiUser(com.novell.ldapchai.ChaiUser) PwmSession(password.pwm.http.PwmSession) PwmOperationalException(password.pwm.error.PwmOperationalException)

Example 67 with PwmSession

use of password.pwm.http.PwmSession in project pwm by pwm-project.

the class SetupResponsesServlet method saveResponses.

private void saveResponses(final PwmRequest pwmRequest, final ResponseInfoBean responseInfoBean) throws PwmUnrecoverableException, ChaiUnavailableException, PwmOperationalException, ChaiValidationException {
    final PwmApplication pwmApplication = pwmRequest.getPwmApplication();
    final PwmSession pwmSession = pwmRequest.getPwmSession();
    final ChaiUser theUser = pwmSession.getSessionManager().getActor(pwmApplication);
    final String userGUID = pwmSession.getUserInfo().getUserGuid();
    pwmApplication.getCrService().writeResponses(pwmRequest.getUserInfoIfLoggedIn(), theUser, userGUID, responseInfoBean);
    pwmSession.reloadUserInfoBean(pwmApplication);
    pwmApplication.getStatisticsManager().incrementValue(Statistic.SETUP_RESPONSES);
    pwmApplication.getAuditManager().submit(AuditEvent.SET_RESPONSES, pwmSession.getUserInfo(), pwmSession);
}
Also used : PwmApplication(password.pwm.PwmApplication) ChaiUser(com.novell.ldapchai.ChaiUser) PwmSession(password.pwm.http.PwmSession)

Example 68 with PwmSession

use of password.pwm.http.PwmSession in project pwm by pwm-project.

the class ActivateUserServlet method nextStep.

@Override
protected void nextStep(final PwmRequest pwmRequest) throws PwmUnrecoverableException, IOException, ChaiUnavailableException, ServletException {
    final PwmApplication pwmApplication = pwmRequest.getPwmApplication();
    final PwmSession pwmSession = pwmRequest.getPwmSession();
    final Configuration config = pwmApplication.getConfig();
    final ActivateUserBean activateUserBean = activateUserBean(pwmRequest);
    if (!activateUserBean.isFormValidated() || activateUserBean.getUserIdentity() == null) {
        ActivateUserUtils.forwardToActivateUserForm(pwmRequest);
        return;
    }
    final UserInfo userInfo = userInfo(pwmRequest);
    final MessageSendMethod tokenSendMethod = config.readSettingAsEnum(PwmSetting.ACTIVATE_TOKEN_SEND_METHOD, MessageSendMethod.class);
    if (MessageSendMethod.NONE != tokenSendMethod) {
        final List<TokenDestinationItem> tokenDestinationItems = TokenUtil.figureAvailableTokenDestinations(pwmApplication, pwmRequest.getSessionLabel(), pwmRequest.getLocale(), userInfo, tokenSendMethod);
        if (activateUserBean.getTokenDestination() == null) {
            final boolean autoSelect = Boolean.parseBoolean(pwmRequest.getConfig().readAppProperty(AppProperty.ACTIVATE_USER_TOKEN_AUTO_SELECT_DEST));
            if (tokenDestinationItems.size() == 1 && autoSelect) {
                activateUserBean.setTokenDestination(tokenDestinationItems.iterator().next());
            } else {
                forwardToTokenChoiceJsp(pwmRequest, tokenDestinationItems);
                return;
            }
        }
        if (!activateUserBean.isTokenSent() && activateUserBean.getTokenDestination() != null) {
            TokenUtil.initializeAndSendToken(pwmRequest, TokenUtil.TokenInitAndSendRequest.builder().userInfo(userInfo).tokenDestinationItem(activateUserBean.getTokenDestination()).emailToSend(PwmSetting.EMAIL_ACTIVATION_VERIFICATION).tokenType(TokenType.ACTIVATION).smsToSend(PwmSetting.SMS_ACTIVATION_VERIFICATION_TEXT).build());
        }
        if (!activateUserBean.isTokenPassed()) {
            forwardToEnterCodeJsp(pwmRequest, tokenDestinationItems);
            return;
        }
    }
    final String agreementText = config.readSettingAsLocalizedString(PwmSetting.ACTIVATE_AGREEMENT_MESSAGE, pwmSession.getSessionStateBean().getLocale());
    if (!StringUtil.isEmpty(agreementText) && !activateUserBean.isAgreementPassed()) {
        ActivateUserUtils.forwardToAgreementPage(pwmRequest);
        return;
    }
    try {
        ActivateUserUtils.activateUser(pwmRequest, activateUserBean.getUserIdentity());
        pwmRequest.getPwmResponse().forwardToSuccessPage(Message.Success_ActivateUser);
    } catch (PwmOperationalException e) {
        LOGGER.debug(pwmRequest, e.getErrorInformation());
        pwmApplication.getIntruderManager().convenience().markUserIdentity(activateUserBean.getUserIdentity(), pwmSession);
        pwmApplication.getIntruderManager().convenience().markAddressAndSession(pwmSession);
        pwmRequest.respondWithError(e.getErrorInformation());
    }
}
Also used : PwmApplication(password.pwm.PwmApplication) FormConfiguration(password.pwm.config.value.data.FormConfiguration) SearchConfiguration(password.pwm.ldap.search.SearchConfiguration) Configuration(password.pwm.config.Configuration) UserInfo(password.pwm.ldap.UserInfo) MessageSendMethod(password.pwm.config.option.MessageSendMethod) PwmSession(password.pwm.http.PwmSession) TokenDestinationItem(password.pwm.bean.TokenDestinationItem) ActivateUserBean(password.pwm.http.bean.ActivateUserBean) PwmOperationalException(password.pwm.error.PwmOperationalException)

Example 69 with PwmSession

use of password.pwm.http.PwmSession in project pwm by pwm-project.

the class ActivateUserServlet method handleEnterCode.

@ActionHandler(action = "enterCode")
public ProcessStatus handleEnterCode(final PwmRequest pwmRequest) throws ChaiUnavailableException, PwmUnrecoverableException, IOException, ServletException {
    final PwmApplication pwmApplication = pwmRequest.getPwmApplication();
    final PwmSession pwmSession = pwmRequest.getPwmSession();
    final ActivateUserBean activateUserBean = pwmApplication.getSessionStateService().getBean(pwmRequest, ActivateUserBean.class);
    final String userEnteredCode = pwmRequest.readParameterAsString(PwmConstants.PARAM_TOKEN);
    ErrorInformation errorInformation = null;
    try {
        final TokenPayload tokenPayload = TokenUtil.checkEnteredCode(pwmRequest, userEnteredCode, activateUserBean.getTokenDestination(), null, TokenType.ACTIVATION, TokenService.TokenEntryType.unauthenticated);
        activateUserBean.setUserIdentity(tokenPayload.getUserIdentity());
        activateUserBean.setTokenPassed(true);
        activateUserBean.setFormValidated(true);
        activateUserBean.setTokenDestination(tokenPayload.getDestination());
        if (pwmRequest.getConfig().readSettingAsBoolean(PwmSetting.DISPLAY_TOKEN_SUCCESS_BUTTON)) {
            pwmRequest.setAttribute(PwmRequestAttribute.TokenDestItems, tokenPayload.getDestination());
            pwmRequest.forwardToJsp(JspUrl.ACTIVATE_USER_TOKEN_SUCCESS);
            return ProcessStatus.Halt;
        }
    } catch (PwmUnrecoverableException e) {
        LOGGER.debug(pwmRequest, "error while checking entered token: ");
        errorInformation = e.getErrorInformation();
    }
    if (!activateUserBean.isTokenPassed()) {
        if (errorInformation == null) {
            errorInformation = new ErrorInformation(PwmError.ERROR_TOKEN_INCORRECT);
        }
        LOGGER.debug(pwmSession.getLabel(), errorInformation.toDebugStr());
        setLastError(pwmRequest, errorInformation);
    }
    return ProcessStatus.Continue;
}
Also used : ErrorInformation(password.pwm.error.ErrorInformation) PwmApplication(password.pwm.PwmApplication) PwmUnrecoverableException(password.pwm.error.PwmUnrecoverableException) PwmSession(password.pwm.http.PwmSession) TokenPayload(password.pwm.svc.token.TokenPayload) ActivateUserBean(password.pwm.http.bean.ActivateUserBean)

Example 70 with PwmSession

use of password.pwm.http.PwmSession in project pwm by pwm-project.

the class ChangePasswordServletUtil method executeChangePassword.

static void executeChangePassword(final PwmRequest pwmRequest, final PasswordData newPassword) throws ChaiUnavailableException, PwmUnrecoverableException, PwmOperationalException {
    final PwmApplication pwmApplication = pwmRequest.getPwmApplication();
    final PwmSession pwmSession = pwmRequest.getPwmSession();
    // password accepted, setup change password
    final ChangePasswordBean cpb = pwmApplication.getSessionStateService().getBean(pwmRequest, ChangePasswordBean.class);
    // change password
    PasswordUtility.setActorPassword(pwmSession, pwmApplication, newPassword);
    // init values for progress screen
    {
        final PasswordChangeProgressChecker.ProgressTracker tracker = new PasswordChangeProgressChecker.ProgressTracker();
        final PasswordChangeProgressChecker checker = new PasswordChangeProgressChecker(pwmApplication, pwmSession.getUserInfo().getUserIdentity(), pwmSession.getLabel(), pwmSession.getSessionStateBean().getLocale());
        cpb.setChangeProgressTracker(tracker);
        cpb.setChangePasswordMaxCompletion(checker.maxCompletionTime(tracker));
    }
    // send user an email confirmation
    ChangePasswordServletUtil.sendChangePasswordEmailNotice(pwmSession, pwmApplication);
    // send audit event
    pwmApplication.getAuditManager().submit(AuditEvent.CHANGE_PASSWORD, pwmSession.getUserInfo(), pwmSession);
}
Also used : ChangePasswordBean(password.pwm.http.bean.ChangePasswordBean) PwmApplication(password.pwm.PwmApplication) PwmSession(password.pwm.http.PwmSession) PasswordChangeProgressChecker(password.pwm.ldap.PasswordChangeProgressChecker)

Aggregations

PwmSession (password.pwm.http.PwmSession)74 PwmApplication (password.pwm.PwmApplication)55 ErrorInformation (password.pwm.error.ErrorInformation)38 PwmUnrecoverableException (password.pwm.error.PwmUnrecoverableException)30 PwmOperationalException (password.pwm.error.PwmOperationalException)29 Configuration (password.pwm.config.Configuration)21 UserIdentity (password.pwm.bean.UserIdentity)20 FormConfiguration (password.pwm.config.value.data.FormConfiguration)19 PwmException (password.pwm.error.PwmException)14 ChaiUser (com.novell.ldapchai.ChaiUser)12 ActionConfiguration (password.pwm.config.value.data.ActionConfiguration)12 UserInfo (password.pwm.ldap.UserInfo)12 SearchConfiguration (password.pwm.ldap.search.SearchConfiguration)11 ChaiOperationException (com.novell.ldapchai.exception.ChaiOperationException)9 ChaiUnavailableException (com.novell.ldapchai.exception.ChaiUnavailableException)9 IOException (java.io.IOException)9 Instant (java.time.Instant)9 RestResultBean (password.pwm.ws.server.RestResultBean)9 ServletException (javax.servlet.ServletException)8 MacroMachine (password.pwm.util.macro.MacroMachine)8