use of com.epam.reportportal.auth.oauth.OAuthProvider in project service-authorization by reportportal.
the class OAuthConfigurationEndpoint method updateOAuthSettings.
/**
* Updates oauth integration settings
*
* @param profileId settings ProfileID
* @param oauthDetails OAuth details resource update
* @param oauthProviderName ID of third-party OAuth provider
* @return All defined OAuth integration settings
*/
@RequestMapping(value = "/{authId}", method = { POST, PUT })
@ResponseBody
@ResponseStatus(HttpStatus.OK)
@ApiOperation(value = "Updates OAuth Integration Settings", notes = "'default' profile is using till additional UI implementations")
public Map<String, OAuthDetailsResource> updateOAuthSettings(@PathVariable String profileId, @PathVariable("authId") String oauthProviderName, @RequestBody @Validated OAuthDetailsResource oauthDetails) {
Optional<OAuthProvider> oAuthProvider = Optional.ofNullable(providers.get(oauthProviderName));
BusinessRule.expect(oAuthProvider, isPresent()).verify(ErrorType.OAUTH_INTEGRATION_NOT_FOUND, profileId);
ServerSettings settings = repository.findOne(profileId);
BusinessRule.expect(settings, Predicates.notNull()).verify(ErrorType.SERVER_SETTINGS_NOT_FOUND, profileId);
Map<String, OAuth2LoginDetails> serverOAuthDetails = Optional.ofNullable(settings.getoAuth2LoginDetails()).orElse(new HashMap<>());
OAuth2LoginDetails loginDetails = OAuthDetailsConverters.FROM_RESOURCE.apply(oauthDetails);
oAuthProvider.get().applyDefaults(loginDetails);
serverOAuthDetails.put(oauthProviderName, loginDetails);
settings.setoAuth2LoginDetails(serverOAuthDetails);
repository.save(settings);
return serverOAuthDetails.entrySet().stream().collect(toMap(Map.Entry::getKey, e -> OAuthDetailsConverters.TO_RESOURCE.apply(e.getValue())));
}
Aggregations