/*
* $Id$
*
* Copyright 2009-2014 Glencoe Software, Inc. All rights reserved.
* Use is subject to license terms supplied in LICENSE.txt
*/
package ome.security.auth;
import ome.model.internal.Permissions;
import ome.model.meta.Experimenter;
import ome.model.meta.ExperimenterGroup;
import ome.security.SecuritySystem;
/**
* Provides {@link Experimenter user} and {@link ExperimenterGroup group}
* creation, deletion, and modification for use by services. All invocations are
* assumed "trusted" (services are responsible for authorization, and will take
* part in the current Hibernate {@link org.hibernate.Session session}.
*
* @author Josh Moore, josh at glencoesoftware.com
* @see ome.api.IAdmin
* @see SecuritySystem
* @since 4.0
*/
public interface RoleProvider {
String nameById(long id);
long createGroup(ExperimenterGroup group);
long createGroup(String name, Permissions perms, boolean strict);
long createGroup(String name, Permissions perms, boolean strict,
boolean isLdap);
long createExperimenter(Experimenter experimenter,
ExperimenterGroup defaultGroup, ExperimenterGroup... otherGroups);
void setDefaultGroup(final Experimenter user, final ExperimenterGroup group);
void setGroupOwner(final Experimenter user, final ExperimenterGroup group,
final boolean value);
void addGroups(final Experimenter user, final ExperimenterGroup... groups);
void removeGroups(final Experimenter user,
final ExperimenterGroup... groups);
boolean isIgnoreCaseLookup();
}