package gov.samhsa.consent2share.domain.account;
import gov.samhsa.consent2share.domain.account.Users;
import java.util.List;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.GrantedAuthority;
public interface UsersRepository {
public abstract void createUser(Users user);
public abstract void updateUser(Users user);
public abstract void deleteUser(String username);
public abstract boolean userExists(String username);
public abstract List<String> findAllGroups();
public abstract List<String> findUsersInGroup(String groupName);
public abstract void createGroup(String groupName,
List<GrantedAuthority> authorities);
public abstract void deleteGroup(String groupName);
public abstract void renameGroup(String oldName, String newName);
public abstract void addUserToGroup(String username, String groupName);
public abstract void removeUserFromGroup(String username, String groupName);
public abstract void removeGroupAuthority(String groupName,
GrantedAuthority authority);
public abstract void addGroupAuthority(String groupName,
GrantedAuthority authority);
public abstract void setAuthenticationManager(
AuthenticationManager authenticationManager);
public abstract void setCreateUserSql(String createUserSql);
public abstract void setDeleteUserSql(String deleteUserSql);
public abstract void setUpdateUserSql(String updateUserSql);
public abstract void setCreateAuthoritySql(String createAuthoritySql);
public abstract void setDeleteUserAuthoritiesSql(
String deleteUserAuthoritiesSql);
public abstract void setUserExistsSql(String userExistsSql);
public abstract void setChangePasswordSql(String changePasswordSql);
public abstract void setFindAllGroupsSql(String findAllGroupsSql);
public abstract void setFindUsersInGroupSql(String findUsersInGroupSql);
public abstract void setInsertGroupSql(String insertGroupSql);
public abstract void setFindGroupIdSql(String findGroupIdSql);
public abstract void setInsertGroupAuthoritySql(
String insertGroupAuthoritySql);
public abstract void setDeleteGroupSql(String deleteGroupSql);
public abstract void setDeleteGroupAuthoritiesSql(
String deleteGroupAuthoritiesSql);
public abstract void setDeleteGroupMembersSql(String deleteGroupMembersSql);
public abstract void setRenameGroupSql(String renameGroupSql);
public abstract void setInsertGroupMemberSql(String insertGroupMemberSql);
public abstract void setDeleteGroupMemberSql(String deleteGroupMemberSql);
public abstract void setGroupAuthoritiesSql(String groupAuthoritiesSql);
public abstract void setDeleteGroupAuthoritySql(
String deleteGroupAuthoritySql);
public abstract void changePassword(String oldPassword, String newPassword)
throws AuthenticationException;
/**
* Executes the SQL <tt>usersByUsernameQuery</tt> and returns a list of UserDetails objects.
* There should normally only be one matching user.
*/
public abstract Users loadUserByUsername(String username);
}