use of com.github.scribejava.core.oauth.OAuth20Service in project tutorials by eugenp.
the class GithubController method authorization.
@GetMapping(value = "/authorization")
public RedirectView authorization(HttpServletRequest servletReq) throws InterruptedException, ExecutionException, IOException {
String state = String.valueOf(new Random().nextInt(999_999));
OAuth20Service githubService = createService(state);
servletReq.getSession().setAttribute("state", state);
String authorizationUrl = githubService.getAuthorizationUrl();
RedirectView redirectView = new RedirectView();
redirectView.setUrl(authorizationUrl);
return redirectView;
}
use of com.github.scribejava.core.oauth.OAuth20Service in project pac4j by pac4j.
the class OAuth20RedirectActionBuilder method redirect.
@Override
public RedirectAction redirect(final WebContext context) {
try {
final OAuth20Service service;
// with state: generate a state, save it in session and build a new service with this state
if (this.configuration.isWithState()) {
final String state = getStateParameter();
logger.debug("save sessionState: {}", state);
context.getSessionStore().set(context, this.configuration.getStateSessionAttributeName(client.getName()), state);
service = this.configuration.buildService(context, client, state);
} else {
service = this.configuration.buildService(context, client, null);
}
final String authorizationUrl = service.getAuthorizationUrl(this.configuration.getCustomParams());
logger.debug("authorizationUrl: {}", authorizationUrl);
return RedirectAction.redirect(authorizationUrl);
} catch (final OAuthException e) {
throw new TechnicalException(e);
}
}
use of com.github.scribejava.core.oauth.OAuth20Service in project dataverse by IQSS.
the class AbstractOAuth2AuthenticationProvider method getUserRecord.
public OAuth2UserRecord getUserRecord(String code, String state, String redirectUrl) throws IOException, OAuth2Exception {
OAuth20Service service = getService(state, redirectUrl);
OAuth2AccessToken accessToken = service.getAccessToken(code);
final String userEndpoint = getUserEndpoint(accessToken);
final OAuthRequest request = new OAuthRequest(Verb.GET, userEndpoint, service);
request.addHeader("Authorization", "Bearer " + accessToken.getAccessToken());
request.setCharset("UTF-8");
final Response response = request.send();
int responseCode = response.getCode();
final String body = response.getBody();
logger.log(Level.FINE, "In getUserRecord. Body: {0}", body);
if (responseCode == 200) {
final ParsedUserResponse parsed = parseUserResponse(body);
return new OAuth2UserRecord(getId(), parsed.userIdInProvider, parsed.username, OAuth2TokenData.from(accessToken), parsed.displayInfo, parsed.emails);
} else {
throw new OAuth2Exception(responseCode, body, "Error getting the user info record.");
}
}
use of com.github.scribejava.core.oauth.OAuth20Service in project legendarybot by greatman.
the class WoWLinkPlugin method start.
@Override
public void start() {
// Load the configuration
props = new Properties();
try {
props.load(new FileInputStream("app.properties"));
} catch (java.io.IOException e) {
e.printStackTrace();
getBot().getStacktraceHandler().sendStacktrace(e);
}
path("/auth", () -> get("/battlenetcallback", (req, res) -> {
String state = req.queryParams("state");
String region = state.split(":")[0];
OAuth20Service service = new ServiceBuilder(props.getProperty("battlenetoauth.key")).apiSecret(props.getProperty("battlenetoauth.secret")).scope("wow.profile").callback("https://legendarybot.greatmancode.com/auth/battlenetcallback").build(new OAuthBattleNetApi(region));
String oAuthCode = req.queryParams("code");
// TODO: Save oauth code to do a character refresh.
OAuth2AccessToken token = service.getAccessToken(oAuthCode);
OAuthRequest request = new OAuthRequest(Verb.GET, "https://" + region + ".api.battle.net/wow/user/characters");
service.signRequest(token, request);
Response response = service.execute(request);
JSONParser parser = new JSONParser();
JSONObject obj = (JSONObject) parser.parse(response.getBody());
JSONArray charactersArray = (JSONArray) obj.get("characters");
List<WoWCharacter> characterList = new ArrayList<>();
charactersArray.forEach((c) -> {
JSONObject jsonObject = (JSONObject) c;
if (jsonObject.containsKey("guild")) {
characterList.add(new WoWCharacter((String) jsonObject.get("name"), ((String) jsonObject.get("realm")).toLowerCase(), (String) jsonObject.get("guild"), region, HeroClass.values()[((Long) jsonObject.get("class")).intValue()]));
log.info("User " + state.split(":")[1] + " user have the character " + jsonObject.get("name") + " in guild " + jsonObject.get("guild"));
}
});
if (characterList.size() > 0) {
MongoCollection<Document> collection = getBot().getMongoDatabase().getCollection(MONGO_WOW_CHARACTERS_COLLECTION);
characterList.forEach((c) -> collection.updateOne(and(eq("region", c.getRegion()), eq("realm", c.getRealm()), eq("name", c.getCharacterName())), and(set("guild", c.getGuild()), set("owner", state.split(":")[1])), new UpdateOptions().upsert(true)));
}
return "Your WoW characters are now synced to LegendaryBot!";
}));
getBot().getCommandHandler().addCommand("linkwowchars", new LinkWoWCharsCommand(this), "World of Warcraft Character");
getBot().getCommandHandler().addCommand("guildchars", new GuildCharsCommand(this), "World of Warcraft Character");
getBot().getCommandHandler().addCommand("setmainchar", new SetMainCharacterCommand(this), "World of Warcraft Character");
getBot().getCommandHandler().addCommand("enableautorank", new EnableAutoRankCommand(this), "WoW Admin Commands");
getBot().getCommandHandler().addCommand("disableautorank", new DisableAutoRankCommand(this), "WoW Admin Commands");
getBot().getCommandHandler().addCommand("setwowrank", new SetWoWRankCommand(this), "WoW Admin Commands");
getBot().getCommandHandler().addCommand("syncrank", new SyncRankCommand(this), "World of Warcraft Character");
getBot().getCommandHandler().addCommand("syncguild", new SyncGuildCommand(this), "WoW Admin Commands");
getBot().getCommandHandler().addCommand("enableautorankupdate", new EnableAutoRankUpdateCommand(this), "WoW Admin Commands");
getBot().getCommandHandler().addCommand("disableautorankupdate", new DisableAutoRankUpdateCommand(this), "WoW Admin Commands");
// We load the scheduler
getBot().getJDA().forEach((jda -> {
jda.getGuilds().forEach(guild -> {
if (getBot().getGuildSettings(guild).getSetting(SETTING_SCHEDULER) != null && getBot().getGuildSettings(guild).getSetting(SETTING_RANKSET_ENABLED) != null) {
scheduler.put(guild.getId(), new SyncRankScheduler(this, guild));
}
});
}));
}
use of com.github.scribejava.core.oauth.OAuth20Service in project sonarqube by SonarSource.
the class GitHubIdentityProvider method onCallback.
private void onCallback(CallbackContext context) throws InterruptedException, ExecutionException, IOException {
context.verifyCsrfState();
HttpServletRequest request = context.getRequest();
OAuth20Service scribe = newScribeBuilder(context).build(scribeApi);
String code = request.getParameter("code");
OAuth2AccessToken accessToken = scribe.getAccessToken(code);
GsonUser user = gitHubRestClient.getUser(scribe, accessToken);
check(scribe, accessToken, user);
final String email;
if (user.getEmail() == null) {
// if the user has not specified a public email address in their profile
email = gitHubRestClient.getEmail(scribe, accessToken);
} else {
email = user.getEmail();
}
UserIdentity userIdentity = userIdentityFactory.create(user, email, settings.syncGroups() ? gitHubRestClient.getTeams(scribe, accessToken) : null);
context.authenticate(userIdentity);
context.redirectToRequestedPage();
}
Aggregations