use of io.pivotal.cla.data.User in project pivotal-cla by pivotalsoftware.
the class OAuthController method oauth.
@RequestMapping("/login/oauth2/github")
public void oauth(ImportedSignaturesSessionAttr importedSignaturesAttr, HttpServletRequest request, HttpServletResponse response, @RequestParam String code, @RequestParam String state) throws Exception {
String actualState = (String) request.getSession().getAttribute("state");
if (actualState == null || !actualState.equals(state)) {
throw new InvalidSecretState();
}
boolean admin = GitHubAuthenticationEntryPoint.isAdmin(state);
OAuthAccessTokenParams params = new OAuthAccessTokenParams();
params.setCallbackUrl(UrlBuilder.fromRequest(request).callbackUrl());
params.setCode(code);
params.setState(actualState);
CurrentUserRequest userRequest = new CurrentUserRequest();
userRequest.setOauthParams(params);
userRequest.setRequestAdminAccess(admin);
User user = gitHub.getCurrentUser(userRequest);
User existingUser = users.findOne(user.getGitHubLogin());
boolean isNewUser = existingUser == null;
users.save(user);
Authentication authentication = Login.loginAs(user);
if (isNewUser) {
List<IndividualSignature> individualSignatures = individual.findSignaturesFor(new PageRequest(0, 1), user);
boolean signed = !individualSignatures.isEmpty();
if (!signed) {
List<String> organizations = gitHub.getOrganizations(user.getGitHubLogin());
signed = !corporate.findSignatures(new PageRequest(0, 1), organizations, user.getEmails()).isEmpty();
}
if (signed) {
importedSignaturesAttr.setValue(true);
}
}
success.onAuthenticationSuccess(request, response, authentication);
}
Aggregations