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/04 03:49:04 UTC
svn commit: r439897 - in /maven/continuum/branches/continuum-acegi: ./
continuum-core/src/main/java/org/apache/maven/continuum/
continuum-core/src/main/java/org/apache/maven/continuum/initialization/
continuum-core/src/main/java/org/apache/maven/contin...
Author: carlos
Date: Sun Sep 3 18:48:58 2006
New Revision: 439897
URL: http://svn.apache.org/viewvc?view=rev&rev=439897
Log:
Integrate maven-user in continuum-acegi
Added:
maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/
maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/
maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/ContinuumUser.java (with props)
maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/Permission.java (with props)
maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/UserGroup.java (with props)
maven/continuum/branches/continuum-acegi/continuum-model/src/main/resources/
maven/continuum/branches/continuum-acegi/continuum-model/src/main/resources/META-INF/
maven/continuum/branches/continuum-acegi/continuum-model/src/main/resources/META-INF/package.jdo
Removed:
maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/mdo/session-models.mdo
maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/addUser.jsp
maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/addUserRole.jsp
maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/deleteUser.jsp
maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/editUser.jsp
Modified:
maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java
maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/security/ContinuumAuthenticator.java
maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/security/DefaultContinuumSecurity.java
maven/continuum/branches/continuum-acegi/continuum-core/src/main/resources/META-INF/plexus/components.xml
maven/continuum/branches/continuum-acegi/continuum-model/pom.xml
maven/continuum/branches/continuum-acegi/continuum-model/src/main/mdo/continuum.mdo
maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsService.java
maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsServiceTest.java
maven/continuum/branches/continuum-acegi/continuum-webapp/pom.xml
maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/resources/META-INF/plexus/application.xml
maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/configurationEdit.jsp
maven/continuum/branches/continuum-acegi/pom.xml
Modified: maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java?view=diff&rev=439897&r1=439896&r2=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java (original)
+++ maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java Sun Sep 3 18:48:58 2006
@@ -50,6 +50,8 @@
import org.apache.maven.continuum.utils.PlexusContainerManager;
import org.apache.maven.continuum.utils.ProjectSorter;
import org.apache.maven.continuum.utils.WorkingDirectoryService;
+import org.apache.maven.user.model.PasswordRuleViolationException;
+import org.apache.maven.user.model.UserManager;
import org.codehaus.plexus.PlexusConstants;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.action.Action;
@@ -105,6 +107,11 @@
* @plexus.requirement
*/
private ContinuumStore store;
+
+ /**
+ * @plexus.requirement
+ */
+ private UserManager userManager;
/**
* @plexus.requirement
@@ -1791,24 +1798,35 @@
public List getUsers()
throws ContinuumException
{
- try
- {
- return store.getUsers();
- }
- catch ( ContinuumStoreException ex )
- {
- throw logAndCreateException( "Error while getting users.", ex );
- }
+// try
+// {
+ return userManager.getUsers();
+// }
+// catch ( EntityNotFoundException ex )
+// {
+// throw logAndCreateException( "Error while getting users.", ex );
+// }
}
public void addUser( ContinuumUser user )
throws ContinuumException
{
- if ( StringUtils.isEmpty( user.getHashedPassword() ) )
+ if ( StringUtils.isEmpty( user.getPassword() ) )
{
throw new ContinuumException( "Password can't be null" );
}
- store.addUser( user );
+ try
+ {
+ userManager.addUser( user );
+ }
+// catch ( EntityExistsException eee )
+// {
+// throw new ContinuumException( "Error adding " + user.getUsername() + ", the user already exists.", eee );
+// }
+ catch ( PasswordRuleViolationException pre )
+ {
+ throw new ContinuumException( "There was a password rule violation.", pre );
+ }
}
public void addUser( Map configuration )
@@ -1832,20 +1850,21 @@
public void updateUser( ContinuumUser user )
throws ContinuumException
{
- if ( StringUtils.isEmpty( user.getHashedPassword() ) )
+ if ( StringUtils.isEmpty( user.getEncodedPassword() ) )
{
ContinuumUser u = getUser( user.getAccountId() );
- user.setHashedPassword( u.getHashedPassword() );
+ user.setEncodedPassword( u.getEncodedPassword() );
}
try
{
- store.updateUser( user );
+ userManager.updateUser( user );
}
- catch ( ContinuumStoreException ex )
+ catch ( PasswordRuleViolationException pre )
+ // TODO this must be thrown
{
- throw logAndCreateException( "Error while storing user.", ex );
+ throw new ContinuumException( "There was a password rule violation.", pre );
}
}
@@ -1872,7 +1891,7 @@
{
try
{
- return store.getUser( userId );
+ return ( ContinuumUser ) userManager.getUser( userId );
}
catch ( Exception ex )
{
@@ -1883,9 +1902,7 @@
public void removeUser( int userId )
throws ContinuumException
{
- ContinuumUser user = getUser( userId );
-
- store.removeUser( user );
+ userManager.removeUser( userId );
}
// ----------------------------------------------------------------------
@@ -1895,19 +1912,19 @@
public List getUserGroups()
throws ContinuumException
{
- try
- {
- return store.getUserGroups();
- }
- catch ( ContinuumStoreException ex )
- {
- throw logAndCreateException( "Error while getting user groups.", ex );
- }
+// try
+// {
+ return userManager.getUserGroups();
+// }
+// catch ( EntityNotFoundException ex )
+// {
+// throw logAndCreateException( "Error while getting user groups.", ex );
+// }
}
public void addUserGroup( UserGroup userGroup )
{
- store.addUserGroup( userGroup );
+ userManager.addUserGroup( userGroup );
}
public void addUserGroup( Map configuration )
@@ -1963,72 +1980,72 @@
if ( convertBoolean( (String) configuration.get( "group.permission.addProject" ) ) )
{
- perms.add( store.getPermission( "addProject" ) );
+ perms.add( userManager.getPermission( "addProject" ) );
}
if ( convertBoolean( (String) configuration.get( "group.permission.editProject" ) ) )
{
- perms.add( store.getPermission( "editProject" ) );
+ perms.add( userManager.getPermission( "editProject" ) );
}
if ( convertBoolean( (String) configuration.get( "group.permission.deleteProject" ) ) )
{
- perms.add( store.getPermission( "deleteProject" ) );
+ perms.add( userManager.getPermission( "deleteProject" ) );
}
if ( convertBoolean( (String) configuration.get( "group.permission.buildProject" ) ) )
{
- perms.add( store.getPermission( "buildProject" ) );
+ perms.add( userManager.getPermission( "buildProject" ) );
}
if ( convertBoolean( (String) configuration.get( "group.permission.showProject" ) ) )
{
- perms.add( store.getPermission( "showProject" ) );
+ perms.add( userManager.getPermission( "showProject" ) );
}
- if ( convertBoolean( (String) configuration.get( "group.permission.addBuildDefinitionToProject" ) ) )
+ if ( convertBoolean( (String) configuration.get( "group.permission.addBuildDefinition" ) ) )
{
- perms.add( store.getPermission( "addBuildDefinitionToProject" ) );
+ perms.add( userManager.getPermission( "addBuildDefinition" ) );
}
if ( convertBoolean( (String) configuration.get( "group.permission.editBuildDefinition" ) ) )
{
- perms.add( store.getPermission( "editBuildDefinition" ) );
+ perms.add( userManager.getPermission( "editBuildDefinition" ) );
}
if ( convertBoolean( (String) configuration.get( "group.permission.deleteBuildDefinition" ) ) )
{
- perms.add( store.getPermission( "deleteBuildDefinition" ) );
+ perms.add( userManager.getPermission( "deleteBuildDefinition" ) );
}
if ( convertBoolean( (String) configuration.get( "group.permission.addNotifier" ) ) )
{
- perms.add( store.getPermission( "addNotifier" ) );
+ perms.add( userManager.getPermission( "addNotifier" ) );
}
if ( convertBoolean( (String) configuration.get( "group.permission.editNotifier" ) ) )
{
- perms.add( store.getPermission( "editNotifier" ) );
+ perms.add( userManager.getPermission( "editNotifier" ) );
}
if ( convertBoolean( (String) configuration.get( "group.permission.deleteNotifier" ) ) )
{
- perms.add( store.getPermission( "deleteNotifier" ) );
+ perms.add( userManager.getPermission( "deleteNotifier" ) );
}
if ( convertBoolean( (String) configuration.get( "group.permission.manageConfiguration" ) ) )
{
- perms.add( store.getPermission( "manageConfiguration" ) );
+ perms.add( userManager.getPermission( "manageConfiguration" ) );
}
if ( convertBoolean( (String) configuration.get( "group.permission.manageSchedule" ) ) )
{
- perms.add( store.getPermission( "manageSchedule" ) );
+ perms.add( userManager.getPermission( "manageSchedule" ) );
}
if ( convertBoolean( (String) configuration.get( "group.permission.manageUsers" ) ) )
{
- perms.add( store.getPermission( "manageUsers" ) );
+ perms.add( userManager.getPermission( "manageUsers" ) );
}
return perms;
@@ -2037,35 +2054,33 @@
public void updateUserGroup( UserGroup userGroup )
throws ContinuumException
{
- try
- {
- store.updateUserGroup( userGroup );
- }
- catch ( ContinuumStoreException e )
- {
- throw logAndCreateException( "Error while storing user group.", e );
- }
+// try
+// {
+ userManager.updateUserGroup( userGroup );
+// }
+// catch ( EntityNotFoundException e )
+// {
+// throw logAndCreateException( "Error while storing user group.", e );
+// }
}
public UserGroup getUserGroup( int userGroupId )
throws ContinuumException
{
- try
- {
- return store.getUserGroup( userGroupId );
- }
- catch ( Exception ex )
- {
- throw logAndCreateException( "Error while getting user group.", ex );
- }
+// try
+// {
+ return ( UserGroup ) userManager.getUserGroup( userGroupId );
+// }
+// catch ( Exception ex )
+// {
+// throw logAndCreateException( "Error while getting user group.", ex );
+// }
}
public void removeUserGroup( int userGroupId )
throws ContinuumException
{
- UserGroup group = getUserGroup( userGroupId );
-
- store.removeUserGroup( group );
+ userManager.removeUserGroup( userGroupId );
}
// ----------------------------------------------------------------------
Modified: maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java?view=diff&rev=439897&r1=439896&r2=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java (original)
+++ maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/initialization/DefaultContinuumInitializer.java Sun Sep 3 18:48:58 2006
@@ -16,6 +16,9 @@
* limitations under the License.
*/
+import java.util.ArrayList;
+import java.util.List;
+
import org.apache.maven.continuum.model.project.Schedule;
import org.apache.maven.continuum.model.system.ContinuumUser;
import org.apache.maven.continuum.model.system.Permission;
@@ -65,6 +68,11 @@
* @plexus.requirement
*/
private ContinuumStore store;
+
+ /**
+ * @plexus.requirement
+ */
+ private UserManager userManager;
// ----------------------------------------------------------------------
//
@@ -74,6 +82,20 @@
throws ContinuumInitializationException
{
getLogger().info( "Continuum initializer running ..." );
+
+ if ( getLogger().isDebugEnabled() )
+ {
+ getLogger().info( "Dumping JPOX/JDO Schema Details ..." );
+ try
+ {
+ SchemaTool.outputDBInfo( null, true );
+ SchemaTool.outputSchemaInfo( null, true );
+ }
+ catch ( Exception e )
+ {
+ e.printStackTrace( System.err );
+ }
+ }
try
{
@@ -170,7 +192,7 @@
private Permission createPermission( String name, String description )
throws ContinuumStoreException
{
- Permission perm = store.getPermission( name );
+ Permission perm = ( Permission ) userManager.getPermission( name );
if ( perm == null )
{
@@ -180,7 +202,7 @@
perm.setDescription( description );
- perm = store.addPermission( perm );
+ perm = ( Permission ) userManager.addPermission( perm );
}
return perm;
@@ -190,9 +212,9 @@
throws ContinuumStoreException
{
// Continuum Administrator
- if ( store.getUserGroup( ContinuumSecurity.ADMIN_GROUP_NAME ) == null )
+ if ( userManager.getUserGroup( ContinuumSecurity.ADMIN_GROUP_NAME ) == null )
{
- List adminPermissions = store.getPermissions();
+ List adminPermissions = userManager.getPermissions();
UserGroup adminGroup = new UserGroup();
@@ -202,11 +224,11 @@
adminGroup.setPermissions( adminPermissions );
- store.addUserGroup( adminGroup );
+ userManager.addUserGroup( adminGroup );
}
// Continuum Guest
- if ( store.getUserGroup( ContinuumSecurity.GUEST_GROUP_NAME ) == null )
+ if ( userManager.getUserGroup( ContinuumSecurity.GUEST_GROUP_NAME ) == null )
{
UserGroup guestGroup = new UserGroup();
@@ -216,20 +238,20 @@
List guestPermissions = new ArrayList();
- guestPermissions.add( store.getPermission( "buildProject" ) );
+ guestPermissions.add( userManager.getPermission( "buildProject" ) );
- guestPermissions.add( store.getPermission( "showProject" ) );
+ guestPermissions.add( userManager.getPermission( "showProject" ) );
guestGroup.setPermissions( guestPermissions );
- store.addUserGroup( guestGroup );
+ userManager.addUserGroup( guestGroup );
}
}
private void createGuestUser()
throws ContinuumStoreException
{
- if ( store.getGuestUser() == null )
+ if ( userManager.getGuestUser() == null )
{
ContinuumUser guest = new ContinuumUser();
@@ -237,18 +259,30 @@
guest.setFullName( "Anonymous User" );
- guest.setGroup( store.getUserGroup( ContinuumSecurity.GUEST_GROUP_NAME ) );
+ guest.setGroup( userManager.getUserGroup( ContinuumSecurity.GUEST_GROUP_NAME ) );
guest.setGuest( true );
- store.addUser( guest );
+ try
+ {
+ userManager.addUser( guest );
+ }
+// TODO
+// catch ( EntityExistsException eee )
+// {
+// throw new ContinuumStoreException( "Error adding user, the user already exists.", eee );
+// }
+ catch ( PasswordRuleViolationException pre )
+ {
+ throw new ContinuumStoreException( "There was a password rule violation.", pre );
+ }
}
}
private void createAdminUser()
throws ContinuumStoreException
{
- if ( store.getUserByUsername( "admin" ) == null )
+ if ( userManager.getUser( "admin" ) == null )
{
ContinuumUser admin = new ContinuumUser();
@@ -256,11 +290,23 @@
admin.setFullName( "Administrator" );
- admin.setGroup( store.getUserGroup( ContinuumSecurity.ADMIN_GROUP_NAME ) );
+ admin.setGroup( userManager.getUserGroup( ContinuumSecurity.ADMIN_GROUP_NAME ) );
admin.setPassword( "admin" );
- store.addUser( admin );
+ try
+ {
+ userManager.addUser( admin );
+ }
+// TODO
+// catch ( EntityExistsException eee )
+// {
+// throw new ContinuumStoreException( "The user already exists.", eee );
+// }
+ catch ( PasswordRuleViolationException pre )
+ {
+ throw new ContinuumStoreException( "There was a password rule violation.", pre );
+ }
}
}
}
Modified: maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/security/ContinuumAuthenticator.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/security/ContinuumAuthenticator.java?view=diff&rev=439897&r1=439896&r2=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/security/ContinuumAuthenticator.java (original)
+++ maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/security/ContinuumAuthenticator.java Sun Sep 3 18:48:58 2006
@@ -20,8 +20,7 @@
import java.util.Map;
import org.apache.maven.continuum.model.system.ContinuumUser;
-import org.apache.maven.continuum.store.ContinuumStore;
-import org.apache.maven.continuum.store.ContinuumStoreException;
+import org.apache.maven.user.model.UserManager;
import org.codehaus.plexus.security.Authentication;
import org.codehaus.plexus.security.Authenticator;
import org.codehaus.plexus.security.exception.AuthenticationException;
@@ -37,10 +36,11 @@
public class ContinuumAuthenticator
implements Authenticator
{
+
/**
* @plexus.requirement
*/
- private ContinuumStore store;
+ private UserManager userManager;
// ----------------------------------------------------------------------
// Authenticator Implementation
@@ -83,13 +83,6 @@
private ContinuumUser getUser( String username )
throws AuthenticationException
{
- try
- {
- return store.getUserByUsername( username );
- }
- catch ( ContinuumStoreException e )
- {
- throw new AuthenticationException( "Error while retreiving user.", e );
- }
+ return ( ContinuumUser ) userManager.getUserByUsername( username );
}
}
Modified: maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/security/DefaultContinuumSecurity.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/security/DefaultContinuumSecurity.java?view=diff&rev=439897&r1=439896&r2=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/security/DefaultContinuumSecurity.java (original)
+++ maven/continuum/branches/continuum-acegi/continuum-core/src/main/java/org/apache/maven/continuum/security/DefaultContinuumSecurity.java Sun Sep 3 18:48:58 2006
@@ -19,8 +19,7 @@
import org.apache.maven.continuum.model.system.ContinuumUser;
import org.apache.maven.continuum.model.system.Permission;
import org.apache.maven.continuum.model.system.UserGroup;
-import org.apache.maven.continuum.store.ContinuumStore;
-import org.apache.maven.continuum.store.ContinuumStoreException;
+import org.apache.maven.user.model.UserManager;
import java.util.Iterator;
import java.util.List;
@@ -35,7 +34,7 @@
/**
* @plexus.requirement
*/
- private ContinuumStore store;
+ private UserManager userManager;
public List getPermissions( ContinuumUser user )
throws ContinuumSecurityException
@@ -47,7 +46,7 @@
u = getGuestUser();
}
- return getPermissions( u.getGroup() );
+ return getPermissions( ( UserGroup ) u.getGroup() );
}
public List getPermissions( UserGroup group )
@@ -98,13 +97,6 @@
public ContinuumUser getGuestUser()
throws ContinuumSecurityException
{
- try
- {
- return store.getGuestUser();
- }
- catch ( ContinuumStoreException e )
- {
- throw new ContinuumSecurityException( "Can't obtain guest user.", e );
- }
+ return ( ContinuumUser ) userManager.getGuestUser();
}
}
Modified: maven/continuum/branches/continuum-acegi/continuum-core/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-core/src/main/resources/META-INF/plexus/components.xml?view=diff&rev=439897&r1=439896&r2=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-core/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/continuum/branches/continuum-acegi/continuum-core/src/main/resources/META-INF/plexus/components.xml Sun Sep 3 18:48:58 2006
@@ -23,6 +23,10 @@
<requirement>
<role>org.apache.maven.continuum.build.settings.SchedulesActivator</role>
</requirement>
+ <requirement>
+ <role>org.apache.maven.user.model.UserManager</role>
+ <field-name>userManager</field-name>
+ </requirement>
<!-- from core -->
<requirement>
<role>org.codehaus.plexus.taskqueue.TaskQueue</role>
@@ -64,7 +68,7 @@
<implementation>org.apache.maven.continuum.security.DefaultContinuumSecurity</implementation>
<requirements>
<requirement>
- <role>org.apache.maven.continuum.store.ContinuumStore</role>
+ <role>org.apache.maven.user.model.UserManager</role>
</requirement>
</requirements>
</component>
@@ -75,6 +79,9 @@
<requirements>
<requirement>
<role>org.apache.maven.continuum.store.ContinuumStore</role>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.user.model.UserManager</role>
</requirement>
</requirements>
</component>
Modified: maven/continuum/branches/continuum-acegi/continuum-model/pom.xml
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-model/pom.xml?view=diff&rev=439897&r1=439896&r2=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-model/pom.xml (original)
+++ maven/continuum/branches/continuum-acegi/continuum-model/pom.xml Sun Sep 3 18:48:58 2006
@@ -21,7 +21,6 @@
<execution>
<goals>
<goal>java</goal>
- <goal>jpox-jdo-mapping</goal>
</goals>
</execution>
</executions>
@@ -45,4 +44,10 @@
</plugin>
</plugins>
</build>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.shared.user</groupId>
+ <artifactId>maven-user-model</artifactId>
+ </dependency>
+ </dependencies>
</project>
Added: maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/ContinuumUser.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/ContinuumUser.java?view=auto&rev=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/ContinuumUser.java (added)
+++ maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/ContinuumUser.java Sun Sep 3 18:48:58 2006
@@ -0,0 +1,106 @@
+package org.apache.maven.continuum.model.system;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.util.Date;
+
+import org.apache.maven.user.model.User;
+
+/**
+ * @author Henry Isidro
+ * @version $Id$
+ */
+public class ContinuumUser
+ extends User
+{
+ /*
+ public String getPassword()
+ {
+ return super.getPassword();
+ }
+
+ public void setPassword( String password )
+ {
+ setEncodedPassword( crypt( password ) );
+ }
+ */
+
+ public boolean equalsPassword( String password )
+ {
+ if ( getEncodedPassword() == null && password == null )
+ {
+ return true;
+ }
+
+ if ( ( getEncodedPassword() == null && password != null ) || ( getEncodedPassword() == null && password != null ) )
+ {
+ return false;
+ }
+
+ return getEncodedPassword().equals( crypt( password ) );
+ }
+
+ private String crypt( String data )
+ {
+ try
+ {
+ java.security.MessageDigest digester = java.security.MessageDigest.getInstance( "SHA-1" );
+ digester.reset();
+ digester.update( data.getBytes() );
+ return encode( digester.digest() );
+ }
+ catch( Exception e )
+ {
+ return data;
+ }
+ }
+
+ /**
+ * Encodes a 128 bit or 160-bit byte array into a String.
+ *
+ * @param binaryData Array containing the digest
+ * @return Encoded hex string, or null if encoding failed
+ */
+
+ private String encode( byte[] binaryData )
+ {
+ if ( binaryData.length != 16 && binaryData.length != 20 )
+ {
+ int bitLength = binaryData.length * 8;
+ throw new IllegalArgumentException( "Unrecognised length for binary data: " + bitLength + " bits" );
+ }
+
+ String retValue = "";
+
+ for ( int i = 0; i < binaryData.length; i++ )
+ {
+ String t = Integer.toHexString( binaryData[i] & 0xff );
+
+ if ( t.length() == 1 )
+ {
+ retValue += ( "0" + t );
+ }
+ else
+ {
+ retValue += t;
+ }
+ }
+
+ return retValue.trim();
+ }
+
+}
Propchange: maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/ContinuumUser.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/ContinuumUser.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/Permission.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/Permission.java?view=auto&rev=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/Permission.java (added)
+++ maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/Permission.java Sun Sep 3 18:48:58 2006
@@ -0,0 +1,27 @@
+package org.apache.maven.continuum.model.system;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Henry Isidro
+ * @version $Id$
+ */
+public class Permission
+ extends org.apache.maven.user.model.Permission
+{
+
+}
Propchange: maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/Permission.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/Permission.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Added: maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/UserGroup.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/UserGroup.java?view=auto&rev=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/UserGroup.java (added)
+++ maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/UserGroup.java Sun Sep 3 18:48:58 2006
@@ -0,0 +1,27 @@
+package org.apache.maven.continuum.model.system;
+
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/**
+ * @author Henry Isidro
+ * @version $Id$
+ */
+public class UserGroup
+ extends org.apache.maven.user.model.UserGroup
+{
+
+}
Propchange: maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/UserGroup.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/continuum/branches/continuum-acegi/continuum-model/src/main/java/org/apache/maven/continuum/model/system/UserGroup.java
------------------------------------------------------------------------------
svn:keywords = "Author Date Id Revision"
Modified: maven/continuum/branches/continuum-acegi/continuum-model/src/main/mdo/continuum.mdo
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-model/src/main/mdo/continuum.mdo?view=diff&rev=439897&r1=439896&r2=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-model/src/main/mdo/continuum.mdo (original)
+++ maven/continuum/branches/continuum-acegi/continuum-model/src/main/mdo/continuum.mdo Sun Sep 3 18:48:58 2006
@@ -956,195 +956,6 @@
</class>
<class>
- <name>UserGroup</name>
- <packageName>org.apache.maven.continuum.model.system</packageName>
- <version>1.0.0+</version>
- <fields>
- <field>
- <name>id</name>
- <identifier>true</identifier>
- <version>1.0.0+</version>
- <type>int</type>
- </field>
- <field>
- <name>name</name>
- <version>1.0.0+</version>
- <type>String</type>
- </field>
- <field>
- <name>description</name>
- <version>1.0.0+</version>
- <type>String</type>
- </field>
- <field>
- <name>permissions</name>
- <version>1.0.0+</version>
- <association stash.part="true" jpox.dependent="false">
- <type>Permission</type>
- <multiplicity>*</multiplicity>
- </association>
- </field>
- </fields>
- </class>
- <class>
- <name>ContinuumUser</name>
- <packageName>org.apache.maven.continuum.model.system</packageName>
- <version>1.0.0+</version>
- <fields>
- <field>
- <name>accountId</name>
- <version>1.0.0+</version>
- <type>int</type>
- <identifier>true</identifier>
- </field>
- <field>
- <name>username</name>
- <version>1.0.0+</version>
- <type>String</type>
- </field>
- <field>
- <name>guest</name>
- <version>1.0.0+</version>
- <type>boolean</type>
- <defaultValue>false</defaultValue>
- </field>
- <field>
- <name>hashedPassword</name>
- <version>1.0.0+</version>
- <type>String</type>
- </field>
- <field>
- <name>fullName</name>
- <version>1.0.0+</version>
- <type>String</type>
- </field>
- <field>
- <name>email</name>
- <version>1.0.0+</version>
- <type>String</type>
- </field>
- <field>
- <name>group</name>
- <version>1.0.0+</version>
- <association stash.part="true" jpox.dependent="false">
- <type>UserGroup</type>
- </association>
- </field>
- <field>
- <name>notificationAddresses</name>
- <version>1.0.0+</version>
- <association stash.part="true" >
- <type>NotificationAddress</type>
- <multiplicity>*</multiplicity>
- </association>
- </field>
- </fields>
- <codeSegments>
- <codeSegment>
- <version>1.0.0+</version>
- <code><![CDATA[
- public String getPassword()
- {
- return "";
- }
-
- public void setPassword( String password )
- {
- setHashedPassword( crypt( password ) );
- }
-
- public boolean equalsPassword( String password )
- {
- if ( hashedPassword == null && password == null )
- {
- return true;
- }
-
- if ( ( hashedPassword == null && password != null ) || ( hashedPassword == null && password != null ) )
- {
- return false;
- }
-
- return hashedPassword.equals( crypt( password ) );
- }
-
- private String crypt( String data )
- {
- try
- {
- java.security.MessageDigest digester = java.security.MessageDigest.getInstance( "SHA-1" );
- digester.reset();
- digester.update( data.getBytes() );
- return encode( digester.digest() );
- }
- catch( Exception e )
- {
- return data;
- }
- }
-
- /**
- * Encodes a 128 bit or 160-bit byte array into a String.
- *
- * @param binaryData Array containing the digest
- * @return Encoded hex string, or null if encoding failed
- */
- private String encode( byte[] binaryData )
- {
- if ( binaryData.length != 16 && binaryData.length != 20 )
- {
- int bitLength = binaryData.length * 8;
- throw new IllegalArgumentException( "Unrecognised length for binary data: " + bitLength + " bits" );
- }
-
- String retValue = "";
-
- for ( int i = 0; i < binaryData.length; i++ )
- {
- String t = Integer.toHexString( binaryData[i] & 0xff );
-
- if ( t.length() == 1 )
- {
- retValue += ( "0" + t );
- }
- else
- {
- retValue += t;
- }
- }
-
- return retValue.trim();
- }
- ]]></code>
- </codeSegment>
- </codeSegments>
- </class>
-
- <class>
- <name>Permission</name>
- <packageName>org.apache.maven.continuum.model.system</packageName>
- <version>1.0.0+</version>
- <fields>
- <field>
- <name>id</name>
- <identifier>true</identifier>
- <version>1.0.0+</version>
- <type>int</type>
- </field>
- <field>
- <name>name</name>
- <version>1.0.0+</version>
- <type>String</type>
- </field>
- <field>
- <name>description</name>
- <version>1.0.0+</version>
- <type>String</type>
- </field>
- </fields>
- </class>
-
- <class>
<name>NotificationAddress</name>
<version>1.0.0+</version>
<packageName>org.apache.maven.continuum.model.system</packageName>
Added: maven/continuum/branches/continuum-acegi/continuum-model/src/main/resources/META-INF/package.jdo
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-model/src/main/resources/META-INF/package.jdo?view=auto&rev=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-model/src/main/resources/META-INF/package.jdo (added)
+++ maven/continuum/branches/continuum-acegi/continuum-model/src/main/resources/META-INF/package.jdo Sun Sep 3 18:48:58 2006
@@ -0,0 +1,306 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!DOCTYPE jdo PUBLIC
+ "-//Sun Microsystems, Inc.//DTD Java Data Objects Metadata 2.0//EN"
+ "http://java.sun.com/dtd/jdo_2_0.dtd">
+
+<jdo>
+ <package name="org.apache.maven.continuum.model.project">
+ <class name="ProjectGroup" detachable="true" identity-type="application" objectid-class="javax.jdo.identity.IntIdentity">
+ <field name="id" primary-key="true" value-strategy="native"/>
+ <field name="groupId"/>
+ <field name="name"/>
+ <field name="description">
+ <column length="8192"/>
+ </field>
+ <field name="projects" mapped-by="projectGroup">
+ <collection element-type="Project" dependent-element="true"/>
+ </field>
+ <field name="notifiers">
+ <collection element-type="ProjectNotifier" dependent-element="true"/>
+ <join/>
+ </field>
+ <field name="buildDefinitions">
+ <collection element-type="BuildDefinition" dependent-element="true"/>
+ <join/>
+ </field>
+ <fetch-group name="ProjectGroup_detail">
+ <field name="projects"/>
+ <field name="notifiers"/>
+ <field name="buildDefinitions"/>
+ </fetch-group>
+ <fetch-group name="project-build-details">
+ <field name="projects"/>
+ <field name="notifiers"/>
+ <field name="buildDefinitions"/>
+ </fetch-group>
+ <fetch-group name="projectgroup-projects">
+ <field name="projects"/>
+ </fetch-group>
+ </class>
+ <class name="Project" detachable="true" identity-type="application" objectid-class="javax.jdo.identity.IntIdentity">
+ <field name="id" null-value="exception" primary-key="true" value-strategy="native"/>
+ <field name="groupId"/>
+ <field name="artifactId"/>
+ <field name="executorId"/>
+ <field name="name"/>
+ <field name="description">
+ <column length="8192"/>
+ </field>
+ <field name="url">
+ <column length="256"/>
+ </field>
+ <field name="scmUrl">
+ <column length="256"/>
+ </field>
+ <field name="scmTag"/>
+ <field name="scmUsername"/>
+ <field name="scmPassword"/>
+ <field name="version"/>
+ <field name="state"/>
+ <field name="oldState"/>
+ <field name="latestBuildId"/>
+ <field name="buildNumber"/>
+ <field name="workingDirectory">
+ <column length="256"/>
+ </field>
+ <field name="buildResults" mapped-by="project">
+ <collection element-type="BuildResult" dependent-element="true"/>
+ </field>
+ <field name="checkoutResult" dependent="true"/>
+ <field name="developers">
+ <collection element-type="ProjectDeveloper" dependent-element="true"/>
+ </field>
+ <field name="parent" dependent="true"/>
+ <field name="dependencies">
+ <collection element-type="ProjectDependency" dependent-element="true"/>
+ </field>
+ <field name="projectGroup" null-value="exception" default-fetch-group="true"/>
+ <field name="notifiers">
+ <collection element-type="ProjectNotifier" dependent-element="true"/>
+ <join/>
+ </field>
+ <field name="buildDefinitions">
+ <collection element-type="BuildDefinition" dependent-element="true"/>
+ <join/>
+ </field>
+ <fetch-group name="Project_detail">
+ <field name="buildResults"/>
+ <field name="checkoutResult"/>
+ <field name="developers"/>
+ <field name="parent"/>
+ <field name="dependencies"/>
+ <field name="notifiers"/>
+ <field name="buildDefinitions"/>
+ </fetch-group>
+ <fetch-group name="project-all-details">
+ <field name="developers"/>
+ <field name="parent"/>
+ <field name="dependencies"/>
+ <field name="notifiers"/>
+ <field name="buildDefinitions"/>
+ </fetch-group>
+ <fetch-group name="project-build-details">
+ <field name="notifiers"/>
+ <field name="buildDefinitions"/>
+ </fetch-group>
+ <fetch-group name="project-with-builds">
+ <field name="buildResults"/>
+ </fetch-group>
+ <fetch-group name="project-dependencies">
+ <field name="parent"/>
+ <field name="dependencies"/>
+ </fetch-group>
+ <fetch-group name="project-with-checkout-result">
+ <field name="checkoutResult"/>
+ </fetch-group>
+ </class>
+ <class name="ProjectNotifier" detachable="true" identity-type="application" objectid-class="javax.jdo.identity.IntIdentity">
+ <field name="id" null-value="exception" primary-key="true" value-strategy="native"/>
+ <field name="type"/>
+ <field name="from"/>
+ <field name="enabled"/>
+ <field name="recipientType"/>
+ <field name="sendOnSuccess"/>
+ <field name="sendOnFailure"/>
+ <field name="sendOnError"/>
+ <field name="sendOnWarning"/>
+ <field name="configuration" default-fetch-group="true">
+ <map key-type="java.lang.String" value-type="java.lang.String" dependent-key="true" dependent-value="true"/>
+ <join/>
+ </field>
+ </class>
+ <class name="ProjectDeveloper" detachable="true">
+ <field name="scmId"/>
+ <field name="name"/>
+ <field name="email"/>
+ <field name="continuumId"/>
+ </class>
+ <class name="ProjectDependency" detachable="true">
+ <field name="groupId"/>
+ <field name="artifactId"/>
+ <field name="version"/>
+ </class>
+ <class name="BuildResult" detachable="true" identity-type="application" objectid-class="javax.jdo.identity.IntIdentity">
+ <field name="project" default-fetch-group="true"/>
+ <field name="id" primary-key="true" value-strategy="native"/>
+ <field name="buildNumber"/>
+ <field name="state"/>
+ <field name="trigger"/>
+ <field name="startTime"/>
+ <field name="endTime"/>
+ <field name="error">
+ <column length="8192"/>
+ </field>
+ <field name="success"/>
+ <field name="exitCode"/>
+ <field name="scmResult" dependent="true"/>
+ <fetch-group name="BuildResult_detail">
+ <field name="scmResult"/>
+ </fetch-group>
+ <fetch-group name="build-result-with-details">
+ <field name="scmResult"/>
+ </fetch-group>
+ </class>
+ <class name="BuildDefinition" detachable="true" identity-type="application" objectid-class="javax.jdo.identity.IntIdentity">
+ <field name="id" null-value="exception" primary-key="true" value-strategy="native"/>
+ <field name="defaultForProject"/>
+ <field name="goals"/>
+ <field name="arguments"/>
+ <field name="buildFile"/>
+ <field name="schedule" default-fetch-group="true"/>
+ <field name="profile" default-fetch-group="true"/>
+ <field name="latestBuildId" null-value="default">
+ <column default-value="0"/>
+ </field>
+ </class>
+ <class name="Schedule" detachable="true" identity-type="application" objectid-class="javax.jdo.identity.IntIdentity">
+ <field name="id" primary-key="true" value-strategy="native"/>
+ <field name="active"/>
+ <field name="name"/>
+ <field name="description"/>
+ <field name="delay"/>
+ <field name="cronExpression"/>
+ </class>
+ <class name="Profile" detachable="true" identity-type="application" objectid-class="javax.jdo.identity.IntIdentity">
+ <field name="id" primary-key="true" value-strategy="native"/>
+ <field name="active"/>
+ <field name="name"/>
+ <field name="description"/>
+ <field name="scmMode"/>
+ <field name="buildWithoutChanges"/>
+ <field name="jdk" default-fetch-group="true"/>
+ <field name="builder" default-fetch-group="true"/>
+ </class>
+ </package>
+
+ <!--
+ <package name="org.apache.maven.user.model">
+ <class name="UserGroup" detachable="true" identity-type="application" objectid-class="javax.jdo.identity.IntIdentity">
+ <inheritance strategy="subclass-table"/>
+ <field name="id" primary-key="true" value-strategy="native"/>
+ <field name="name"/>
+ <field name="description"/>
+ <field name="permissions" default-fetch-group="true">
+ <collection element-type="Permission" dependent-element="false"/>
+ <join/>
+ </field>
+ </class>
+ <class name="User" detachable="true" identity-type="application" objectid-class="javax.jdo.identity.IntIdentity">
+ <inheritance strategy="subclass-table"/>
+ <field name="accountId" primary-key="true" value-strategy="native"/>
+ <field name="username"/>
+ <field name="guest"/>
+ <field name="password"/>
+ <field name="fullName"/>
+ <field name="email"/>
+ <field name="group" default-fetch-group="true"/>
+ <field name="previousEncodedPasswords" default-fetch-group="true">
+ <collection element-type="java.lang.String" dependent-element="false"/>
+ <join/>
+ </field>
+ </class>
+ <class name="Permission" detachable="true" identity-type="application" objectid-class="javax.jdo.identity.IntIdentity">
+ <inheritance strategy="subclass-table"/>
+ <field name="id" primary-key="true" value-strategy="native"/>
+ <field name="name"/>
+ <field name="description"/>
+ </class>
+ </package>
+ -->
+
+ <package name="org.apache.maven.continuum.model.system">
+ <class name="Installation" detachable="true">
+ <field name="version"/>
+ <field name="path"/>
+ <field name="name"/>
+ </class>
+ <class name="SystemConfiguration" detachable="true">
+ <field name="guestAccountEnabled"/>
+ <field name="defaultScheduleDescription"/>
+ <field name="defaultScheduleCronExpression"/>
+ <field name="workingDirectory"/>
+ <field name="buildOutputDirectory"/>
+ <field name="deploymentRepositoryDirectory"/>
+ <field name="baseUrl"/>
+ <field name="companyName"/>
+ <field name="companyLogoUrl"/>
+ <field name="companyUrl"/>
+ <field name="initialized"/>
+ </class>
+ <class name="NotificationAddress" detachable="true">
+ <field name="type"/>
+ <field name="address"/>
+ <field name="configuration" default-fetch-group="true">
+ <map key-type="java.lang.String" value-type="java.lang.String" dependent-key="true" dependent-value="true"/>
+ <join/>
+ </field>
+ </class>
+
+ <!-- Specify a unique table name that does not conflict with existing maven-user table name -->
+ <class name="UserGroup" table="ContinuumUserGroup" detachable="true" identity-type="application" persistence-capable-superclass="org.apache.maven.user.model.UserGroup">
+ <inheritance strategy="new-table"/>
+ </class>
+ <class name="ContinuumUser" detachable="true" identity-type="application" persistence-capable-superclass="org.apache.maven.user.model.User">
+ <inheritance strategy="new-table"/>
+ </class>
+ <!-- Specify a unique table name that does not conflict with existing maven-user table name -->
+ <class name="Permission" table="ContinuumPermission" detachable="true" identity-type="application" persistence-capable-superclass="org.apache.maven.user.model.Permission">
+ <inheritance strategy="new-table"/>
+ </class>
+ </package>
+
+ <package name="org.apache.maven.continuum.model.scm">
+ <class name="ScmResult" detachable="true">
+ <field name="success"/>
+ <field name="commandLine"/>
+ <field name="providerMessage">
+ <column length="1024"/>
+ </field>
+ <field name="commandOutput">
+ <column length="1024"/>
+ </field>
+ <field name="exception">
+ <column length="8192"/>
+ </field>
+ <field name="changes" default-fetch-group="true">
+ <collection element-type="ChangeSet" dependent-element="true"/>
+ </field>
+ </class>
+ <class name="ChangeSet" detachable="true">
+ <field name="author"/>
+ <field name="comment">
+ <column length="8192"/>
+ </field>
+ <field name="date"/>
+ <field name="files" default-fetch-group="true">
+ <collection element-type="ChangeFile" dependent-element="true"/>
+ </field>
+ </class>
+ <class name="ChangeFile" detachable="true">
+ <field name="name"/>
+ <field name="revision"/>
+ <field name="status"/>
+ </class>
+ </package>
+</jdo>
Modified: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsService.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsService.java?view=diff&rev=439897&r1=439896&r2=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsService.java (original)
+++ maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/main/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsService.java Sun Sep 3 18:48:58 2006
@@ -17,6 +17,7 @@
*
*/
+import java.util.Date;
import java.util.Iterator;
import java.util.List;
@@ -43,42 +44,29 @@
public class ContinuumUserDetailsService
implements UserDetailsService
{
- /**
+ private static final long MILLISECONDS_PER_DAY = 24 * 60 * 60 * 1000;
+
+ /**
* @plexus.requirement
*/
- private ContinuumStore store;
-
- public ContinuumUserDetailsService()
- {
- }
-
- public void setStore( ContinuumStore store )
- {
- this.store = store;
- }
+ private UserManager userManager;
/**
- * {@link ContinuumStore} to load the user from.
- *
- * @return the store
+ * @plexus.configuration default-value="60"
*/
- public ContinuumStore getStore()
+ private int daysBeforeExpiration;
+
+ public ContinuumUserDetailsService()
{
- return store;
}
public UserDetails loadUserByUsername( String username )
throws UsernameNotFoundException, DataAccessException
{
ContinuumUser user;
- try
- {
- user = getStore().getUserByUsername( username );
- }
- catch ( ContinuumStoreException e )
- {
- throw new DataAccessResourceFailureException( e.getMessage(), e );
- }
+
+ user = ( ContinuumUser ) userManager.getUser( username );
+
if ( user == null )
{
throw new UsernameNotFoundException( "Could not find user: " + username );
@@ -106,9 +94,15 @@
i++;
}
String username = user.getUsername();
- String password = user.getHashedPassword();
+ String password = user.getEncodedPassword();
boolean enabled = true;
boolean accountNonExpired = true;
+
+ if( user.getLastPasswordChange() != null && daysBeforeExpiration > 0 )
+ {
+ accountNonExpired = user.getLastPasswordChange().getTime() + daysBeforeExpiration * MILLISECONDS_PER_DAY > new Date().getTime();
+ }
+
boolean credentialsNonExpired = true;
boolean accountNonLocked = true;
@@ -117,7 +111,12 @@
return userDetails;
}
-
+
+ protected void setDaysBeforeExpiration( int daysBeforeExpiration )
+ {
+ this.daysBeforeExpiration = daysBeforeExpiration;
+ }
+
/**
* TODO: convert Acegi user into Continuum user?
*/
Modified: maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsServiceTest.java
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsServiceTest.java?view=diff&rev=439897&r1=439896&r2=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsServiceTest.java (original)
+++ maven/continuum/branches/continuum-acegi/continuum-security/continuum-security-acegi/src/test/java/org/apache/maven/continuum/security/acegi/ContinuumUserDetailsServiceTest.java Sun Sep 3 18:48:58 2006
@@ -16,6 +16,8 @@
* limitations under the License.
*/
+import java.util.Date;
+
import org.acegisecurity.GrantedAuthority;
import org.acegisecurity.providers.encoding.ShaPasswordEncoder;
import org.acegisecurity.userdetails.UserDetails;
@@ -46,6 +48,54 @@
public void testGetUserDetails()
{
+ ContinuumUser continuumUser = createMockedUser();
+
+ UserDetails userDetails = userDetailsService.getUserDetails( continuumUser );
+
+ assertEquals( userDetails.getUsername(), continuumUser.getUsername() );
+
+ GrantedAuthority[] authorities = userDetails.getAuthorities();
+ for ( int i = 0; i < authorities.length; i++ )
+ {
+ assertEquals( "ROLE_p" + i, authorities[i].getAuthority() );
+ }
+ }
+
+ public void testPasswordEncoding()
+ {
+ ShaPasswordEncoder passwordEncoder = new ShaPasswordEncoder();
+ String shaPassword = passwordEncoder.encodePassword( "admin", null );
+
+ ContinuumUser continuumUser = new ContinuumUser();
+ continuumUser.setEncodedPassword( shaPassword );
+
+ assertTrue( continuumUser.equalsPassword( "admin" ) );
+ }
+
+ public void testAccountExpiration()
+ {
+ ContinuumUser continuumUser = createMockedUser();
+
+ userDetailsService.setDaysBeforeExpiration( 0 );
+ UserDetails userDetails = userDetailsService.getUserDetails( continuumUser );
+ assertTrue(userDetails.isAccountNonExpired());
+
+ userDetailsService.setDaysBeforeExpiration( -1 );
+ userDetails = userDetailsService.getUserDetails( continuumUser );
+ assertTrue(userDetails.isAccountNonExpired());
+
+ userDetailsService.setDaysBeforeExpiration( 1 );
+ userDetails = userDetailsService.getUserDetails( continuumUser );
+ assertTrue(userDetails.isAccountNonExpired());
+
+ Date twoDaysAgo = new Date( System.currentTimeMillis() - 2 * ContinuumUserDetailsService.MILLISECONDS_PER_DAY );
+ continuumUser.setLastPasswordChange( twoDaysAgo );
+ userDetails = userDetailsService.getUserDetails( continuumUser );
+ assertFalse(userDetails.isAccountNonExpired());
+ }
+
+ private ContinuumUser createMockedUser()
+ {
Permission p0 = new Permission();
p0.setName( "p0" );
Permission p1 = new Permission();
@@ -58,34 +108,16 @@
group.addPermission( p1 );
group.addPermission( p2 );
- ContinuumUser continuumUser = new ContinuumUser();
- continuumUser.setUsername( "username" );
- continuumUser.setPassword( "password" );
- continuumUser.setGroup( group );
-
ShaPasswordEncoder passwordEncoder = new ShaPasswordEncoder();
String shaPassword = passwordEncoder.encodePassword( "password", null );
- UserDetails userDetails = userDetailsService.getUserDetails( continuumUser );
-
- assertEquals( userDetails.getUsername(), continuumUser.getUsername() );
- assertEquals( userDetails.getPassword(), shaPassword );
-
- GrantedAuthority[] authorities = userDetails.getAuthorities();
- for ( int i = 0; i < authorities.length; i++ )
- {
- assertEquals( "ROLE_p" + i, authorities[i].getAuthority() );
- }
- }
-
- public void testPasswordEncoding()
- {
ContinuumUser continuumUser = new ContinuumUser();
- continuumUser.setPassword( "admin" );
+ continuumUser.setUsername( "username" );
+ continuumUser.setEncodedPassword( shaPassword );
+ continuumUser.setGroup( group );
- ShaPasswordEncoder passwordEncoder = new ShaPasswordEncoder();
- String shaPassword = passwordEncoder.encodePassword( "admin", null );
+ continuumUser.setLastPasswordChange( new Date() );
- assertEquals( continuumUser.getHashedPassword(), shaPassword );
+ return continuumUser;
}
}
Modified: maven/continuum/branches/continuum-acegi/continuum-webapp/pom.xml
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-webapp/pom.xml?view=diff&rev=439897&r1=439896&r2=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-webapp/pom.xml (original)
+++ maven/continuum/branches/continuum-acegi/continuum-webapp/pom.xml Sun Sep 3 18:48:58 2006
@@ -60,7 +60,7 @@
<version>1.0-alpha-8</version>
<executions>
<execution>
- <id>web summary model classes</id>
+ <id>project summary model</id>
<configuration>
<model>src/main/mdo/view-models.mdo</model>
<version>1.0.0</version>
@@ -69,16 +69,6 @@
<goal>java</goal>
</goals>
</execution>
- <execution>
- <id>session model classes</id>
- <configuration>
- <model>src/main/mdo/session-models.mdo</model>
- <version>1.0.0</version>
- </configuration>
- <goals>
- <goal>java</goal>
- </goals>
- </execution>
</executions>
</plugin>
<plugin>
@@ -264,6 +254,10 @@
<dependency>
<groupId>org.apache.maven.continuum</groupId>
<artifactId>continuum-security-acegi</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.shared.user</groupId>
+ <artifactId>maven-user-controller</artifactId>
</dependency>
</dependencies>
</project>
Modified: maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/resources/META-INF/plexus/application.xml
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/resources/META-INF/plexus/application.xml?view=diff&rev=439897&r1=439896&r2=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/resources/META-INF/plexus/application.xml (original)
+++ maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/resources/META-INF/plexus/application.xml Sun Sep 3 18:48:58 2006
@@ -353,7 +353,8 @@
<implementation>org.apache.maven.continuum.security.acegi.ContinuumUserDetailsService</implementation>
<requirements>
<requirement>
- <role>org.apache.maven.continuum.store.ContinuumStore</role>
+ <role>org.apache.maven.user.model.UserManager</role>
+ <field-name>userManager</field-name>
</requirement>
</requirements>
</component>
@@ -791,6 +792,109 @@
-->
</levels>
</configuration>
+ </component>
+ <component>
+ <role>org.apache.maven.user.model.UserManager</role>
+ <implementation>org.apache.maven.user.model.impl.DefaultUserManager</implementation>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.user.model.store.UserStore</role>
+ <field-name>userStore</field-name>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.user.model.UserSecurityPolicy</role>
+ <field-name>securityPolicy</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.apache.maven.user.model.store.UserStore</role>
+ <implementation>org.apache.maven.user.model.store.impl.DefaultUserStore</implementation>
+ <requirements>
+ <requirement>
+ <role>org.codehaus.plexus.jdo.JdoFactory</role>
+ <field-name>jdoFactory</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.apache.maven.user.model.UserSecurityPolicy</role>
+ <implementation>org.apache.maven.user.model.impl.DefaultUserSecurityPolicy</implementation>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.user.model.PasswordEncoder</role>
+ <role-hint>sha256</role-hint>
+ <field-name>passwordEncoder</field-name>
+ </requirement>
+ </requirements>
+ <configuration>
+ <allowedLoginAttempts>3</allowedLoginAttempts>
+ <previousPasswordsCount>6</previousPasswordsCount>
+ <systemSalt>Step doog ekam Skravdraa</systemSalt>
+ </configuration>
+ </component>
+
+ <component>
+ <role>com.opensymphony.xwork.Action</role>
+ <role-hint>users</role-hint>
+ <implementation>org.apache.maven.user.controller.action.UsersAction</implementation>
+ <instantiation-strategy>per-lookup</instantiation-strategy>
+ <description></description>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.user.model.UserManager</role>
+ <field-name>userManager</field-name>
+ </requirement>
+ </requirements>
+ </component>
+ <component>
+ <role>com.opensymphony.xwork.Action</role>
+ <role-hint>editUser</role-hint>
+ <implementation>org.apache.maven.user.controller.action.EditUserAction</implementation>
+ <instantiation-strategy>per-lookup</instantiation-strategy>
+ <description></description>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.user.model.UserManager</role>
+ <field-name>userManager</field-name>
+ </requirement>
+ </requirements>
+ </component>
+ <component>
+ <role>com.opensymphony.xwork.Action</role>
+ <role-hint>deleteUser</role-hint>
+ <implementation>org.apache.maven.user.controller.action.DeleteUserAction</implementation>
+ <instantiation-strategy>per-lookup</instantiation-strategy>
+ <description></description>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.user.model.UserManager</role>
+ <field-name>userManager</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.apache.maven.continuum.initialization.ContinuumInitializer</role>
+ <implementation>org.apache.maven.continuum.initialization.DefaultContinuumInitializer</implementation>
+ <requirements>
+ <requirement>
+ <role>org.apache.maven.continuum.store.ContinuumStore</role>
+ <field-name>store</field-name>
+ </requirement>
+ <requirement>
+ <role>org.apache.maven.user.model.UserManager</role>
+ <field-name>userManager</field-name>
+ </requirement>
+ </requirements>
+ </component>
+
+ <component>
+ <role>org.apache.maven.user.model.PasswordEncoder</role>
+ <role-hint>sha256</role-hint>
+ <implementation>org.apache.maven.user.model.impl.SHA256PasswordEncoder</implementation>
</component>
</components>
Modified: maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/configurationEdit.jsp
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/configurationEdit.jsp?view=diff&rev=439897&r1=439896&r2=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/configurationEdit.jsp (original)
+++ maven/continuum/branches/continuum-acegi/continuum-webapp/src/main/webapp/configurationEdit.jsp Sun Sep 3 18:48:58 2006
@@ -1,49 +1,33 @@
<%@ taglib uri="/webwork" prefix="ww" %>
<%@ taglib uri="continuum" prefix="c1" %>
<html>
-<ww:i18n name="localization.Continuum">
- <head>
- <title><ww:text name="configuration.page.title"/></title>
- </head>
+ <ww:i18n name="localization.Continuum">
+ <head>
+ <title><ww:text name="configuration.page.title"/></title>
+ </head>
+ <body>
+ <div id="axial" class="h3">
+ <h3><ww:text name="configuration.section.title"/></h3>
- <body>
- <div id="axial" class="h3">
- <h3><ww:text name="configuration.section.title"/></h3>
- <ww:form action="configuration.action" method="post">
-
- <div class="axial">
- <table border="1" cellspacing="2" cellpadding="3" width="100%">
- <ww:textfield label="Username" name="username"/>
- <ww:textfield label="Full Name" name="fullName"/>
- <ww:textfield label="Email" name="email"/>
- <ww:textfield label="Password" name="password"/>
- <ww:textfield label="Password(again)" name="passwordTwo"/>
- </table>
- </div>
-
- <div class="axial">
-
- <table>
- <tbody>
- <ww:checkbox label="%{getText('configuration.guest.label')}" name="guestAccountEnabled"
- value="guestAccountEnabled" fieldValue="true"/>
- <ww:textfield label="%{getText('configuration.workingDirectory.label')}" name="workingDirectory"
- required="true"/>
- <ww:textfield label="%{getText('configuration.buildOutputDirectory.label')}" name="buildOutputDirectory"
- required="true"/>
- <ww:textfield label="%{getText('configuration.baseUrl.label')}" name="baseUrl" required="true"/>
- <ww:textfield label="%{getText('configuration.companyName.label')}" name="companyName"/>
- <ww:textfield label="%{getText('configuration.companyLogo.label')}" name="companyLogo"/>
- <ww:textfield label="%{getText('configuration.companyUrl.label')}" name="companyUrl"/>
- </tbody>
- </table>
- <div class="functnbar3">
- <c1:submitcancel value="%{getText('save')}" cancel="%{getText('cancel')}"/>
+ <div class="axial">
+ <ww:form action="configuration.action" method="post">
+ <table>
+ <tbody>
+ <ww:checkbox label="%{getText('configuration.guest.label')}" name="guestAccountEnabled" value="guestAccountEnabled" fieldValue="true"/>
+ <ww:textfield label="%{getText('configuration.workingDirectory.label')}" name="workingDirectory" required="true"/>
+ <ww:textfield label="%{getText('configuration.buildOutputDirectory.label')}" name="buildOutputDirectory" required="true"/>
+ <ww:textfield label="%{getText('configuration.baseUrl.label')}" name="baseUrl" required="true"/>
+ <ww:textfield label="%{getText('configuration.companyName.label')}" name="companyName"/>
+ <ww:textfield label="%{getText('configuration.companyLogo.label')}" name="companyLogo"/>
+ <ww:textfield label="%{getText('configuration.companyUrl.label')}" name="companyUrl"/>
+ </tbody>
+ </table>
+ <div class="functnbar3">
+ <c1:submitcancel value="%{getText('save')}" cancel="%{getText('cancel')}"/>
+ </div>
+ </ww:form>
</div>
-
</div>
- </ww:form>
- </div>
- </body>
-</ww:i18n>
+ </body>
+ </ww:i18n>
</html>
Modified: maven/continuum/branches/continuum-acegi/pom.xml
URL: http://svn.apache.org/viewvc/maven/continuum/branches/continuum-acegi/pom.xml?view=diff&rev=439897&r1=439896&r2=439897
==============================================================================
--- maven/continuum/branches/continuum-acegi/pom.xml (original)
+++ maven/continuum/branches/continuum-acegi/pom.xml Sun Sep 3 18:48:58 2006
@@ -412,6 +412,16 @@
<version>1.0-alpha-3</version>
</dependency>
<dependency>
+ <groupId>org.apache.maven.shared.user</groupId>
+ <artifactId>maven-user-model</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.shared.user</groupId>
+ <artifactId>maven-user-controller</artifactId>
+ <version>1.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.2.1</version>