package io.cattle.platform.iaas.api.auth.dao;
import io.cattle.platform.api.auth.Identity;
import io.cattle.platform.api.auth.Policy;
import io.cattle.platform.core.model.Account;
import io.cattle.platform.core.model.ProjectMember;
import io.cattle.platform.iaas.api.auth.projects.Member;
import io.github.ibuildthecloud.gdapi.id.IdFormatter;
import io.github.ibuildthecloud.gdapi.util.TransformationService;
import java.util.List;
import java.util.Set;
public interface AuthDao {
Account getAdminAccount();
Account getAccountById(Long id);
Account getAccountByKeys(String access, String secretKey, TransformationService transformationService);
Account getAccountByExternalId(String externalId, String externalType);
Account getAccountByUuid(String uuid);
Account createAccount(String name, String kind, String externalId, String externalType);
Identity getIdentity(Long id, IdFormatter idFormatter);
Account createProject(String name, String description);
Account updateAccount(Account account, String name, String kind, String externalId, String externalType);
List<Account> getAccessibleProjects(Set<Identity> identitySet, boolean isAdmin, Long usingAccount);
boolean hasAccessToProject(long projectId, Long usingAccount, boolean isAdmin, Set<Identity> identitySet);
boolean isProjectOwner(long projectId, Long usingAccount, boolean isAdmin, Set<Identity> identitySet);
boolean isProjectMember(long projectId, Long usingAccount, boolean isAdmin, Set<Identity> identitySet);
List<? extends ProjectMember> getActiveProjectMembers(long projectId);
List<? extends ProjectMember> getProjectMembersByIdentity(long projectId, Set<Identity> identities);
ProjectMember getProjectMember(long id);
boolean hasAccessToAnyProject(Set<Identity> identities, boolean isAdmin, Long usingAccount);
List<? extends ProjectMember> setProjectMembers(final Account project, final Set<Member> membersTransformed,
IdFormatter idFormatter);
ProjectMember createProjectMember(Account project, Member member);
void ensureAllProjectsHaveNonRancherIdMembers(Identity identity);
List<Account> searchUsers(String name);
Account getByUsername(String username);
Account getAccountByLogin(String publicValue, String secretValue, TransformationService transformationService);
String getRole(Account account, Policy policy, Policy authenticatedAsPolicy);
Account getAccountByAccessKey(String accessKey);
}