/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.security.userstore.connector;
import com.enonic.cms.core.security.group.DeleteGroupCommand;
import com.enonic.cms.core.security.group.GroupEntity;
import com.enonic.cms.core.security.group.GroupKey;
import com.enonic.cms.core.security.group.StoreNewGroupCommand;
import com.enonic.cms.core.security.group.UpdateGroupCommand;
import com.enonic.cms.core.security.user.DeleteUserCommand;
import com.enonic.cms.core.security.user.StoreNewUserCommand;
import com.enonic.cms.core.security.user.UpdateUserCommand;
import com.enonic.cms.core.security.user.User;
import com.enonic.cms.core.security.user.UserEntity;
import com.enonic.cms.core.security.user.UserKey;
public interface UserStoreConnector
{
boolean canCreateUser();
boolean canUpdateUser();
boolean canUpdateUserPassword();
boolean canDeleteUser();
boolean canCreateGroup();
boolean canReadGroup();
boolean canUpdateGroup();
boolean canDeleteGroup();
String authenticateUser( final String uid, final String password, AuthenticationChain authChain );
void changePassword( final String uid, final String newPassword );
UserKey storeNewUser( final StoreNewUserCommand command );
GroupKey storeNewGroup( final StoreNewGroupCommand command );
void updateUser( final UpdateUserCommand command );
void updateGroup( final UpdateGroupCommand command );
void deleteUser( final DeleteUserCommand command );
void deleteGroup( final DeleteGroupCommand command );
User getUserByEntity( UserEntity userEntity );
void removeMembershipFromGroup( GroupEntity groupToRemove, GroupEntity groupToRemoveFrom );
void addMembershipToGroup( GroupEntity groupToAdd, GroupEntity groupToAddTo );
}