All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.clouway.oauth2.IdentityController Maven / Gradle / Ivy

package com.clouway.oauth2;

import com.clouway.friendlyserve.Request;
import com.clouway.friendlyserve.Response;
import com.clouway.friendlyserve.RsRedirect;
import com.clouway.oauth2.user.ResourceOwnerIdentityFinder;
import com.google.common.base.Optional;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

/**
 * IdentityController is responsible for determining the Identity of the caller. Sent request to this controller
 * should contain information about the client application and for Granting User (user session is determined from {@link Request}).
 * 

* * @author Miroslav Genov ([email protected]) */ final class IdentityController implements InstantaneousRequest { private final ResourceOwnerIdentityFinder identityFinder; private final IdentityActivity identityActivity; private final String loginPageUrl; IdentityController(ResourceOwnerIdentityFinder identityFinder, IdentityActivity identityActivity, String loginPageUrl) { this.identityFinder = identityFinder; this.identityActivity = identityActivity; this.loginPageUrl = loginPageUrl; } @Override public Response handleAsOf(Request request, DateTime instantTime) { Optional optIdentity = identityFinder.find(request, instantTime); // Browser should be redirected to login page when Identity is not found if (!optIdentity.isPresent()) { String continueTo = queryParams(request); return new RsRedirect(loginPageUrl + continueTo); } return identityActivity.execute(optIdentity.get(), request); } private String queryParams(Request request) { String params = ""; for (String param : request.names()) { params += "&" + param + "=" + request.param(param); } try { return URLEncoder.encode(request.path() + "?" + params.substring(1, params.length()), "UTF-8"); } catch (UnsupportedEncodingException e) { return ""; } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy