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. *