/*
 * Decompiled with CFR 0.152.
 * 
 * Could not load the following classes:
 *  com.l7tech.gateway.common.security.rbac.Role
 *  com.l7tech.gateway.common.security.rbac.Role$Tag
 *  com.l7tech.identity.Group
 *  com.l7tech.identity.User
 *  com.l7tech.objectmodel.DeleteException
 *  com.l7tech.objectmodel.EntityHeader
 *  com.l7tech.objectmodel.EntityManager
 *  com.l7tech.objectmodel.EntityType
 *  com.l7tech.objectmodel.FindException
 *  com.l7tech.objectmodel.Goid
 *  com.l7tech.objectmodel.UpdateException
 *  com.l7tech.objectmodel.imp.NamedEntityImp
 *  com.l7tech.util.Pair
 *  org.jetbrains.annotations.NotNull
 *  org.springframework.transaction.annotation.Transactional
 */
package com.l7tech.server.security.rbac;

import com.l7tech.gateway.common.security.rbac.Role;
import com.l7tech.identity.Group;
import com.l7tech.identity.User;
import com.l7tech.objectmodel.DeleteException;
import com.l7tech.objectmodel.EntityHeader;
import com.l7tech.objectmodel.EntityManager;
import com.l7tech.objectmodel.EntityType;
import com.l7tech.objectmodel.FindException;
import com.l7tech.objectmodel.Goid;
import com.l7tech.objectmodel.UpdateException;
import com.l7tech.objectmodel.imp.NamedEntityImp;
import com.l7tech.server.security.rbac.RbacServices;
import com.l7tech.util.Pair;
import java.util.Collection;
import java.util.regex.Pattern;
import org.jetbrains.annotations.NotNull;
import org.springframework.transaction.annotation.Transactional;

public interface RoleManager
extends EntityManager<Role, EntityHeader>,
RbacServices {
    public static final String ADMIN_REQUIRED = "At least one enabled User with no expiry must always be assigned to the Administrator role";

    @Transactional(readOnly=true)
    public Collection<Role> getAssignedRoles(User var1) throws FindException;

    @Transactional(readOnly=true)
    public Collection<Role> getAssignedRoles(@NotNull Group var1) throws FindException;

    @Transactional(readOnly=true)
    public Collection<Role> getAssignedRoles(User var1, boolean var2, boolean var3) throws FindException;

    @Transactional(readOnly=true)
    public Collection<Pair<Goid, String>> getExplicitRoleAssignments() throws FindException;

    @Transactional(readOnly=true)
    public Role findByTag(Role.Tag var1) throws FindException;

    @Transactional(readOnly=true)
    public Collection<Role> findEntitySpecificRoles(EntityType var1, Goid var2) throws FindException;

    public void deleteEntitySpecificRoles(EntityType var1, Goid var2) throws DeleteException;

    public void deleteEntitySpecificPermissions(@NotNull EntityType var1, @NotNull String var2) throws DeleteException;

    public void renameEntitySpecificRoles(EntityType var1, NamedEntityImp var2, Pattern var3) throws FindException, UpdateException;

    public void validateRoleAssignments() throws UpdateException;

    public void deleteRoleAssignmentsForUser(User var1) throws DeleteException;

    public void deleteRoleAssignmentsForGroup(Group var1) throws DeleteException;

    public static class DisabledGroupRolesException
    extends FindException {
        static final long serialVersionUID = -4716198092468986704L;

        public DisabledGroupRolesException(String string) {
            super(string);
        }
    }
}

