Package org.projectforge.ldap

Source Code of org.projectforge.ldap.LdapLoginHandler

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2014 Kai Reinhard (k.reinhard@micromata.de)
//
// ProjectForge is dual-licensed.
//
// This community edition is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as published
// by the Free Software Foundation; version 3 of the License.
//
// This community edition is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
// Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, see http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.ldap;

import java.util.List;

import javax.naming.NamingException;
import javax.naming.directory.DirContext;

import org.projectforge.access.AccessChecker;
import org.projectforge.core.ConfigXml;
import org.projectforge.registry.Registry;
import org.projectforge.user.LoginDefaultHandler;
import org.projectforge.user.LoginHandler;
import org.projectforge.user.PFUserDO;
import org.projectforge.user.UserDao;
import org.projectforge.user.UserRights;

public abstract class LdapLoginHandler implements LoginHandler
{
  private static final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(LdapSlaveLoginHandler.class);

  UserDao userDao;

  AccessChecker accessChecker;

  LdapConnector ldapConnector;

  LdapGroupDao ldapGroupDao;

  LdapUserDao ldapUserDao;

  LdapConfig ldapConfig;

  LdapOrganizationalUnitDao ldapOrganizationalUnitDao;

  protected LoginDefaultHandler loginDefaultHandler;

  protected String baseDN, userBase, groupBase;

  /**
   * @see org.projectforge.user.LoginHandler#initialize()
   */
  @Override
  public void initialize()
  {
    if (ldapConfig == null) {
      // May-be already set by test class.
      this.ldapConfig = ConfigXml.getInstance().getLdapConfig();
      if (ldapConfig == null || ldapConfig.getServer() == null) {
        log.warn("No LDAP configured in config.xml, so any login will be impossible!");
      }
    }
    baseDN = ldapConfig.getBaseDN();
    userBase = ldapConfig.getUserBase();
    groupBase = ldapConfig.getGroupBase();
    ldapConnector = new LdapConnector(ldapConfig);
    ldapGroupDao = new LdapGroupDao();
    ldapGroupDao.setLdapConnector(ldapConnector);
    if (ldapUserDao == null) {
      // May-be already set by test class.
      ldapUserDao = new LdapUserDao();
      ldapUserDao.setLdapConnector(ldapConnector);
      ldapUserDao.setLdapPersonDao((LdapPersonDao)new LdapPersonDao().setLdapConnector(ldapConnector));
    }
    if (ldapOrganizationalUnitDao == null) {
      // May-be already set by test class.
      ldapOrganizationalUnitDao = new LdapOrganizationalUnitDao();
      ldapOrganizationalUnitDao.setLdapConnector(ldapConnector);
    }
    final Registry registry = Registry.instance();
    userDao = (UserDao) registry.getDao(UserDao.class);
    accessChecker = UserRights.getAccessChecker();
    loginDefaultHandler = new LoginDefaultHandler();
    loginDefaultHandler.initialize();
  }

  /**
   * Calls {@link LoginDefaultHandler#checkStayLoggedIn(PFUserDO)}.
   * @see org.projectforge.user.LoginHandler#checkStayLoggedIn(org.projectforge.user.PFUserDO)
   */
  @Override
  public boolean checkStayLoggedIn(final PFUserDO user)
  {
    return loginDefaultHandler.checkStayLoggedIn(user);
  }

  /**
   * Does nothing at default.
   * @see org.projectforge.user.LoginHandler#passwordChanged(org.projectforge.user.PFUserDO, java.lang.String)
   */
  @Override
  public void passwordChanged(final PFUserDO user, final String newPassword)
  {
  }

  public boolean isAdminUser(final PFUserDO user)
  {
    return loginDefaultHandler.isAdminUser(user);
  }

  protected List<LdapUser> getAllLdapUsers()
  {
    final String organizationalUnits = ldapConfig.getUserBase();
    final List<LdapUser> ldapUsers = ldapUserDao.findAll(organizationalUnits);
    return ldapUsers;
  }

  protected List<LdapUser> getAllLdapUsers(final DirContext ctx) throws NamingException
  {
    final String organizationalUnits = ldapConfig.getUserBase();
    final List<LdapUser> ldapUsers = ldapUserDao.findAll(ctx, organizationalUnits);
    return ldapUsers;
  }

  protected List<LdapGroup> getAllLdapGroups()
  {
    final String organizationalUnits = ldapConfig.getGroupBase();
    final List<LdapGroup> ldapGroups = ldapGroupDao.findAll(organizationalUnits);
    return ldapGroups;
  }

  protected List<LdapGroup> getAllLdapGroups(final DirContext ctx) throws NamingException
  {
    final String organizationalUnits = ldapConfig.getGroupBase();
    final List<LdapGroup> ldapGroups = ldapGroupDao.findAll(ctx, organizationalUnits);
    return ldapGroups;
  }

  /**
   * @return true (ldap as an external user management system is supported).
   * @see org.projectforge.user.LoginHandler#hasExternalUsermanagementSystem()
   */
  @Override
  public boolean hasExternalUsermanagementSystem()
  {
    return true;
  }
}
TOP

Related Classes of org.projectforge.ldap.LdapLoginHandler

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.