Example usage for org.springframework.security.web.savedrequest SavedRequest getParameterMap

List of usage examples for org.springframework.security.web.savedrequest SavedRequest getParameterMap

Introduction

In this page you can find the example usage for org.springframework.security.web.savedrequest SavedRequest getParameterMap.

Prototype

Map<String, String[]> getParameterMap();

Source Link

Usage

From source file:org.orcid.frontend.web.controllers.OauthConfirmAccessController.java

/**
 * Fill the for with the state param and the client and member names.
 * //from  ww w. j  a v  a 2 s . com
 * @param form
 * @param request
 * @param response
 * */
private void fillOauthFormWithRequestInformation(OauthForm form, HttpServletRequest request,
        HttpServletResponse response) {
    Map<String, String[]> requestParams = new HashMap<String, String[]>();
    SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response);

    //Get the params from the saved request
    if (savedRequest != null) {
        requestParams = savedRequest.getParameterMap();
    } else {
        //If there are no saved request, get them from the session
        AuthorizationRequest authorizationRequest = (AuthorizationRequest) request.getSession()
                .getAttribute("authorizationRequest");
        Map<String, String> authRequestParams = new HashMap<String, String>(
                authorizationRequest.getRequestParameters());
        for (String param : authRequestParams.keySet()) {
            requestParams.put(param, new String[] { authRequestParams.get(param) });
        }
    }

    if (requestParams == null || requestParams.isEmpty()) {
        throw new InvalidRequestException("Unable to find parameters");
    }

    //Save state param
    if (requestParams.containsKey(OrcidOauth2Constants.STATE_PARAM)) {
        if (requestParams.get(OrcidOauth2Constants.STATE_PARAM).length > 0)
            form.setStateParam(Text.valueOf(requestParams.get(OrcidOauth2Constants.STATE_PARAM)[0]));
    }

    //Get and set client info
    if (!requestParams.containsKey(OrcidOauth2Constants.CLIENT_ID_PARAM)) {
        throw new InvalidRequestException("Empty client id");
    }
    String clientId = requestParams.get(OrcidOauth2Constants.CLIENT_ID_PARAM)[0];
    try {
        clientId = URLDecoder.decode(clientId, "UTF-8").trim();
    } catch (UnsupportedEncodingException e) {
        throw new InvalidRequestException("Unable to parse client id: " + e);
    }

    ClientDetailsEntity clientDetails = clientDetailsEntityCacheManager.retrieve(clientId);
    try {
        orcidOAuth2RequestValidator.validateClientIsEnabled(clientDetails);
    } catch (LockedException le) {
        throw new InvalidRequestException("Client " + clientId + " is locked");
    }

    String clientName = clientDetails.getClientName() == null ? "" : clientDetails.getClientName();
    String memberName = null;
    // If it is the 
    if (ClientType.PUBLIC_CLIENT.equals(clientDetails.getClientType())) {
        memberName = PUBLIC_MEMBER_NAME;
    } else {
        ProfileEntity groupProfile = profileEntityCacheManager.retrieve(clientDetails.getGroupProfileId());
        memberName = groupProfile.getCreditName();
    }

    form.setClientName(Text.valueOf(clientName));
    form.setMemberName(Text.valueOf(memberName));
    form.setClientId(Text.valueOf(clientId));

    //If it is a new registration, set the referred by flag
    if (form instanceof OauthRegistrationForm) {
        ((OauthRegistrationForm) form).setReferredBy(Text.valueOf(clientId));
    }
}

From source file:org.orcid.frontend.web.controllers.OauthConfirmAccessController.java

@RequestMapping(value = "/custom/register.json", method = RequestMethod.POST)
public @ResponseBody OauthRegistrationForm checkRegisterForm(HttpServletRequest request,
        HttpServletResponse response, @RequestBody OauthRegistrationForm form) {
    form.setErrors(new ArrayList<String>());

    if (form.getApproved()) {
        registrationController.validateRegistrationFields(request, form);
        registrationController.validateGrcaptcha(request, form);
    } else {// ww w .  j  av  a 2s . c  om
        SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response);
        String stateParam = null;

        if (savedRequest != null && savedRequest.getParameterMap() != null
                && savedRequest.getParameterValues("state") != null) {
            if (savedRequest.getParameterValues("state").length > 0)
                stateParam = savedRequest.getParameterValues("state")[0];
        }
        form.setRedirectUri(Text.valueOf(buildDenyRedirectUri(form.getRedirectUri().getValue(), stateParam)));
    }

    return form;
}