@RequestMapping( value = "/user/{LOCALID}/delete", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE) @Timed public ResponseEntity<DeleteUserIdResponseDTO> deleteUser(@PathVariable("LOCALID") String localID) throws ApplicationNotFoundException, LocalIdMissingException { log.debug("REST DELETE_ID START. localid [{}]", localID); String currentLogin = SecurityUtils.getCurrentLogin(); Application application = applicationRepository.findOneByApplicationID(currentLogin); if (application == null) { throw new ApplicationNotFoundException(currentLogin); } Person person = personRepository.findOneByLocalID(localID); if (person == null) { throw new LocalIdMissingException(); } orcidService.deleteUser(person); DeleteUserIdResponseDTO response = new DeleteUserIdResponseDTO(); response.setResultCode(ResultCode.SUCCESS.getCode()); return new ResponseEntity<DeleteUserIdResponseDTO>(response, HttpStatus.OK); }
@RequestMapping(value = "/oauth/finish", method = RequestMethod.GET) @Timed public void oauthUserFinish( HttpServletRequest request, HttpServletResponse response, @RequestParam(value = "code", required = false) String code, @RequestParam(value = "state", required = false) String state, @RequestParam(value = "error", required = false) String error, @RequestParam(value = "error_description", required = false) String errorDescription) throws IOException, JAXBException, RelPersonApplicationNotFoundException, InterruptedException { log.debug( "REST OAUTHFINISH START. code [{}],state/relId [{}],error [{}], error_description [{}]", code, state, error, errorDescription); RelPersonApplication relPersonApplication = relPersonApplicationRepository.findOne(new Long(state)); if ((relPersonApplication == null) || (relPersonApplication.getValid() != null)) { String relPersonApplicationId = "-1"; if (relPersonApplication != null) relPersonApplicationId = relPersonApplication.getId().toString(); throw new RelPersonApplicationNotFoundException(relPersonApplicationId); } Application application = relPersonApplication.getApplication(); Person person = relPersonApplication.getPerson(); Token token = relPersonApplication.getToken(); // invalido token if (token.getDateUsed() == null) { token.setDateUsed(DateTime.now()); tokenRepository.save(token); } if (error != null) { log.info( "REST OAUTHFINISH {}. localId [{}],appId [{}],error [{}], error_description [{}]", error, person.getLocalID(), application.getApplicationID(), error, errorDescription); if (error.equals("access_denied")) { relPersonApplication.setDenied(true); relPersonApplication.setDateDenied(DateTime.now()); relPersonApplication.setValid(true); } else { relPersonApplication.setValid(false); } relPersonApplication.setErrorDescription(error); relPersonApplication.setDateReleased(DateTime.now()); relPersonApplicationRepository.save(relPersonApplication); } else { String callBackUrl = getCallbackOrcidURL(request); OrcidOAuthClient clientOrcid = new OrcidOAuthClient( application.getApplicationID(), application.getApplicationSecret(), callBackUrl, orcidApiType); log.info( "REST OAUTHFINISH REQUEST ACCESSTOKEN. localId [{}],appId [{}], appSecret [{}]. orcidApiType [{}]", person.getLocalID(), application.getApplicationID(), application.getApplicationSecret(), orcidApiType); OrcidAccessToken tokenOrcid = clientOrcid.getAccessToken(code); log.info( "REST OAUTHFINISH ACCESSTOKEN RELEASED. localId [{}],appId [{}],accessToken [{}], orcid [{}]", person.getLocalID(), application.getApplicationID(), tokenOrcid.getAccess_token(), tokenOrcid.getOrcid()); relPersonApplication.setDateReleased(DateTime.now()); relPersonApplication.setOauthAccessToken(tokenOrcid.getAccess_token()); relPersonApplication.setValid(true); relPersonApplication.setDenied(false); if ((person.getOrcid() == null) || ((tokenOrcid.getOrcid() != null) && (!person.getOrcid().equals(tokenOrcid.getOrcid())))) { person.setOrcid(tokenOrcid.getOrcid()); person.setOrcidReleaseDate(DateTime.now()); } relPersonApplicationRepository.save(relPersonApplication); personRepository.save(person); // async orcidService.sendNotify(relPersonApplication); } List<RelPersonApplication> listApplicationAuth = relPersonApplicationRepository.findAllByTokenIsAndValidIsNull(token); if (listApplicationAuth.size() > 0) { Application applicationAuthorize = listApplicationAuth.get(0).getApplication(); String callBackUrl = getCallbackOrcidURL(request); OrcidOAuthClient clientOrcid = new OrcidOAuthClient( applicationAuthorize.getApplicationID(), applicationAuthorize.getApplicationSecret(), callBackUrl, orcidApiType); List<OrcidAuthScope> orcidScopes = clientOrcid.getListAllScope(); String urlToRedirect = clientOrcid.getAuthzCodeRegisterRequest( listApplicationAuth.get(0).getId().toString(), orcidScopes, person.getFirstName(), person.getLastName(), person.getEmail()); log.debug( "REST OAUTHFINISH REDIRECT TO APP. listApp [{}], appId [{}], token [{}], urlRedirect [{}]", listApplicationAuth.size(), applicationAuthorize.getApplicationID(), listApplicationAuth.get(0).getToken().getOtt(), urlToRedirect); response.sendRedirect(urlToRedirect); } else { String urlToRedirect = token.getUrlCallback(); if ((urlToRedirect == null) || (urlToRedirect.isEmpty())) { Application appRequest = token.getApplication(); urlToRedirect = appRequest.getUrlCallback(); } if (urlToRedirect.contains("?")) urlToRedirect = urlToRedirect + "&"; else urlToRedirect = urlToRedirect + "?"; urlToRedirect = urlToRedirect + "ott=" + token.getOtt(); RelPersonApplication resultRel = relPersonApplicationRepository.findOneByPersonIsAndApplicationIsAndTokenIs( token.getPerson(), token.getApplication(), token); String resultCode = null; if ((resultRel != null) && (resultRel.getValid()) && ((resultRel.getDenied() == null) || (resultRel.getDenied() == false))) { resultCode = "001"; } else if (resultRel.getDenied()) { resultCode = ResultCode.ERROR_USER_DENIED.getCode(); } else { resultCode = ResultCode.ERROR_ORCID_FOR_USER_MISSING.getCode(); } urlToRedirect = urlToRedirect + "&result-code=" + resultCode; log.debug( "REST OAUTHFINISH FINISH. token [{}], urlToRedirect: [{}], resultCode [{}]", token.getOtt(), urlToRedirect, resultCode); response.sendRedirect(urlToRedirect); } return; }