List of usage examples for org.springframework.security.web.savedrequest SavedRequest getParameterMap
Map<String, String[]> getParameterMap();
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; }