コード例 #1
0
  @Override
  public Object authenticate(final Context context, final Object payload) throws AuthException {

    final Request request = context.request();
    final String uri = request.uri();

    if (Logger.isDebugEnabled()) {
      Logger.debug("Returned with URL: '" + uri + "'");
    }

    final Configuration c = getConfiguration();

    final ConsumerKey key =
        new ConsumerKey(
            c.getString(SettingKeys.CONSUMER_KEY), c.getString(SettingKeys.CONSUMER_SECRET));
    final String requestTokenURL = c.getString(SettingKeys.REQUEST_TOKEN_URL);
    final String accessTokenURL = c.getString(SettingKeys.ACCESS_TOKEN_URL);
    final String authorizationURL = c.getString(SettingKeys.AUTHORIZATION_URL);
    final ServiceInfo info =
        new ServiceInfo(requestTokenURL, accessTokenURL, authorizationURL, key);
    final OAuth service = new OAuth(info, true);

    checkError(request);

    if (uri.contains(Constants.OAUTH_VERIFIER)) {

      final RequestToken rtoken =
          (RequestToken) PlayAuthenticate.removeFromCache(context.session(), CACHE_TOKEN);
      final String verifier = Authenticate.getQueryString(request, Constants.OAUTH_VERIFIER);
      final Either<OAuthException, RequestToken> retrieveAccessToken =
          service.retrieveAccessToken(rtoken, verifier);

      if (retrieveAccessToken.isLeft()) {
        throw new AuthException(retrieveAccessToken.left().get().getLocalizedMessage());
      } else {
        final I i = buildInfo(retrieveAccessToken.right().get());
        return transform(i);
      }
    } else {

      final String callbackURL = getRedirectUrl(request);

      final Either<OAuthException, RequestToken> reponse =
          service.retrieveRequestToken(callbackURL);

      if (reponse.isLeft()) {
        // Exception happened
        throw new AuthException(reponse.left().get().getLocalizedMessage());
      } else {
        // All good, we have the request token
        final RequestToken rtoken = reponse.right().get();

        final String token = rtoken.token();
        final String redirectUrl = service.redirectUrl(token);

        PlayAuthenticate.storeInCache(context.session(), CACHE_TOKEN, rtoken);
        return redirectUrl;
      }
    }
  }
コード例 #2
0
 public F.Promise<Result> call(Http.Context ctx) throws Throwable {
   final Request request = ctx.request();
   guiLogger.info(
       request.method()
           + " "
           + request.uri()
           + " ("
           + Controller.session(Users.SESSION_EMAIL)
           + ")");
   return delegate.call(ctx);
 }
コード例 #3
0
 @Test
 public void testUri_asterisk() {
   Request request = new RequestBuilder().method("OPTIONS").uri("*").build();
   assertEquals("*", request.uri());
 }
コード例 #4
0
 @Test
 public void testUri_relative() {
   Request request = new RequestBuilder().uri("/blog").build();
   assertEquals("/blog", request.uri());
 }
コード例 #5
0
 @Test
 public void testUri_absolute() {
   Request request = new RequestBuilder().uri("https://www.benmccann.com/blog").build();
   assertEquals("https://www.benmccann.com/blog", request.uri());
 }
コード例 #6
0
 @Override
 public String getFullRequestURL() {
   return getScheme() + "://" + request.host() + request.uri();
 }