/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ /* * UserServiceImpl.java * * Created on 25. September 2003, 12:53 */ package Sirius.server.middleware.impls.proxy; //import Sirius.middleware.interfaces.domainserver.*; import Sirius.server.newuser.User; import Sirius.server.newuser.UserException; import Sirius.server.newuser.UserGroup; import Sirius.server.newuser.UserServer; import org.apache.log4j.Logger; import java.rmi.RemoteException; import java.util.Collection; import java.util.Hashtable; import java.util.Iterator; import java.util.Vector; /** * DOCUMENT ME! * * @author awindholz * @version $Revision$, $Date$ */ public class UserServiceImpl { //~ Static fields/initializers --------------------------------------------- private static final transient Logger LOG = Logger.getLogger(UserServiceImpl.class); private static final String DOMAINSPLITTER = "@"; //~ Instance fields -------------------------------------------------------- private UserServer userServer; private Hashtable activeLocalServers; //~ Constructors ----------------------------------------------------------- /** * Creates a new instance of UserServiceImpl. * * @param activeLocalServers DOCUMENT ME! * @param userServer DOCUMENT ME! * * @throws RemoteException DOCUMENT ME! */ public UserServiceImpl(final Hashtable activeLocalServers, final UserServer userServer) throws RemoteException { this.activeLocalServers = activeLocalServers; this.userServer = userServer; } //~ Methods ---------------------------------------------------------------- /** * Wie konnte das jemals gehen Falsche Reihenfolge in Signatur public User getUser( String userLsName, String * userName, String userGroupLsName, String userGroupName, String password) throws RemoteException, UserException {. * * @param userGroupLsName DOCUMENT ME! * @param userGroupName DOCUMENT ME! * @param userLsName DOCUMENT ME! * @param userName DOCUMENT ME! * @param password DOCUMENT ME! * * @return DOCUMENT ME! * * @throws RemoteException DOCUMENT ME! * @throws UserException DOCUMENT ME! */ public User getUser(final String userGroupLsName, final String userGroupName, final String userLsName, final String userName, final String password) throws RemoteException, UserException { if (LOG.isDebugEnabled()) { LOG.debug("getUser calles for user::" + userName); // NOI18N LOG.debug("userLsName:" + userLsName); // NOI18N LOG.debug("userName:" + userName); // NOI18N LOG.debug("userGroupLsName:" + userGroupLsName); // NOI18N LOG.debug("userGroupName:" + userGroupName); // NOI18N LOG.debug((("password:" + password) == null) ? "null" : "*****"); // NOI18N } final User u = userServer.getUser(userLsName, userGroupName, userGroupLsName, userName, password); boolean validated = false; if (u != null) { final Sirius.server.middleware.interfaces.domainserver.UserService us = (Sirius.server.middleware.interfaces.domainserver.UserService)activeLocalServers.get(userLsName); if (us != null) { validated = us.validateUser(u, password); } else { throw new UserException( "Login failed, home server of the user is not reachable :: " + userName, // NOI18N false, false, false, true); } } if (validated) { return u; } throw new UserException("Login failed :: " + userName, false, true, false, false); // NOI18N } /** * result contains strings. * * @return DOCUMENT ME! * * @throws RemoteException DOCUMENT ME! */ public Vector getUserGroupNames() throws RemoteException { if (LOG.isDebugEnabled()) { LOG.debug("getUserGroupName called"); // NOI18N } final Vector names = new Vector(20, 20); final Collection c = userServer.getUserGroups(); final Iterator i = c.iterator(); while (i.hasNext()) { final UserGroup tmpUserGroup; final String[] s = new String[2]; tmpUserGroup = (UserGroup)i.next(); s[0] = tmpUserGroup.getName(); s[1] = tmpUserGroup.getDomain(); names.add(s); } return names; } /** * result contains string[2] subset of all ugs. * * @param userName DOCUMENT ME! * @param lsHome DOCUMENT ME! * * @return DOCUMENT ME! * * @throws RemoteException DOCUMENT ME! */ public Vector getUserGroupNames(final String userName, final String lsHome) throws RemoteException { if (LOG.isDebugEnabled()) { LOG.debug("getUserGroupNames called for :username:" + userName); // NOI18N } return userServer.getUserGroupNames(userName.trim(), lsHome.trim()); } /** * DOCUMENT ME! * * @param user DOCUMENT ME! * @param oldPassword DOCUMENT ME! * @param newPassword DOCUMENT ME! * * @return DOCUMENT ME! * * @throws RemoteException DOCUMENT ME! * @throws UserException DOCUMENT ME! */ public boolean changePassword(final User user, final String oldPassword, final String newPassword) throws RemoteException, UserException { if (LOG.isDebugEnabled()) { LOG.debug("changePassword called for :user:" + user); // NOI18N } return ((Sirius.server.middleware.interfaces.domainserver.UserService)activeLocalServers.get(user.getDomain())) .changePassword(user, oldPassword, newPassword); } /** * DOCUMENT ME! * * @param user DOCUMENT ME! * @param key DOCUMENT ME! * * @return DOCUMENT ME! * * @throws RemoteException DOCUMENT ME! */ public String getConfigAttr(final User user, final String key) throws RemoteException { final String domain; final String realKey; if (key.contains(DOMAINSPLITTER)) { final String[] split = key.split(DOMAINSPLITTER); domain = split[1]; realKey = split[0]; } else { domain = user.getDomain(); realKey = key; } return ((Sirius.server.middleware.interfaces.domainserver.UserService)activeLocalServers.get(domain)) .getConfigAttr(user, realKey); } }