You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@continuum.apache.org by ca...@apache.org on 2006/09/11 12:10:16 UTC
svn commit: r442161 - in
/maven/continuum/branches/continuum-acegi/continuum-webapp/src/main:
java/org/apache/maven/continuum/web/action/ProjectGroupPermissionsAction.java
webapp/projectGroupPermissions.jsp
Author: carlos
Date: Mon Sep 11 03:10:15 2006
New Revision: 442161
URL: http://svn.apache.org/viewvc?view=rev&rev=442161
Log:
More work on project group permissions
Modified:
maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupPermissionsAction.java
maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/projectGroupPermissions.jsp
Modified: maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupPermissionsAction.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupPermissionsAction.java?view=diff&rev=442161&r1=442160&r2=442161
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupPermissionsAction.java (original)
+++ maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/java/org/apache/maven/continuum/web/action/ProjectGroupPermissionsAction.java Mon Sep 11 03:10:15 2006
@@ -16,14 +16,14 @@
* limitations under the License.
*/
-import java.util.HashMap;
-import java.util.Iterator;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.maven.continuum.ContinuumException;
import org.apache.maven.continuum.model.project.ProjectGroup;
import org.apache.maven.user.model.InstancePermissions;
+import org.apache.maven.user.model.User;
import org.apache.maven.user.model.UserManager;
/**
@@ -50,7 +50,9 @@
private InstancePermissions[] userPermissions;
- private Map map = new HashMap();
+ private String[] userNames;
+
+ private Map map;
public void setProjectGroup( ProjectGroup projectGroup )
{
@@ -92,6 +94,16 @@
this.map = map;
}
+ public void setUserNames( String[] userNames )
+ {
+ this.userNames = userNames;
+ }
+
+ public String[] getUserNames()
+ {
+ return userNames;
+ }
+
public String execute()
throws ContinuumException
{
@@ -100,38 +112,56 @@
setUserPermissions( (InstancePermissions[]) userPermissionsAsList.toArray( new InstancePermissions[0] ) );
-// getUserPermissions()[0].setBuild( true );
-// getUserPermissions()[1].setDelete( true );
-
setProjectGroup( getContinuum().getProjectGroup( projectGroupId ) );
- getLogger().info( "ProjectGroupName = " + getProjectGroup().getName() );
-
return INPUT;
}
public String save()
throws ContinuumException
{
- for ( Iterator i = map.keySet().iterator(); i.hasNext(); )
+ List instancePermissions = new ArrayList( userNames.length );
+ for ( int i = 0; i < userNames.length; i++ )
{
- String id = (String) i.next();
- getLogger().info( "key value == " + id );
+ User u = new User();
+ u.setUsername( userNames[i] );
+
+ InstancePermissions p = parsePermissions( map, u.getUsername() );
+ p.setUser( u );
+ p.setId( new Integer( projectGroupId ) );
+ p.setInstanceClass( ProjectGroup.class );
+ instancePermissions.add( p );
+
+ // TODO validate that the permissions dont conflict each other, set the error msg if they do
}
- for ( Iterator i = map.values().iterator(); i.hasNext(); )
- {
- String[] id = (String[]) i.next();
- for ( int y = 0; y < id.length; y++ )
- {
- getLogger().info( "class name == " + id[y].getClass().getSimpleName() );
- getLogger().info( "value == " + id[y] );
- }
- }
- // TODO - compare the values from the map to userManager.getUsersInstancePermissions() then save the differences
- // NOTE: only the checkboxes that are checked are saved on the map.
- // each user has 4 possible checkboxes and all of them are saved into an array of String.
- // so to determine each checkbox(view) from the others(edit/delete/build), we need a special notation. see below...
- // KEY FORMAT: username + view/edit/delete or build. sample would be adminbuild or guestview
+ userManager.setUsersInstancePermissions( instancePermissions );
+
return SUCCESS;
+ }
+
+ private InstancePermissions parsePermissions( Map map, String username )
+ {
+ InstancePermissions p = new InstancePermissions();
+ if ( map.get( username + ".execute" ) != null )
+ {
+ p.setExecute( true );
+ }
+ if ( map.get( username + ".delete" ) != null )
+ {
+ p.setDelete( true );
+ }
+ if ( map.get( username + ".write" ) != null )
+ {
+ p.setWrite( true );
+ }
+ if ( map.get( username + ".read" ) != null )
+ {
+ p.setRead( true );
+ }
+ if ( map.get( username + ".administer" ) != null )
+ {
+ p.setAdminister( true );
+ }
+ return p;
}
}
Modified: maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/projectGroupPermissions.jsp
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/projectGroupPermissions.jsp?view=diff&rev=442161&r1=442160&r2=442161
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/projectGroupPermissions.jsp (original)
+++ maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/projectGroupPermissions.jsp Mon Sep 11 03:10:15 2006
@@ -18,38 +18,50 @@
<h3>Users</h3>
<form action="projectGroupPermissions!save.action">
+ username - view - edit - delete - build - admin<br/>
+
<ww:iterator value="userPermissions" id="permission">
- <ww:property value="user.username"/>
+ <ww:property value='user.username'/>
+ <ww:hidden name="userNames" value="%{user.username}"/>
- <ww:set name="view" value="<ww:property value='view'/>"/>
- <ww:set name="edit" value="<ww:property value='edit'/>"/>
+ <ww:set name="read" value="<ww:property value='read'/>"/>
+ <ww:set name="write" value="<ww:property value='write'/>"/>
<ww:set name="delete" value="<ww:property value='delete'/>"/>
- <ww:set name="build" value="<ww:property value='build'/>"/>
- <ww:if test="view == true">
- <input type="checkbox" name="map['<ww:property value="user.username"/>view']" checked="true">
+ <ww:set name="execute" value="<ww:property value='execute'/>"/>
+ <ww:set name="administer" value="<ww:property value='administer'/>"/>
+
+ <ww:if test="read == true">
+ <input type="checkbox" name="map['<ww:property value="user.username"/>.read']" checked="true">
</ww:if>
<ww:else>
- <input type="checkbox" name="map['<ww:property value="user.username"/>view']">
+ <input type="checkbox" name="map['<ww:property value="user.username"/>.read']">
</ww:else>
- <ww:if test="edit == true">
- <input type="checkbox" name="map['<ww:property value="user.username"/>edit']" checked="true">
+ <ww:if test="write == true">
+ <input type="checkbox" name="map['<ww:property value="user.username"/>.write']" checked="true">
</ww:if>
<ww:else>
- <input type="checkbox" name="map['<ww:property value="user.username"/>edit']">
+ <input type="checkbox" name="map['<ww:property value="user.username"/>.write']">
</ww:else>
<ww:if test="delete == true">
- <input type="checkbox" name="map['<ww:property value="user.username"/>delete']" checked="true">
+ <input type="checkbox" name="map['<ww:property value="user.username"/>.delete']" checked="true">
+ </ww:if>
+ <ww:else>
+ <input type="checkbox" name="map['<ww:property value="user.username"/>.delete']">
+ </ww:else>
+ <ww:if test="execute == true">
+ <input type="checkbox" name="map['<ww:property value="user.username"/>.execute']" checked="true">
</ww:if>
<ww:else>
- <input type="checkbox" name="map['<ww:property value="user.username"/>delete']">
+ <input type="checkbox" name="map['<ww:property value="user.username"/>.execute']">
</ww:else>
- <ww:if test="build == true">
- <input type="checkbox" name="map['<ww:property value="user.username"/>build']" checked="true">
+ <ww:if test="administer == true">
+ <input type="checkbox" name="map['<ww:property value="user.username"/>.administer']" checked="true">
</ww:if>
<ww:else>
- <input type="checkbox" name="map['<ww:property value="user.username"/>build']">
+ <input type="checkbox" name="map['<ww:property value="user.username"/>.administer']">
</ww:else>
+
<br/>
</ww:iterator>