diff --git a/config/alfresco/authentication-services-context.xml b/config/alfresco/authentication-services-context.xml
index dbe1f3a402..a1c7e395d9 100644
--- a/config/alfresco/authentication-services-context.xml
+++ b/config/alfresco/authentication-services-context.xml
@@ -192,6 +192,9 @@
+
+ true
+
diff --git a/config/alfresco/bootstrap/alfrescoUserStore.xml b/config/alfresco/bootstrap/alfrescoUserStore.xml
new file mode 100644
index 0000000000..346595b3af
--- /dev/null
+++ b/config/alfresco/bootstrap/alfrescoUserStore.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+ admin
+ 209c6174da490caeb422f3fa5a7ae634
+ true
+ false
+ false
+ false
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/config/alfresco/bootstrap/spaces.xml b/config/alfresco/bootstrap/spaces.xml
index 5ee82d0e5d..79b6dc82b7 100644
--- a/config/alfresco/bootstrap/spaces.xml
+++ b/config/alfresco/bootstrap/spaces.xml
@@ -5,6 +5,12 @@
+
+
+ GROUP_EVERYONE
+ Read
+
+
${spaces.company_home.name}
space-icon-default
@@ -41,6 +47,23 @@
+
+
+
+ Guest
+ Read
+
+
+ GROUP_EVERYONE
+ Read
+
+
+
+ ${spaces.guest_home.name}
+ space-icon-default
+ ${spaces.guest_home.name}
+ ${spaces.guest_home.description}
+
diff --git a/config/alfresco/bootstrap/system.xml b/config/alfresco/bootstrap/system.xml
new file mode 100644
index 0000000000..428044ad94
--- /dev/null
+++ b/config/alfresco/bootstrap/system.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+ admin
+ Administrator
+
+
+
+ /${spaces.company_home.childname}
+
+
+ Guest
+ Guest
+
+
+
+ /${spaces.company_home.childname}/${spaces.guest_home.childname}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/config/alfresco/bootstrap/tutorial.xml b/config/alfresco/bootstrap/tutorial.xml
index b21031de08..c8d531cbd2 100644
--- a/config/alfresco/bootstrap/tutorial.xml
+++ b/config/alfresco/bootstrap/tutorial.xml
@@ -2,12 +2,14 @@
xmlns:cm="http://www.alfresco.org/model/content/1.0"
xmlns:app="http://www.alfresco.org/model/application/1.0">
+
${tutorial.document.name}
@@ -15,7 +17,9 @@
${tutorial.document.description}
contentUrl=classpath:alfresco/bootstrap/${tutorial.document.name}|mimetype=application/pdf|size=|encoding=
+
diff --git a/config/alfresco/core-services-context.xml b/config/alfresco/core-services-context.xml
index 42692b4efe..b3b16edb90 100644
--- a/config/alfresco/core-services-context.xml
+++ b/config/alfresco/core-services-context.xml
@@ -709,7 +709,53 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${alfresco_user_store.store}
+
+
+ ${server.transaction.allow-writes}
+
+
+
+ ${alfresco_user_store.system_container.childname}
+ ${alfresco_user_store.user_container.childname}
+ ${alfresco_user_store.authorities_container.childname}
+
+
+
+
+
+
+ /
+ alfresco/bootstrap/alfrescoUserStore.xml
+
+
+
+
+
+
+
@@ -734,6 +780,9 @@
${spaces.company_home.childname}
+ ${spaces.guest_home.childname}
+ ${system.system_container.childname}
+ ${system.people_container.childname}
${spaces.dictionary.childname}
${spaces.templates.childname}
${spaces.templates.content.childname}
@@ -757,7 +806,11 @@
alfresco/messages/bootstrap-spaces
- /${spaces.company_home.childname}
+ /
+ alfresco/bootstrap/system.xml
+
+
+ /${spaces.company_home.childname}/${spaces.guest_home.childname}
alfresco/bootstrap/tutorial.xml
alfresco/messages/bootstrap-tutorial
diff --git a/config/alfresco/messages/bootstrap-spaces.properties b/config/alfresco/messages/bootstrap-spaces.properties
index 4a0e66aac8..dfb00edefa 100644
--- a/config/alfresco/messages/bootstrap-spaces.properties
+++ b/config/alfresco/messages/bootstrap-spaces.properties
@@ -14,3 +14,6 @@ spaces.templates.content.description=Content templates
spaces.savedsearches.name=Saved Searches
spaces.savedsearches.description=Saved Searches
+
+spaces.guest_home.name=Guest Home
+spaces.guest_home.description=The guest root space
diff --git a/config/alfresco/repository.properties b/config/alfresco/repository.properties
index 952493c3de..70b09948ea 100644
--- a/config/alfresco/repository.properties
+++ b/config/alfresco/repository.properties
@@ -62,15 +62,30 @@ mail.password=
system.store=system://system
system.descriptor.childname=sys:descriptor
+# User config
+
+alfresco_user_store.store=user://alfrescoUserStore
+alfresco_user_store.system_container.childname=sys:system
+alfresco_user_store.user_container.childname=sys:people
+alfresco_user_store.authorities_container.childname=sys:authorities
+
# Spaces Configuration
spaces.store=workspace://SpacesStore
spaces.company_home.childname=app:company_home
+spaces.guest_home.childname=app:guest_home
spaces.dictionary.childname=app:dictionary
spaces.templates.childname=app:space_templates
spaces.templates.content.childname=app:content_templates
spaces.savedsearches.childname=app:saved_searches
+# Folders for storing people
+
+system.system_container.childname=sys:system
+system.people_container.childname=sys:people
+
# Are user names case sensitive?
user.name.caseSensitive=false
+
+
diff --git a/source/java/org/alfresco/repo/importer/ExportSource.java b/source/java/org/alfresco/repo/importer/ExportSource.java
new file mode 100644
index 0000000000..dfc0f4a5ee
--- /dev/null
+++ b/source/java/org/alfresco/repo/importer/ExportSource.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2005 Alfresco, Inc.
+ *
+ * Licensed under the Mozilla Public License version 1.1
+ * with a permitted attribution clause. You may obtain a
+ * copy of the License at
+ *
+ * http://www.alfresco.org/legal/license.txt
+ *
+ * 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.
+ */
+package org.alfresco.repo.importer;
+
+import org.dom4j.io.XMLWriter;
+
+public interface ExportSource
+{
+ /**
+ * Generate XML suitable for use with the importer.
+ *
+ * @param writer
+ */
+ public void generateExport(XMLWriter writer);
+}
diff --git a/source/java/org/alfresco/repo/importer/ExportSourceImporter.java b/source/java/org/alfresco/repo/importer/ExportSourceImporter.java
new file mode 100644
index 0000000000..29a5716af4
--- /dev/null
+++ b/source/java/org/alfresco/repo/importer/ExportSourceImporter.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2005 Alfresco, Inc.
+ *
+ * Licensed under the Mozilla Public License version 1.1
+ * with a permitted attribution clause. You may obtain a
+ * copy of the License at
+ *
+ * http://www.alfresco.org/legal/license.txt
+ *
+ * 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.
+ */
+package org.alfresco.repo.importer;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.Writer;
+
+import org.alfresco.service.cmr.repository.StoreRef;
+import org.alfresco.service.cmr.view.ImporterBinding;
+import org.alfresco.service.cmr.view.ImporterService;
+import org.alfresco.service.cmr.view.Location;
+import org.alfresco.util.TempFileProvider;
+import org.dom4j.io.OutputFormat;
+import org.dom4j.io.XMLWriter;
+
+public class ExportSourceImporter implements ImporterJobSPI
+{
+ private ImporterService importerService;
+
+ private ExportSource exportSource;
+
+ private StoreRef storeRef;
+
+ private String path;
+
+ public ExportSourceImporter()
+ {
+ super();
+ }
+
+ public void setImporterService(ImporterService importerService)
+ {
+ this.importerService = importerService;
+ }
+
+ public void setExportSource(ExportSource exportSource)
+ {
+ this.exportSource = exportSource;
+ }
+
+ public void doImport()
+ {
+ try
+ {
+ File tempFile = TempFileProvider.createTempFile("ExportSourceImporter-", ".xml");
+ Writer writer = new BufferedWriter(new FileWriter(tempFile));
+ XMLWriter xmlWriter = createXMLExporter(writer);
+ exportSource.generateExport(xmlWriter);
+ xmlWriter.close();
+
+ Reader reader = new BufferedReader(new FileReader(tempFile));
+
+ Location location = new Location(storeRef);
+ location.setPath(path);
+
+ importerService.importView(reader, location, REPLACE_BINDING, null);
+ reader.close();
+ }
+ catch (IOException io)
+ {
+ throw new ExportSourceImporterException("Failed to import", io);
+ }
+ }
+
+ private XMLWriter createXMLExporter(Writer writer)
+ {
+ // Define output format
+ OutputFormat format = OutputFormat.createPrettyPrint();
+ format.setNewLineAfterDeclaration(false);
+ format.setIndentSize(3);
+ format.setEncoding("UTF-8");
+
+ // Construct an XML Exporter
+
+ XMLWriter xmlWriter = new XMLWriter(writer, format);
+ return xmlWriter;
+ }
+
+ private static ImporterBinding REPLACE_BINDING = new ImporterBinding()
+ {
+
+ public UUID_BINDING getUUIDBinding()
+ {
+ return UUID_BINDING.REPLACE_EXISTING;
+ }
+
+ public String getValue(String key)
+ {
+ return null;
+ }
+
+ };
+
+}
diff --git a/source/java/org/alfresco/repo/importer/ExportSourceImporterException.java b/source/java/org/alfresco/repo/importer/ExportSourceImporterException.java
new file mode 100644
index 0000000000..9cdfa1b8ea
--- /dev/null
+++ b/source/java/org/alfresco/repo/importer/ExportSourceImporterException.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2005 Alfresco, Inc.
+ *
+ * Licensed under the Mozilla Public License version 1.1
+ * with a permitted attribution clause. You may obtain a
+ * copy of the License at
+ *
+ * http://www.alfresco.org/legal/license.txt
+ *
+ * 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.
+ */
+package org.alfresco.repo.importer;
+
+import org.alfresco.error.AlfrescoRuntimeException;
+
+public class ExportSourceImporterException extends AlfrescoRuntimeException
+{
+
+ /**
+ * Comment for serialVersionUID
+ */
+ private static final long serialVersionUID = -2366069362776024153L;
+
+ public ExportSourceImporterException(String msgId)
+ {
+ super(msgId);
+ }
+
+ public ExportSourceImporterException(String msgId, Object[] msgParams)
+ {
+ super(msgId, msgParams);
+ }
+
+ public ExportSourceImporterException(String msgId, Throwable cause)
+ {
+ super(msgId, cause);
+ }
+
+ public ExportSourceImporterException(String msgId, Object[] msgParams, Throwable cause)
+ {
+ super(msgId, msgParams, cause);
+ }
+
+}
diff --git a/source/java/org/alfresco/repo/importer/ImporterComponent.java b/source/java/org/alfresco/repo/importer/ImporterComponent.java
index 40668fa912..05cc574019 100644
--- a/source/java/org/alfresco/repo/importer/ImporterComponent.java
+++ b/source/java/org/alfresco/repo/importer/ImporterComponent.java
@@ -569,7 +569,7 @@ public class ImporterComponent
searchParameters.addStore(importedRef.context.getNodeRef().getStoreRef());
searchParameters.setLanguage(SearchService.LANGUAGE_LUCENE);
searchParameters.setQuery("PATH:\"" + importedRef.value + "\"");
- searchParameters.excludeDataInTheCurrentTransaction(true);
+ searchParameters.excludeDataInTheCurrentTransaction(false);
ResultSet resultSet = searchService.query(searchParameters);
try
{
diff --git a/source/java/org/alfresco/repo/importer/ImporterJob.java b/source/java/org/alfresco/repo/importer/ImporterJob.java
new file mode 100644
index 0000000000..42bd535107
--- /dev/null
+++ b/source/java/org/alfresco/repo/importer/ImporterJob.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2005 Alfresco, Inc.
+ *
+ * Licensed under the Mozilla Public License version 1.1
+ * with a permitted attribution clause. You may obtain a
+ * copy of the License at
+ *
+ * http://www.alfresco.org/legal/license.txt
+ *
+ * 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.
+ */
+package org.alfresco.repo.importer;
+
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+import org.quartz.JobExecutionException;
+
+public class ImporterJob implements Job
+{
+ public ImporterJob()
+ {
+ super();
+ }
+
+ public void execute(JobExecutionContext executionContext) throws JobExecutionException
+ {
+ ImporterJobSPI importerJob = (ImporterJobSPI) executionContext.getJobDetail().getJobDataMap()
+ .get("bean");
+ if (importerJob != null)
+ {
+ importerJob.doImport();
+ }
+
+ }
+}
diff --git a/source/java/org/alfresco/repo/importer/ImporterJobSPI.java b/source/java/org/alfresco/repo/importer/ImporterJobSPI.java
new file mode 100644
index 0000000000..79003b6010
--- /dev/null
+++ b/source/java/org/alfresco/repo/importer/ImporterJobSPI.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2005 Alfresco, Inc.
+ *
+ * Licensed under the Mozilla Public License version 1.1
+ * with a permitted attribution clause. You may obtain a
+ * copy of the License at
+ *
+ * http://www.alfresco.org/legal/license.txt
+ *
+ * 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.
+ */
+package org.alfresco.repo.importer;
+
+public interface ImporterJobSPI
+{
+ public void doImport();
+}
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/LuceneIndexerImpl.java b/source/java/org/alfresco/repo/search/impl/lucene/LuceneIndexerImpl.java
index d9a2c5ed62..acebaa3cfc 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/LuceneIndexerImpl.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/LuceneIndexerImpl.java
@@ -81,7 +81,7 @@ import org.apache.lucene.search.TermQuery;
* behaviour if used on its own.
*
* @author andyh
- *
+ *
*/
public class LuceneIndexerImpl extends LuceneBase implements LuceneIndexer
{
diff --git a/source/java/org/alfresco/repo/search/impl/lucene/LuceneTest.java b/source/java/org/alfresco/repo/search/impl/lucene/LuceneTest.java
index 1f2eb458b5..e570afd091 100644
--- a/source/java/org/alfresco/repo/search/impl/lucene/LuceneTest.java
+++ b/source/java/org/alfresco/repo/search/impl/lucene/LuceneTest.java
@@ -3128,6 +3128,7 @@ public class LuceneTest extends TestCase
ResultSet results = test.serviceRegistry.getSearchService().query(sp);
results.close();
-
+
+ //test.dictionaryService.getType(test.nodeService.getType(test.rootNodeRef)).getDefaultAspects();
}
}
diff --git a/source/java/org/alfresco/repo/security/authentication/AbstractAuthenticationComponent.java b/source/java/org/alfresco/repo/security/authentication/AbstractAuthenticationComponent.java
index cba263d83f..63b0e0c4b1 100644
--- a/source/java/org/alfresco/repo/security/authentication/AbstractAuthenticationComponent.java
+++ b/source/java/org/alfresco/repo/security/authentication/AbstractAuthenticationComponent.java
@@ -17,6 +17,7 @@
package org.alfresco.repo.security.authentication;
import org.alfresco.error.AlfrescoRuntimeException;
+import org.alfresco.service.cmr.security.PermissionService;
import net.sf.acegisecurity.Authentication;
import net.sf.acegisecurity.GrantedAuthority;
@@ -30,11 +31,9 @@ import net.sf.acegisecurity.providers.UsernamePasswordAuthenticationToken;
import net.sf.acegisecurity.providers.dao.User;
/**
- * This class abstract the support required to set up and query the Acegi
- * context for security enforcement.
+ * This class abstract the support required to set up and query the Acegi context for security enforcement.
*
- * There are some simple default method implementations to support simple
- * authentication.
+ * There are some simple default method implementations to support simple authentication.
*
* @author Andy Hind
*/
@@ -45,11 +44,18 @@ public abstract class AbstractAuthenticationComponent implements AuthenticationC
private static final String SYSTEM_USER_NAME = "System";
+ private Boolean allowGuestLogin = null;
+
public AbstractAuthenticationComponent()
{
super();
}
+ public void setAllowGuestLogin(Boolean allowGuestLogin)
+ {
+ this.allowGuestLogin = allowGuestLogin;
+ }
+
/**
* Explicitly set the current user to be authenticated.
*
@@ -59,11 +65,11 @@ public abstract class AbstractAuthenticationComponent implements AuthenticationC
*/
public Authentication setCurrentUser(String userName) throws AuthenticationException
{
- if(userName == null)
+ if (userName == null)
{
throw new AuthenticationException("Null user name");
}
-
+
try
{
UserDetails ud = null;
@@ -73,6 +79,11 @@ public abstract class AbstractAuthenticationComponent implements AuthenticationC
gas[0] = new GrantedAuthorityImpl("ROLE_SYSTEM");
ud = new User(SYSTEM_USER_NAME, "", true, true, true, true, gas);
}
+ else if (userName.equals(PermissionService.GUEST))
+ {
+ GrantedAuthority[] gas = new GrantedAuthority[0];
+ ud = new User(PermissionService.GUEST, "", true, true, true, true, gas);
+ }
else
{
ud = getUserDetails(userName);
@@ -199,6 +210,46 @@ public abstract class AbstractAuthenticationComponent implements AuthenticationC
return SYSTEM_USER_NAME;
}
+ /**
+ * Get the name of the Guest User
+ */
+ public String getGuestUserName()
+ {
+ return PermissionService.GUEST;
+ }
+
+ /**
+ * Set the guest user as the current user.
+ */
+ public Authentication setGuestUserAsCurrentUser() throws AuthenticationException
+ {
+ if (allowGuestLogin == null)
+ {
+ if(implementationAllowsGuestLogin())
+ {
+ return setCurrentUser(PermissionService.GUEST);
+ }
+ else
+ {
+ throw new AuthenticationException("Guest authentication is not allowed");
+ }
+ }
+ else
+ {
+ if(allowGuestLogin.booleanValue())
+ {
+ return setCurrentUser(PermissionService.GUEST);
+ }
+ else
+ {
+ throw new AuthenticationException("Guest authentication is not allowed");
+ }
+
+ }
+ }
+
+ protected abstract boolean implementationAllowsGuestLogin();
+
/**
* Remove the current security information
*/
@@ -224,8 +275,7 @@ public abstract class AbstractAuthenticationComponent implements AuthenticationC
}
/**
- * Get the NTML mode - none - supports MD4 hash to integrate - or it can
- * asct as an NTLM authentication
+ * Get the NTML mode - none - supports MD4 hash to integrate - or it can asct as an NTLM authentication
*/
public NTLMMode getNTLMMode()
{
diff --git a/source/java/org/alfresco/repo/security/authentication/AuthenticationComponent.java b/source/java/org/alfresco/repo/security/authentication/AuthenticationComponent.java
index e811146373..d423270042 100644
--- a/source/java/org/alfresco/repo/security/authentication/AuthenticationComponent.java
+++ b/source/java/org/alfresco/repo/security/authentication/AuthenticationComponent.java
@@ -72,6 +72,14 @@ public interface AuthenticationComponent
public Authentication setSystemUserAsCurrentUser();
+ /**
+ * Set the guest user as the current user.
+ *
+ * @return
+ */
+ public Authentication setGuestUserAsCurrentUser();
+
+
/**
* Get the name of the system user
*
@@ -79,6 +87,14 @@ public interface AuthenticationComponent
*/
public String getSystemUserName();
+
+ /**
+ * Get the name of the guest user
+ *
+ * @return
+ */
+ public String getGuestUserName();
+
/**
* Get the current user name.
*
diff --git a/source/java/org/alfresco/repo/security/authentication/AuthenticationComponentImpl.java b/source/java/org/alfresco/repo/security/authentication/AuthenticationComponentImpl.java
index 46d86f9bc5..886f4d1210 100644
--- a/source/java/org/alfresco/repo/security/authentication/AuthenticationComponentImpl.java
+++ b/source/java/org/alfresco/repo/security/authentication/AuthenticationComponentImpl.java
@@ -96,5 +96,12 @@ public class AuthenticationComponentImpl extends AbstractAuthenticationComponent
{
return NTLMMode.MD4_PROVIDER;
}
+
+ @Override
+ protected boolean implementationAllowsGuestLogin()
+ {
+ return true;
+ }
+
}
diff --git a/source/java/org/alfresco/repo/security/authentication/AuthenticationServiceImpl.java b/source/java/org/alfresco/repo/security/authentication/AuthenticationServiceImpl.java
index 7650386a5b..c85e1f3aac 100644
--- a/source/java/org/alfresco/repo/security/authentication/AuthenticationServiceImpl.java
+++ b/source/java/org/alfresco/repo/security/authentication/AuthenticationServiceImpl.java
@@ -147,4 +147,10 @@ public class AuthenticationServiceImpl implements AuthenticationService
return false;
}
+ public void authenticateAsGuest() throws AuthenticationException
+ {
+ authenticationComponent.setGuestUserAsCurrentUser();
+ }
+
+
}
diff --git a/source/java/org/alfresco/repo/security/authentication/AuthenticationTest.java b/source/java/org/alfresco/repo/security/authentication/AuthenticationTest.java
index 52a52b0953..f923822544 100644
--- a/source/java/org/alfresco/repo/security/authentication/AuthenticationTest.java
+++ b/source/java/org/alfresco/repo/security/authentication/AuthenticationTest.java
@@ -751,6 +751,12 @@ public class AuthenticationTest extends TestCase
// assertNull(dao.getUserOrNull("Andy"));
}
+ public void testAbstractAuthenticationComponentGuestUserSupport()
+ {
+ authenticationComponent.setGuestUserAsCurrentUser();
+ assertEquals(authenticationComponent.getCurrentUserName(), authenticationComponent.getGuestUserName());
+ }
+
public void testPassThroughLogin()
{
diff --git a/source/java/org/alfresco/repo/security/authentication/SimpleAcceptOrRejectAllAuthenticationComponentImpl.java b/source/java/org/alfresco/repo/security/authentication/SimpleAcceptOrRejectAllAuthenticationComponentImpl.java
index e44eb9bc31..d7058dd288 100644
--- a/source/java/org/alfresco/repo/security/authentication/SimpleAcceptOrRejectAllAuthenticationComponentImpl.java
+++ b/source/java/org/alfresco/repo/security/authentication/SimpleAcceptOrRejectAllAuthenticationComponentImpl.java
@@ -16,6 +16,8 @@
*/
package org.alfresco.repo.security.authentication;
+import net.sf.acegisecurity.Authentication;
+
/**
* This implementation of an AuthenticationComponent can be configured to accept or reject all attempts to login.
*
@@ -54,4 +56,12 @@ public class SimpleAcceptOrRejectAllAuthenticationComponentImpl extends Abstract
}
}
+
+ @Override
+ protected boolean implementationAllowsGuestLogin()
+ {
+ return accept;
+ }
+
+
}
diff --git a/source/java/org/alfresco/repo/security/permissions/impl/PermissionServiceImpl.java b/source/java/org/alfresco/repo/security/permissions/impl/PermissionServiceImpl.java
index b8f0dd1334..f298a494a6 100644
--- a/source/java/org/alfresco/repo/security/permissions/impl/PermissionServiceImpl.java
+++ b/source/java/org/alfresco/repo/security/permissions/impl/PermissionServiceImpl.java
@@ -1003,8 +1003,8 @@ public class PermissionServiceImpl implements PermissionServiceSPI, Initializing
// Default deny
return false;
-
}
+
}
/**
diff --git a/source/java/org/alfresco/repo/security/person/PersonServiceImpl.java b/source/java/org/alfresco/repo/security/person/PersonServiceImpl.java
index ba1458d979..4e1ff45160 100644
--- a/source/java/org/alfresco/repo/security/person/PersonServiceImpl.java
+++ b/source/java/org/alfresco/repo/security/person/PersonServiceImpl.java
@@ -186,7 +186,7 @@ public class PersonServiceImpl implements PersonService
{
HashMap properties = new HashMap();
properties.put(ContentModel.PROP_USERNAME, userName);
- properties.put(ContentModel.PROP_HOMEFOLDER, getCompanyHome());
+ properties.put(ContentModel.PROP_HOMEFOLDER, getHomeFolder());
properties.put(ContentModel.PROP_FIRSTNAME, userName);
properties.put(ContentModel.PROP_LASTNAME, "");
properties.put(ContentModel.PROP_EMAIL, "");
@@ -194,6 +194,11 @@ public class PersonServiceImpl implements PersonService
return properties;
}
+ private NodeRef getHomeFolder()
+ {
+ return getCompanyHome();
+ }
+
public NodeRef createPerson(Map properties)
{
String caseSensitiveUserName = DefaultTypeConverter.INSTANCE.convert(String.class, properties
diff --git a/source/java/org/alfresco/service/cmr/security/AuthenticationService.java b/source/java/org/alfresco/service/cmr/security/AuthenticationService.java
index b37e21202b..c34db55d6d 100644
--- a/source/java/org/alfresco/service/cmr/security/AuthenticationService.java
+++ b/source/java/org/alfresco/service/cmr/security/AuthenticationService.java
@@ -90,6 +90,13 @@ public interface AuthenticationService
*/
public void authenticate(String userName, char[] password) throws AuthenticationException;
+ /**
+ * Authenticate as the guest user. This may not be allowed and throw an exception.
+ *
+ * @throws AuthenticationException
+ */
+ public void authenticateAsGuest() throws AuthenticationException;
+
/**
* Get the name of the currently authenticated user.
*