head	1.15;
access;
symbols
	TIGRIS_1_1_0RC2:1.7
	TIGRIS_1_1_0RC1:1.7
	TIGRIS_1_1:1.7.0.4
	TIGRIS_1_0_8:1.7
	TIGRIS_1_0_8RC3:1.7
	TIGRIS_1_0_8RC2:1.7
	TIGRIS_1_0_8RC1:1.7
	TIGRIS_1_0_7:1.7
	TIGRIS_1_0_7RC3:1.7
	TIGRIS_1_0_7RC2:1.7
	TIGRIS_1_0_7RC1:1.7
	TIGRIS_1_0_6:1.7
	TIGRIS_1_0_6RC5:1.7
	TIGRIS_1_0_6RC4:1.7
	TIGRIS_1_0_6RC3:1.7
	TIGRIS_1_0_6RC2:1.7
	TIGRIS_1_0_6RC1:1.7
	TIGRIS_1_0_5:1.7
	TIGRIS_1_0_5RC6:1.7
	TIGRIS_1_0_5RC5:1.7
	TIGRIS_1_0_5RC4:1.7
	TIGRIS_1_0_5RC3:1.7
	TIGRIS_1_0_5RC2:1.7
	TIGRIS_1_0_5RC1:1.7
	TIGRIS_1_0_4:1.7
	TIGRIS_1_0_3:1.7
	TIGRIS_1_0_2:1.7
	TIGRIS_1_0_1:1.7
	TIGRIS_1_0:1.7.0.6
	TIGRIS_1_0_0:1.7
	TIGRIS_1_0_0_RC1:1.7.0.2
	dlr:1.1.1
	TIGRIS_0_9_2_4:1.1.1.1.6.1
	TIGRIS_0_9_2_3:1.1.1.1.6.1
	HELM_PEER_PORT_BRANCH:1.1.1.2
	TURBINE_PEER:1.3
	TIGRIS_0_9_2_1:1.3
	TIGRIS_0_9_2:1.1.1.1.0.6
	TIGRIS_0_9_0:1.1.1.1.0.4
	TIGRIS_0_8_4:1.1.1.1.0.2
	NEWHELM:1.1.1.1
	TIGRIS_NOV_12_2000:1.1.1;
locks; strict;
comment	@# @;


1.15
date	2001.08.11.09.08.01;	author dlr;	state Exp;
branches;
next	1.14;

1.14
date	2001.07.24.00.02.27;	author leonardr;	state Exp;
branches;
next	1.13;

1.13
date	2001.07.19.00.43.33;	author dlr;	state Exp;
branches;
next	1.12;

1.12
date	2001.07.18.10.05.12;	author dlr;	state Exp;
branches;
next	1.11;

1.11
date	2001.07.17.17.55.45;	author leonardr;	state Exp;
branches;
next	1.10;

1.10
date	2001.07.06.19.59.04;	author leonardr;	state Exp;
branches;
next	1.9;

1.9
date	2001.07.05.23.19.55;	author leonardr;	state Exp;
branches;
next	1.8;

1.8
date	2001.05.23.01.50.09;	author dlr;	state Exp;
branches;
next	1.7;

1.7
date	2001.03.23.18.52.47;	author leonardr;	state Exp;
branches;
next	1.6;

1.6
date	2001.03.20.16.42.58;	author leonardr;	state Exp;
branches;
next	1.5;

1.5
date	2001.02.21.01.08.21;	author dlr;	state Exp;
branches;
next	1.4;

1.4
date	2001.01.30.03.29.13;	author jrobbins;	state Exp;
branches;
next	1.3;

1.3
date	2001.01.26.18.29.02;	author edk;	state Exp;
branches
	1.3.2.1;
next	1.2;

1.2
date	2001.01.26.05.24.05;	author edk;	state dead;
branches;
next	1.1;

1.1
date	2000.11.12.21.15.27;	author dlr;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2000.11.12.21.15.27;	author dlr;	state Exp;
branches
	1.1.1.1.6.1;
next	1.1.1.2;

1.1.1.2
date	2001.02.21.00.32.36;	author dlr;	state Exp;
branches;
next	;

1.1.1.1.6.1
date	2001.01.30.04.23.41;	author jrobbins;	state Exp;
branches;
next	;

1.3.2.1
date	2001.01.28.01.02.17;	author dlr;	state dead;
branches;
next	1.3.2.2;

1.3.2.2
date	2001.02.17.01.10.19;	author leonardr;	state Exp;
branches;
next	1.3.2.3;

1.3.2.3
date	2001.02.19.23.05.26;	author dlr;	state Exp;
branches;
next	;


desc
@@


1.15
log
@Upgrading to Turbine 3.0-dev, Fulcrum 1.0, and Torque 1.0.
@
text
@/* ================================================================
 * Copyright (c) 2000-2001 CollabNet.  All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 * 
 * 1. Redistributions of source code must retain the above copyright
 * notice, this list of conditions and the following disclaimer.
 * 
 * 2. Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * 
 * 3. The end-user documentation included with the redistribution, if
 * any, must include the following acknowlegement: "This product includes
 * software developed by CollabNet (http://www.collab.net/)."
 * Alternately, this acknowlegement may appear in the software itself, if
 * and wherever such third-party acknowlegements normally appear.
 * 
 * 4. The hosted project names must not be used to endorse or promote
 * products derived from this software without prior written
 * permission. For written permission, please contact info@@collab.net.
 * 
 * 5. Products derived from this software may not use the "Tigris" name
 * nor may "Tigris" appear in their names without prior written
 * permission of CollabNet.
 * 
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL COLLABNET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
 * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * ====================================================================
 * 
 * This software consists of voluntary contributions made by many
 * individuals on behalf of CollabNet.
 */

package org.tigris.helm.domain;

import java.util.*;

import org.apache.turbine.util.Log;
import org.apache.commons.util.exception.NestableException;

import org.apache.velocity.context.Context;

import org.tigris.helm.om.*;
import org.tigris.helm.security.*;
import org.tigris.helm.tool.HelmEmailer;
import org.tigris.helm.tool.ContextAPI;
import org.tigris.helm.tool.SessionManager;
import org.tigris.helm.tool.PasswordGenerator;

/**
 * Send to the right place.
 */
public class Join extends UserAdd
{
    private static final boolean DEBUG = true;

    /**
     * The action used for registering a user
     */
    private static final String REGISTER_ACTION = "Register";

    /**
     * The field name containing the user's login name
     */
    private static final String LOGIN_NAME_FIELD = "userName";

    /**
     * The field name containing the user's email address
     */
    private static final String EMAIL_FIELD = "email";

    /**
     * The field name containing the user's real name
     */
    private static final String REAL_NAME_FIELD = "realName";

    /**
     * The field name containing the user's organization
     */
    private static final String ORGANIZATION_FIELD = "organization";

    /**
     * Display the UI or add the user(s).
     */
    protected String processRequest(Context context)
        throws NestableException, RedirectException
    {
        String templateName = super.processRequest(context);

        try
        {
            // Get all that user input shlock.
            String loginName = ContextAPI.processField
                (context, LOGIN_NAME_FIELD);
            String email = processEmail(ContextAPI.processField
                                        (context, EMAIL_FIELD));
            String realName = ContextAPI.processField
                (context, REAL_NAME_FIELD);
            String organization = ContextAPI.processField
                (context, ORGANIZATION_FIELD);

            // Process the desired action.
            String action = getAction(context);
            if (REGISTER_ACTION.equals(action))
            {
                StringBuffer buf = new StringBuffer();
                AccessControlList acl = getLoginUser(context).getACL();
                Domain domain = getCurrentDomain(context);

                validate(context, loginName, email, realName, null, null);

                if (ContextAPI.isValidUserInput(context))
                {
                    if (registerUser(acl, domain, context, realName, 
                                     loginName, email, organization))
                    {
                        SessionManager sMgr = getSessionManager(context);
                        if (sMgr.detourTarget() == null)
                        {
                            redirectToNextServletInFlow(action);
                        } 
                        else 
                        {
                            redirectToDetour(context);
                        }
                    }
                    // registerUser() adds the appropriate message on failure.
                }
            }
        }
        catch (RedirectException e)
        {
            throw e;
        }
        catch (Exception e)
        {
            String errMsg = "Unable to register user: " + e.getMessage();
            Log.error(errMsg, e);
            throw new NestableException(e);
        }
        return templateName;

    }

    /**
     * Registers a user with the site.
     */
    private boolean registerUser(AccessControlList acl, Domain domain, 
                                 Context context,
                                 String realName, String loginName, 
                                 String email, String org)
        throws RedirectException
    {
        String passwd = PasswordGenerator.password();
        StringBuffer buf = new StringBuffer();

        try
        {
            User user = User.register(acl, domain, realName, 
                                      loginName, passwd, email, org);
            
            user.sendNewPasswordTicket(context, getSubject(domain), 
                                       NEW_USER_PASSWORD_TICKET_TEMPLATE);
        }
        catch (org.tigris.helm.AlreadyExists e)
        {
            // Report user exists error.
            if (DEBUG) Log.warn(e.getMessage());
            ContextAPI.addError(context, "User already exists: " + loginName);
            return false;
        }
        catch (Exception e)
        {
            String msg = e.getMessage();
            if (DEBUG) Log.error(msg,e);
            redirectToError(context, msg);
        }
        return true;
    }

    public void redirectToNextServletInFlow(String action)
        throws RedirectException
    {
        redirectTo("JoinConfirm");
    }  
}
@


1.14
log
@The final pieces of the error handling revolution.
@
text
@d52 1
a52 1
import org.apache.turbine.util.TurbineException;
d99 1
a99 1
        throws TurbineException, RedirectException
d152 1
a152 1
            throw new TurbineException(e);
@


1.13
log
@Removed Joist dependancies.
@
text
@d182 1
a182 1
            appendToError(context, "User already exists: " + loginName);
@


1.12
log
@Ported Joist Redirect*Exception to Helm.
@
text
@a46 1

a49 1
import java.sql.*;
a52 1
import org.apache.turbine.util.TurbineException;
d56 1
a56 3
import org.tigris.helm.security.RedirectException;
import org.joist.util.PasswordGenerator;

a57 1
import org.tigris.helm.om.*;
d59 1
d61 1
a61 1
import org.tigris.helm.tool.ContextAPI;
@


1.11
log
@Porting of domain package to new error handling API.
@
text
@d59 1
a59 1
import org.joist.security.RedirectException;
@


1.10
log
@Welcome message and password ticket message are both consistently controlled by checkboxes.
@
text
@d66 1
d111 8
a118 4
            String loginName = processField(context, LOGIN_NAME_FIELD);
            String email = processEmail(processField(context, EMAIL_FIELD));
            String realName = processField(context, REAL_NAME_FIELD);
            String organization = processField(context, ORGANIZATION_FIELD);
d122 1
a122 1
            if (action != null && action.equals(REGISTER_ACTION))
a123 2
                List missingFields = new ArrayList();
                List validationErrors = new ArrayList();
d128 1
a128 2
                validate(missingFields, validationErrors, loginName, 
                         email, realName, null, null);
d130 1
a130 1
                if (isValidUserInput(missingFields, validationErrors))
a145 5
                }
                else
                {
                    reportInvalidUserInput(context, missingFields, 
                                           validationErrors);
@


1.9
log
@Use the template to send email instead of making up the body in Java code.
@
text
@d166 3
@


1.8
log
@Ported Helm from WebMacro to Velocity.
@
text
@d180 2
a181 4
            // Mail the password to the user.
            String subject = getSubject(buf, domain, loginName);
            new HelmEmailer().mailUserFromSystem
                (user, subject, getMessage(buf, subject, passwd));
@


1.7
log
@Some fixes for the whole ProjectMembershipRequest/Join/Login/Invitation Rube Goldberg.
@
text
@d54 2
d57 4
a60 1
import org.webmacro.servlet.*;
d65 1
a65 2
import org.joist.security.RedirectException;
import org.joist.util.PasswordGenerator;
d102 2
a103 2
    protected String processRequest(Connection conn, WebContext context)
        throws HandlerException, RedirectException
d105 1
a105 1
        String templateName = super.processRequest(conn, context);
d133 1
a133 2
                        org.joist.session.SessionManager sMgr = 
                            getSessionManager(context);
d160 1
a160 1
            throw new HandlerException(errMsg);
d167 1
a167 1
                                 WebContext context,
@


1.6
log
@Refactored some code (and shamelessly copied some other code) so that Join can work as well as UserAdd.
@
text
@d129 10
a138 1
                        redirectToNextServletInFlow(action);
@


1.5
log
@This is the highest revision from the HELM_PEER_PORT_BRANCH.  The previous import caused too many conflicts to resolve manually
@
text
@d51 1
d57 3
a59 1
import org.tigris.helm.security.HelmServlet;
d61 1
d69 119
@


1.4
log
@implemented join and joinconfirm
@
text
@d2 1
a2 1
 * Copyright (c) 2000 CollabNet.  All rights reserved.
d17 1
a17 1
 * software developed by Collab.Net (http://www.Collab.Net/)."
d27 1
a27 1
 * permission of Collab.Net.
d32 1
a32 1
 * IN NO EVENT SHALL COLLAB.NET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
a49 1
import java.io.*;
a50 3
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
d52 2
a53 1
import org.webmacro.util.*;
a54 7
import org.webmacro.engine.*;
import org.webmacro.broker.*;
import org.webmacro.resource.*;

import org.joist.*;
import org.joist.util.*;
import org.joist.session.*;
a57 7
import org.joist.database.DataManager;


public class Join extends UserAdd {
    public static final  String versionID = "$Id: Join.java,v 1.3 2001/01/26 18:29:02 edk Exp $";
    private static Log log = new Log("Join", "Join servlet");
    private static boolean debug = true;
d59 6
d70 2
a71 5
    }


  
} /* end class Join */
@


1.3
log
@readding all the files as part of the process of returning to the way
things were as of tuesday
@
text
@d71 3
a73 3
public class Join extends org.tigris.helm.security.HelmServlet {
    public static final  String versionID = "$Id: Join.java,v 1.1.1.1 2000/11/12 21:15:27 dlr Exp $";
    private static Log log = new Log("Join", "Tigris StartPage");
d76 3
a78 6
    /**
     *  Display and process the login screen.
     */
    protected String
	processRequest (Connection connection, WebContext context)
	throws HandlerException, RedirectException
d80 2
a81 12
	if (debug) log.debug("Join: started!");

	String templateName = super.processRequest(connection, context);
	

	if (debug) log.debug("Join: step 1");

	HttpServletRequest request = context.getRequest();
	HttpServletResponse response = context.getResponse();
	HttpSession session = context.getSession();
	SessionManager sMgr = getSessionManager(context);
	DataManager dMgr = sMgr.getDataManager();
a82 1
	if (debug) log.debug("Join: step 2");
a83 25
	String action = (String)context.get("action");

        if (debug) log.debug("Join: step 3");

	try {
	    String userID = sMgr.getUserID();
	    if (debug) log.debug("Join: userID=" + userID );
	    String loginID = sMgr.getLoginID();
	    context.put("loginID", loginID);
	    if (debug) log.debug("Join: loginID=" + loginID );
	}
	catch (Exception e) {
	    log.exception(e);
	    String message = "Join: " + e.getMessage();
	    if (debug) log.debug(message);
	    context.put("message", message);
	}
	
	
	if (debug) log.debug("Join: action=" + action );

	if (debug) log.debug("Join:  done");

        return templateName;
    }
@


1.3.2.1
log
@Porting to the Turbine Peer system.  -dlr and leonardr
@
text
@d72 1
a72 1
    public static final  String versionID = "$Id: Join.java,v 1.3 2001/01/26 18:29:02 edk Exp $";
@


1.3.2.2
log
@Ported Join servlet, such as it is.
@
text
@d2 1
a2 1
 * Copyright (c) 2000-2001 CollabNet.  All rights reserved.
d17 1
a17 1
 * software developed by CollabNet (http://www.collab.net/)."
d27 1
a27 1
 * permission of CollabNet.
d32 1
a32 1
 * IN NO EVENT SHALL COLLABNET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
d50 1
d52 3
a54 2
import java.sql.Connection;

d56 1
d58 7
a64 1
import org.apache.turbine.util.Log;
d68 2
d71 13
d85 2
a86 3
public class Join extends UserAdd {
    public static final  String versionID = "$Id: Join.java,v 1.4 2001/01/30 03:29:13 jrobbins Exp $";
    private static boolean DEBUG = true;
d88 36
a123 5
    public void redirectToNextServletInFlow(String action)
        throws RedirectException
    {
        redirectTo("JoinConfirm");
    }  
@


1.3.2.3
log
@Clean up.
@
text
@d51 1
a52 1
import org.apache.turbine.util.Log;
d55 1
d60 4
a63 6
/**
 * Send to the right place.
 */
public class Join extends UserAdd
{
    private static final boolean DEBUG = true;
d70 1
a70 1
}
@


1.2
log
@revert this stuff to its state as of 2001/01/24 12:42:00 GMT -- with
the following exceptions, which have some different modifications so
they'll work with changes which have happened in joist:

ProjectNewsEdit.java
SkinManager.java
SkinStyleElementValueManager.java
StyleElementManager.java
StyleManager.java

it compiles.  i dunno if it works, though.
@
text
@d72 1
a72 1
    public static final  String versionID = "$Id: Join.java,v 1.1 2000/11/12 21:15:27 dlr Exp $";
@


1.1
log
@Initial revision
@
text
@d72 1
a72 1
    public static final  String versionID = "$Id: Join.java,v 1.3 2000/11/06 06:15:30 edk Exp $";
@


1.1.1.1
log
@Merging newhelm tree into helm, as per IZ issue #557.  Previous major version of helm is tagged TIGRIS_NOV_11_2000.
@
text
@@


1.1.1.2
log
@Replacing the HEAD with the HELM_PEER_PORT_BRANCH.
@
text
@d2 1
a2 1
 * Copyright (c) 2000-2001 CollabNet.  All rights reserved.
d17 1
a17 1
 * software developed by CollabNet (http://www.collab.net/)."
d27 1
a27 1
 * permission of CollabNet.
d32 1
a32 1
 * IN NO EVENT SHALL COLLABNET OR ITS CONTRIBUTORS BE LIABLE FOR ANY
d50 1
d52 3
d56 1
a56 2
import org.apache.turbine.util.Log;

d58 7
d68 1
a69 6
/**
 * Send to the right place.
 */
public class Join extends UserAdd
{
    private static final boolean DEBUG = true;
d71 11
a81 2
    public void redirectToNextServletInFlow(String action)
        throws RedirectException
d83 42
a124 3
        redirectTo("JoinConfirm");
    }  
}
@


1.1.1.1.6.1
log
@moved changes from HEAD
@
text
@d71 3
a73 3
public class Join extends UserAdd {
    public static final  String versionID = "$Id: Join.java,v 1.4 2001/01/30 03:29:13 jrobbins Exp $";
    private static Log log = new Log("Join", "Join servlet");
d76 21
d98 20
a117 5
    public void redirectToNextServletInFlow(String action)
        throws RedirectException
    {
        redirectTo("JoinConfirm");
    }
d119 1
d121 2
@

