Package de.deltatree.social.web.filter.impl

Source Code of de.deltatree.social.web.filter.impl.DefaultSASFHelper

package de.deltatree.social.web.filter.impl;

import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.brickred.socialauth.AuthProvider;
import org.brickred.socialauth.Contact;
import org.brickred.socialauth.Profile;
import org.brickred.socialauth.SocialAuthManager;

import de.deltatree.social.web.filter.api.SASFHelper;
import de.deltatree.social.web.filter.api.security.SASFSecurityException;
import de.deltatree.social.web.filter.api.security.SASFSocialAuthManager;
import de.deltatree.social.web.filter.impl.props.SASFProperties;

public class DefaultSASFHelper implements SASFHelper, Serializable {

  private final static long serialVersionUID = 2188168359053036053L;

  private final static String SESSION_KEY = "S_SASFHelper";
  private final static String SESSION_SOCIAL_AUTH_PROVIDER = "SESSION_SOCIAL_AUTH_PROVIDER";
  private final static String SESSION_SOCIAL_AUTH_MANAGER = "SESSION_SOCIAL_AUTH_MANAGER";
  private final static String SESSION_ERROR = "S_SASFError";
  private final static String SESSION_ERROR_CAUSE = "S_SASFErrorCause";
  private final SASFSocialAuthManager sdbSocialAuthManager;
  private final HttpServletRequest request;
  private final HttpSession session;
  private final SASFProperties props;

  public DefaultSASFHelper(final HttpServletRequest req,
      final SASFProperties props,
      final SASFSocialAuthManager sdbSocialAuthManager,
      final HttpSession session) throws SASFSecurityException {
    this.request = req;
    this.props = props;
    this.sdbSocialAuthManager = sdbSocialAuthManager;
    this.session = session;
    setSessionKey();
  }

  private void setSessionKey() {
    this.session.setAttribute(SESSION_KEY, this);
  }

  @Override
  public SASFSocialAuthManager getMgr() {
    return sdbSocialAuthManager;
  }

  @Override
  public void setError(final String message, final Throwable cause) {
    this.session.setAttribute(SESSION_ERROR, message);
    this.session.setAttribute(SESSION_ERROR_CAUSE, cause);
  }

  @Override
  public String getError() {
    return (String) this.getSession().getAttribute(SESSION_ERROR);
  }

  @Override
  public Throwable getErrorCause() {
    return (Throwable) this.getSession().getAttribute(SESSION_ERROR_CAUSE);
  }

  @Override
  public String getErrorCauseAsString() {
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    Throwable errorCause = getErrorCause();
    if (errorCause != null) {
      errorCause.printStackTrace(new PrintStream(bos));
    }
    return bos.toString();
  }

  @Override
  public void setProvider(final AuthProvider provider) {
    this.session.setAttribute(
        DefaultSASFHelper.SESSION_SOCIAL_AUTH_PROVIDER, provider);
  }

  @Override
  public AuthProvider getProvider() {
    return (AuthProvider) this.getSession().getAttribute(
        DefaultSASFHelper.SESSION_SOCIAL_AUTH_PROVIDER);
  }

  @Override
  public void setAuthManager(final SocialAuthManager socialAuthManager) {
    this.session.setAttribute(
        DefaultSASFHelper.SESSION_SOCIAL_AUTH_MANAGER,
        socialAuthManager);
  }

  @Override
  public SocialAuthManager getAuthManager() {
    return (SocialAuthManager) this.getSession().getAttribute(
        DefaultSASFHelper.SESSION_SOCIAL_AUTH_MANAGER);
  }

  @Override
  public String getServletMain() {
    return this.request.getContextPath() + props.getServletMain();
  }

  @Override
  public String getServletSuccess() {
    return this.request.getContextPath() + props.getServletMainSuccess();
  }

  @Override
  public String getOpenidReturnUrl() {
    String returnUrl = getURLWithContextPath()
        + this.props.getOpenidReturnUrl();
    return returnUrl;
  }

  private String getURLWithContextPath() {
    StringBuffer sb = new StringBuffer();
    String protocol = request.getScheme();
    String host = request.getServerName();
    int port = request.getServerPort();
    String context = request.getContextPath();
    sb.append(protocol);
    sb.append("://");
    sb.append(host);
    if (port > 0) {
      if (!(protocol.equals("http") && port == 80)
          && !(protocol.equals("https") && port == 443)) {
        sb.append(":");
        sb.append(port);
      }
    }
    sb.append(context);
    return sb.toString();

  }

  @Override
  public String getWebappSuccessAction() {
    return this.request.getContextPath() + props.webappSuccessAction();
  }

  @Override
  public String getServletLogoff() {
    return this.request.getContextPath() + props.getServletMainLogoff();
  }

  @Override
  public String getErrorPage() {
    return this.request.getContextPath() + props.getErrorPage();
  }

  @Override
  public SASFProperties getProps() {
    return props;
  }

  @Override
  public Profile getProfile() {
    Profile profile = null;
    SocialAuthManager manager = getAuthManager();
    if (manager != null) {
      try {
        AuthProvider provider = manager.getCurrentAuthProvider();
        profile = provider.getUserProfile();

      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    return profile;
  }

  @Override
  public List<Contact> getContactList() {
    List<Contact> contactsList = null;
    SocialAuthManager manager = getAuthManager();
    if (manager != null) {
      contactsList = new ArrayList<Contact>();
      try {
        AuthProvider provider = manager.getCurrentAuthProvider();
        contactsList = provider.getContactList();
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    return contactsList;
  }

  public HttpSession getSession() {
    return session;
  }
}
TOP

Related Classes of de.deltatree.social.web.filter.impl.DefaultSASFHelper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.