/* * Copyright 2000-2013 Enonic AS * http://www.enonic.com/license */ package com.enonic.cms.core.security; import java.util.List; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.enonic.cms.core.security.group.GroupEntity; import com.enonic.cms.core.security.group.GroupKey; import com.enonic.cms.core.security.group.QualifiedGroupname; import com.enonic.cms.core.security.user.QualifiedUsername; import com.enonic.cms.core.security.user.User; import com.enonic.cms.core.security.user.UserEntity; import com.enonic.cms.core.security.user.UserKey; import com.enonic.cms.core.security.userstore.UserStoreEntity; import com.enonic.cms.core.security.userstore.UserStoreKey; import com.enonic.cms.core.structure.SiteKey; import com.enonic.cms.store.dao.GroupQuery; public interface SecurityService { UserKey getAnonymousUserKey(); UserEntity getAnonymousUser(); GroupKey getEnterpriseAdministratorGroup(); GroupEntity getAuthenticatedUsersGroup( UserStoreEntity userStore ); UserEntity findUserByEmail( String userStore, String email ); /** * Finds the specified user unless it is deleted. * * @param qname The fully qualified userName, which includes user store and uid. * @return Only non-deleted users. */ UserEntity getUser( QualifiedUsername qname ); /** * Finds the specified user unless it is deleted. * * @param username The id of the user in the given user store. * @return Only non-deleted users. */ UserEntity getUserFromDefaultUserStore( String username ); /** * Finds specified user unless it is deleted; * * @return Only non-deleted users. */ UserEntity getUser( UserKey userKey ); UserEntity getUser( User oldUserObject ); List<UserEntity> getUsers( UserStoreKey userStoreKey, Integer index, Integer count, boolean includeDeleted ); List<UserEntity> findUsersByQuery( UserStoreKey userStoreKey, String queryStr, String orderBy, boolean orderAscending ); /** * Finds group specified by qname. Does not find deleted groups. * * @param qname The qualified group name. * @return The requested group. */ GroupEntity getGroup( QualifiedGroupname qname ); GroupEntity getGroup( GroupKey key ); List<GroupEntity> getGroups( GroupQuery spec ); List<UserStoreEntity> getUserStores(); User loginAdminUser( LoginAdminUserCommand command ); void loginPortalUser( QualifiedUsername qualifiedUsername, String password ); void loginClientApiUser( QualifiedUsername qualifiedUsername, String password ); void loginDavUser( QualifiedUsername qualifiedUsername, String password ); void loginInstantTraceUser( QualifiedUsername qualifiedUsername, String password ); UserEntity impersonatePortalUser( ImpersonateCommand command ); void removePortalImpersonation(); @Transactional(propagation = Propagation.REQUIRED) User getLoggedInPortalUser(); UserEntity getLoggedInPortalUserAsEntity(); User getLoggedInAdminConsoleUser(); UserEntity getLoggedInAdminConsoleUserAsEntity(); User getLoggedInClientApiUser(); UserEntity getLoggedInClientApiUserAsEntity(); /** * @return The user you are currently running as. The run-as user will only be different from logged in user if you have impersonated * some other user. */ UserEntity getImpersonatedPortalUser(); void logoutAdminUser(); void logoutPortalUser(); void logoutClientApiUser( boolean invalidateSession ); /** * Auto login user. Used by plugins. * * @param qualifiedUsername The fully qualified userName, which includes user store and uid. * @return <code>true</code> if successful. */ boolean autoLoginPortalUser( QualifiedUsername qualifiedUsername, String remoteIp, SiteKey siteKey ); boolean autoLoginAdminUser( QualifiedUsername qualifiedUsername, String remoteIp ); void changePassword( QualifiedUsername qualifiedUsername, String newPassword ); }