head	1.7;
access;
symbols
	TIGRIS_NOV_12_2000:1.6
	OLDHELM:1.6.0.4
	TIGRIS_NOV_11_2000:1.6
	TIGRIS_SEP_13_2000:1.6.0.2
	TIGRIS_BASELINE:1.6;
locks; strict;
comment	@# @;


1.7
date	2000.11.12.23.10.06;	author dlr;	state dead;
branches;
next	1.6;

1.6
date	2000.09.20.03.13.14;	author brian;	state Exp;
branches;
next	1.5;

1.5
date	2000.08.30.00.51.48;	author leonardr;	state Exp;
branches;
next	1.4;

1.4
date	2000.06.22.23.39.30;	author dlr;	state Exp;
branches;
next	1.3;

1.3
date	2000.04.18.00.10.33;	author jrobbins;	state Exp;
branches;
next	1.2;

1.2
date	2000.02.03.04.21.31;	author jrobbins;	state Exp;
branches;
next	1.1;

1.1
date	2000.01.30.01.59.36;	author jrobbins;	state Exp;
branches;
next	;


desc
@@


1.7
log
@Does not exist--possibly only WRT this location--in newhelm.
@
text
@/* ================================================================
 * Copyright (c) 2000 Collab.Net.  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 Collab.Net (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 Collab.Net.
 * 
 * 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 COLLAB.NET 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 Collab.Net.
 */


package org.tigris.helm.admin;

import org.webmacro.util.*;
import org.webmacro.servlet.*;
import org.webmacro.engine.*;
import org.webmacro.broker.*;

import javax.servlet.*;
import javax.servlet.http.*;

import java.sql.*;
import java.io.IOException;
import com.sun.java.util.collections.ArrayList;
import com.sun.java.util.collections.Iterator;
import com.sun.java.util.collections.Vector;

import org.joist.security.PermissionSet;
import org.joist.security.RedirectException;
import org.joist.security.SecureServlet;
import org.joist.session.SessionManager;
import org.joist.database.DataManager;

import org.tigris.helm.database.ModulePrivs;
import org.tigris.helm.database.TUserManager;
import org.tigris.helm.tool.InnerNavPopulator;

/**
 * Edit the permissions of a user for a given module. If no username
 * is given, displayes preferences for the current user.
 */
public class ModuleUserEdit extends SecureServlet {
  static private Log log = new Log("modUsrEdt", "ModuleUserEdit");
  static private boolean debug = true;

  protected String processRequest(Connection connection, WebContext context)
    throws HandlerException, RedirectException
  {
    String templateName = super.processRequest(connection, context);
    // super sets $UserName, Cancel

    SessionManager sMgr = getSessionManager(context);
    DataManager dMgr = sMgr.getDataManager();
    TUserManager uMgr = (TUserManager)
        dMgr.getManager("org.tigris.helm.database.TUserManager");
    
    // Get the userID and permissions of the person who logged in.
    String loginUserID = (String)context.get("loginUserID");
    PermissionSet userPerms = (PermissionSet)context.get("UserPermissions");
      
    String username = (String) context.getForm("user");
    context.put("user", username);
    if (debug) log.debug("ModuleUserEdit: username=" + username);
    
    String project = context.getForm("project");
    if (project == null)
	    redirectToError(context, "ModuleUserEdit: No project specified");
    context.put("project", project);
    if (debug) log.debug("ModuleUserEdit: project=" + project);
    InnerNavPopulator.Populate(connection,context,true);
    
    String module = context.getForm("module");
    if (module == null)
	    redirectToError(context, "ModuleUserEdit: No module specified");
    context.put("module", module);
    if (debug) log.debug("ModuleUserEdit: module=" + module);


      boolean loginUserIsModuleOwner = false;
      context.put("loginUserIsModuleOwner", Boolean.FALSE);
      
      try {
	  String loginUserName = uMgr.getLoginID(connection, loginUserID);
	  loginUserIsModuleOwner = uMgr.isModuleOwner(connection,
					     loginUserName, project,
					     module);
	  context.put("loginUserIsModuleOwner",
		      loginUserIsModuleOwner ? Boolean.TRUE : Boolean.FALSE);
      }
      catch (SQLException e) {
	  log.exception(e);
	  String message = e.getMessage();
	  if (debug) log.debug(message);
      }
      catch (TUserManager.NoSuchUserException e) {
	  log.exception(e);
	  String message =  e.getMessage();
	  if (debug) log.debug(message);
      }
    


    ModulePrivs modulePrivs = null;
    //TODO: use sXc privileges
    try {
	modulePrivs = new ModulePrivs(connection, username, project, module);
    }
    catch (SQLException e) {
      log.exception(e);
      String message = "ModuleUserEdit: " + e.getMessage();
      if (debug) log.debug(message);
      context.put("message", "ModuleUserEdit got an SQLException");
      context.put("privList", new Vector(1));
    }
    catch (ModulePrivs.ModuleDoesNotExist e) {
      log.exception(e);
      String message = "ModuleUserEdit: " + e.getMessage();
      if (debug) log.debug(message);
      context.put("message", "ModuleUserEdit got an ModuleDoesNotExist");
      context.put("privList", new Vector(1));
    }

    // Determine which button was pushed
    String action = (String) context.get("action");
        
    context.put("changed", Boolean.FALSE);
    
    if (action.equals("Change Privleges") &&
	userPerms.accessAllowed("ModuleUser - Change") &&
	loginUserIsModuleOwner) {
	if (debug) log.debug("Button=Change Privleges");
	
	try {
	    //TODO: use sXc privleges
	    Iterator i = modulePrivs.getPrivNames().iterator();
	    while (i.hasNext()) {
		String priv = (String)i.next();
		modulePrivs.setPrivilege(priv,
					 context.getForm(priv) != null);
		if (debug) log.debug("changed priv:" + priv);
		context.put("changed", Boolean.TRUE);
	    }
	    String isModuleOwner = context.getForm("isModuleOwner");
	    boolean mo = isModuleOwner != null && !isModuleOwner.equals("");
	    if (debug) log.debug("module owner=" + mo);
	    uMgr.setModuleOwner(connection, username, project, module, mo);
	}
	catch (SQLException e) {
	    log.exception(e);
	    String message = "ProjectUserEdit: " + e.getMessage();
	    if (debug) log.debug(message);
	    throw new HandlerException(e.getMessage());
	}
	catch (TUserManager.NoSuchUserException e) {
	    log.exception(e);
	    String message = "ModuleUserEdit: " + e.getMessage();
	    if (debug) log.debug(message);
	}
    }

    context.put("isModuleOwner", Boolean.FALSE);

    try {
	modulePrivs = new ModulePrivs(connection, username, project, module);
	// Obtain information from module_privs table
	// TODO: use sXc permissions
	context.put("privList", modulePrivs.getPrivArray());

	boolean isModuleOwner = uMgr.isModuleOwner(connection,
						   username, project,
						   module);
	context.put("isModuleOwner",
		    isModuleOwner ? Boolean.TRUE : Boolean.FALSE);
    }
    catch (SQLException e) {
      log.exception(e);
      String message = "ModuleUserEdit: " + e.getMessage();
      if (debug) log.debug(message);
      context.put("message", "ModuleUserEdit got an SQLException");
      context.put("privList", new Vector(1));
    }
    catch (ModulePrivs.ModuleDoesNotExist e) {
      log.exception(e);
      String message = "ModuleUserEdit: " + e.getMessage();
      if (debug) log.debug(message);
      context.put("message", "ModuleUserEdit got an ModuleDoesNotExist");
      context.put("privList", new Vector(1));
    }
    catch (TUserManager.NoSuchUserException e) {
      log.exception(e);
      String message = "ModuleUserEdit: " + e.getMessage();
      if (debug) log.debug(message);
    }

    
    
    return templateName;
  }

} /* end class ModuleUserEdit */


@


1.6
log
@
Obtained from:
Submitted by:
Reviewed by:

Moved from org.helm to org.tigris.helm
Moved from org/helm to org/tigris/helm

perl -pi.bak -e, how I love thee

note: this update was done POST-CVS-REPOSITORY surgury.  In order to
get this right, you may need to remove the directories

$CVSROOT/helm/java/org/helm
$CVSROOT/helm/data/htdoc/look/www/org/helm
$CVSROOT/helm/templates/org/helm

before doing the "CVS update" call, since those directories don't
exist anymore and CVS will try to create lockfiles for you in them,
giving you an error.
@
text
@@


1.5
log
@Initial commit.
PR:
Obtained from:
Submitted by:
Reviewed by:
@
text
@d48 1
a48 1
package org.helm.admin;
d70 3
a72 3
import org.helm.database.ModulePrivs;
import org.helm.database.TUserManager;
import org.helm.tool.InnerNavPopulator;
d91 1
a91 1
        dMgr.getManager("org.helm.database.TUserManager");
@


1.4
log
@Switched from DataManager.getXxxManger() API to DataManager.getManager("xxx.xxx.xxx").  Please note that this has the possiblity of introducing minor bugs if I did not type all the fully qualified class names properly.
@
text
@d72 1
d106 1
@


1.3
log
@switched from collections2.jar to collections.jar
@
text
@d89 2
a90 1
    TUserManager uMgr = (TUserManager) dMgr.getUserManager();
@


1.2
log
@Added tigris.org license
PR:
Obtained from:
Submitted by:
Reviewed by:
@
text
@d60 3
a62 3
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Vector;
@


1.1
log
@initial checking
@
text
@d1 46
a46 1
// Copyright (c) 2000 Collab.Net, Inc. All Rights Reserved.
@

