Browse Source

Make DMS Sample work post-Spring Security 2 refactor.

Ben Alex 17 năm trước cách đây
mục cha
commit
b44b748452

+ 22 - 2
samples/dms/pom.xml

@@ -8,18 +8,38 @@
    <artifactId>spring-security-samples</artifactId>
    <version>2.0-SNAPSHOT</version>
  </parent>
- <artifactId>spring-security-sample-dms</artifactId>
- <name>Spring Security - dms sample</name>
+ <artifactId>spring-security-samples-dms</artifactId>
+ <name>Spring Security - DMS sample</name>
   <dependencies>
      <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>${project.version}</version>
      </dependency>
+    <dependency>
+        <groupId>org.springframework</groupId>
+        <artifactId>spring-jdbc</artifactId>
+    </dependency>
+    <dependency>
+        <groupId>org.springframework</groupId>
+        <artifactId>spring-aop</artifactId>
+        <scope>runtime</scope>
+    </dependency>
      <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-mock</artifactId>
        <version>${spring.version}</version>
      </dependency>
+    <dependency>
+      <groupId>hsqldb</groupId>
+      <artifactId>hsqldb</artifactId>
+      <version>1.8.0.4</version>
+    </dependency>
+    <dependency>
+      <groupId>net.sf.ehcache</groupId>
+      <artifactId>ehcache</artifactId>
+      <version>1.2.4</version>
+      <scope>runtime</scope>
+    </dependency>
  </dependencies>
 </project>

+ 10 - 10
samples/dms/src/main/java/sample/dms/DataSourcePopulator.java

@@ -2,13 +2,13 @@ package sample.dms;
 
 import javax.sql.DataSource;
 
-import org.acegisecurity.Authentication;
-import org.acegisecurity.GrantedAuthority;
-import org.acegisecurity.GrantedAuthorityImpl;
-import org.acegisecurity.context.SecurityContextHolder;
-import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.security.Authentication;
+import org.springframework.security.GrantedAuthority;
+import org.springframework.security.GrantedAuthorityImpl;
+import org.springframework.security.context.SecurityContextHolder;
+import org.springframework.security.providers.UsernamePasswordAuthenticationToken;
 import org.springframework.transaction.PlatformTransactionManager;
 import org.springframework.transaction.TransactionStatus;
 import org.springframework.transaction.support.TransactionCallback;
@@ -57,15 +57,15 @@ public class DataSourcePopulator implements InitializingBean {
            template.execute("CREATE TABLE FILE(ID BIGINT GENERATED BY DEFAULT AS IDENTITY(START WITH 100) NOT NULL PRIMARY KEY, FILE_NAME VARCHAR_IGNORECASE(50) NOT NULL, CONTENT VARCHAR_IGNORECASE(1024), PARENT_DIRECTORY_ID BIGINT)");
 
            // Populate the authentication and role tables
-           template.execute("INSERT INTO USERS VALUES('marissa','a564de63c2d0da68cf47586ee05984d7',TRUE);");
+           template.execute("INSERT INTO USERS VALUES('rod','a564de63c2d0da68cf47586ee05984d7',TRUE);");
            template.execute("INSERT INTO USERS VALUES('dianne','65d15fe9156f9c4bbffd98085992a44e',TRUE);");
            template.execute("INSERT INTO USERS VALUES('scott','2b58af6dddbd072ed27ffc86725d7d3a',TRUE);");
            template.execute("INSERT INTO USERS VALUES('peter','22b5c9accc6e1ba628cedc63a72d57f8',FALSE);");
            template.execute("INSERT INTO USERS VALUES('bill','2b58af6dddbd072ed27ffc86725d7d3a',TRUE);");
            template.execute("INSERT INTO USERS VALUES('bob','2b58af6dddbd072ed27ffc86725d7d3a',TRUE);");
            template.execute("INSERT INTO USERS VALUES('jane','2b58af6dddbd072ed27ffc86725d7d3a',TRUE);");
-           template.execute("INSERT INTO AUTHORITIES VALUES('marissa','ROLE_USER');");
-           template.execute("INSERT INTO AUTHORITIES VALUES('marissa','ROLE_SUPERVISOR');");
+           template.execute("INSERT INTO AUTHORITIES VALUES('rod','ROLE_USER');");
+           template.execute("INSERT INTO AUTHORITIES VALUES('rod','ROLE_SUPERVISOR');");
            template.execute("INSERT INTO AUTHORITIES VALUES('dianne','ROLE_USER');");
            template.execute("INSERT INTO AUTHORITIES VALUES('scott','ROLE_USER');");
            template.execute("INSERT INTO AUTHORITIES VALUES('peter','ROLE_USER');");
@@ -74,7 +74,7 @@ public class DataSourcePopulator implements InitializingBean {
            template.execute("INSERT INTO AUTHORITIES VALUES('jane','ROLE_USER');");
 
            // Now create an ACL entry for the root directory
-           SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken("marissa", "ignored", new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_IGNORED")}));
+           SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken("rod", "ignored", new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_IGNORED")}));
            tt.execute(new TransactionCallback() {
                public Object doInTransaction(TransactionStatus arg0) {
                    addPermission(documentDao, Directory.ROOT_DIRECTORY, "ROLE_USER", LEVEL_GRANT_WRITE);
@@ -83,7 +83,7 @@ public class DataSourcePopulator implements InitializingBean {
            });
 
            // Now go off and create some directories and files for our users
-           createSampleData("marissa", "koala");
+           createSampleData("rod", "koala");
            createSampleData("dianne", "emu");
            createSampleData("scott", "wombat");
     }

+ 1 - 1
samples/dms/src/main/java/sample/dms/DocumentDaoImpl.java

@@ -4,9 +4,9 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.List;
 
-import org.acegisecurity.util.FieldUtils;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.jdbc.core.support.JdbcDaoSupport;
+import org.springframework.security.util.FieldUtils;
 import org.springframework.transaction.support.TransactionSynchronizationManager;
 import org.springframework.util.Assert;
 

+ 11 - 11
samples/dms/src/main/java/sample/dms/secured/SecureDataSourcePopulator.java

@@ -2,17 +2,17 @@ package sample.dms.secured;
 
 import javax.sql.DataSource;
 
-import org.acegisecurity.acls.MutableAcl;
-import org.acegisecurity.acls.MutableAclService;
-import org.acegisecurity.acls.NotFoundException;
-import org.acegisecurity.acls.Permission;
-import org.acegisecurity.acls.domain.BasePermission;
-import org.acegisecurity.acls.objectidentity.ObjectIdentity;
-import org.acegisecurity.acls.objectidentity.ObjectIdentityImpl;
-import org.acegisecurity.acls.sid.GrantedAuthoritySid;
-import org.acegisecurity.acls.sid.PrincipalSid;
-import org.acegisecurity.acls.sid.Sid;
-import org.acegisecurity.context.SecurityContextHolder;
+import org.springframework.security.acls.MutableAcl;
+import org.springframework.security.acls.MutableAclService;
+import org.springframework.security.acls.NotFoundException;
+import org.springframework.security.acls.Permission;
+import org.springframework.security.acls.domain.BasePermission;
+import org.springframework.security.acls.objectidentity.ObjectIdentity;
+import org.springframework.security.acls.objectidentity.ObjectIdentityImpl;
+import org.springframework.security.acls.sid.GrantedAuthoritySid;
+import org.springframework.security.acls.sid.PrincipalSid;
+import org.springframework.security.acls.sid.Sid;
+import org.springframework.security.context.SecurityContextHolder;
 import org.springframework.transaction.PlatformTransactionManager;
 import org.springframework.util.Assert;
 

+ 7 - 7
samples/dms/src/main/java/sample/dms/secured/SecureDocumentDaoImpl.java

@@ -3,14 +3,14 @@ package sample.dms.secured;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 
-import org.acegisecurity.acls.MutableAcl;
-import org.acegisecurity.acls.MutableAclService;
-import org.acegisecurity.acls.domain.BasePermission;
-import org.acegisecurity.acls.objectidentity.ObjectIdentity;
-import org.acegisecurity.acls.objectidentity.ObjectIdentityImpl;
-import org.acegisecurity.acls.sid.PrincipalSid;
-import org.acegisecurity.context.SecurityContextHolder;
 import org.springframework.jdbc.core.RowMapper;
+import org.springframework.security.acls.MutableAcl;
+import org.springframework.security.acls.MutableAclService;
+import org.springframework.security.acls.domain.BasePermission;
+import org.springframework.security.acls.objectidentity.ObjectIdentity;
+import org.springframework.security.acls.objectidentity.ObjectIdentityImpl;
+import org.springframework.security.acls.sid.PrincipalSid;
+import org.springframework.security.context.SecurityContextHolder;
 import org.springframework.util.Assert;
 
 import sample.dms.AbstractElement;

+ 7 - 0
samples/dms/src/main/resources/applicationContext-dms-insecure.xml

@@ -9,6 +9,13 @@
 
 <beans>
 
+    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
+        <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
+        <property name="url" value="jdbc:hsqldb:mem:insecuredms"/>
+        <property name="username" value="sa"/>
+        <property name="password" value=""/>
+    </bean>
+
 	<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
 		<property name="transactionAttributeSource">
 			<value>

+ 7 - 0
samples/dms/src/main/resources/applicationContext-dms-secure.xml

@@ -9,6 +9,13 @@
 
 <beans>
 
+    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
+        <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
+        <property name="url" value="jdbc:hsqldb:mem:securedms"/>
+        <property name="username" value="sa"/>
+        <property name="password" value=""/>
+    </bean>
+	
 	<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
 		<property name="transactionAttributeSource">
 			<value>

+ 1 - 8
samples/dms/src/main/resources/applicationContext-dms-shared.xml

@@ -9,15 +9,8 @@
 
 <beans>
 
-    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
-        <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
-        <property name="url" value="jdbc:hsqldb:mem:test"/>
-        <property name="username" value="sa"/>
-        <property name="password" value=""/>
-    </bean>
-	
 	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
-		<property name="dataSource"><ref local="dataSource"/></property>
+		<property name="dataSource"><ref bean="dataSource"/></property>
 	</bean>
 
 	<bean id="autoproxy" class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" />

+ 5 - 5
samples/dms/src/test/java/DmsIntegrationTests.java

@@ -1,5 +1,5 @@
-import org.acegisecurity.context.SecurityContextHolder;
-import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
+import org.springframework.security.context.SecurityContextHolder;
+import org.springframework.security.providers.UsernamePasswordAuthenticationToken;
 import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests;
 
 import sample.dms.AbstractElement;
@@ -20,9 +20,9 @@ public class DmsIntegrationTests extends AbstractTransactionalDataSourceSpringCo
         return new String[] {"classpath:applicationContext-dms-shared.xml", "classpath:applicationContext-dms-insecure.xml"};
     }
 
-    public void tearDown() {
+	protected void onTearDown() throws Exception {
         SecurityContextHolder.clearContext();
-    }
+	}
 
     public void setDocumentDao(DocumentDao documentDao) {
         this.documentDao = documentDao;
@@ -35,7 +35,7 @@ public class DmsIntegrationTests extends AbstractTransactionalDataSourceSpringCo
     }
 
     public void testMarissaRetrieval() {
-        process("marissa", "koala", false);
+        process("rod", "koala", false);
     }
 
     public void testScottRetrieval() {

+ 3 - 3
samples/dms/src/test/java/SecureDmsIntegrationTests.java

@@ -1,4 +1,4 @@
-import org.acegisecurity.acls.AclService;
+import org.springframework.security.acls.AclService;
 
 
 
@@ -31,7 +31,7 @@ public class SecureDmsIntegrationTests extends DmsIntegrationTests {
     }
     /*
     public void testItOut() {
-        SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken("marissa", "password", new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_SUPERVISOR")}));
+        SecurityContextHolder.getContext().setAuthentication(new UsernamePasswordAuthenticationToken("rod", "password", new GrantedAuthority[] {new GrantedAuthorityImpl("ROLE_SUPERVISOR")}));
 
 
         AbstractElement[] elements = documentDao.findElements(Directory.ROOT_DIRECTORY);
@@ -43,7 +43,7 @@ public class SecureDmsIntegrationTests extends DmsIntegrationTests {
     }*/
 
     public void testMarissaRetrieval() {
-        process("marissa", "koala", true);
+        process("rod", "koala", true);
     }