001    package org.apache.turbine.om.security;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one
005     * or more contributor license agreements.  See the NOTICE file
006     * distributed with this work for additional information
007     * regarding copyright ownership.  The ASF licenses this file
008     * to you under the Apache License, Version 2.0 (the
009     * "License"); you may not use this file except in compliance
010     * with the License.  You may obtain a copy of the License at
011     *
012     *   http://www.apache.org/licenses/LICENSE-2.0
013     *
014     * Unless required by applicable law or agreed to in writing,
015     * software distributed under the License is distributed on an
016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017     * KIND, either express or implied.  See the License for the
018     * specific language governing permissions and limitations
019     * under the License.
020     */
021    
022    import java.io.Serializable;
023    
024    import org.apache.turbine.util.security.RoleSet;
025    import org.apache.turbine.util.security.TurbineSecurityException;
026    
027    /**
028     * This class represents a Group of Users in the system that are associated
029     * with specific entity or resource. The users belonging to the Group may have
030     * various Roles. The Permissions to perform actions upon the resource depend
031     * on the Roles in the Group that they are assigned.
032     *
033     * @author <a href="mailto:Rafal.Krzewski@e-point.pl">Rafal Krzewski</a>
034     * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
035     * @version $Id: Group.java 957284 2010-06-23 17:53:31Z tv $
036     */
037    public interface Group extends SecurityEntity, Serializable
038    {
039        /**
040         * The name of the <a href="#global">global group</a>
041         */
042        String GLOBAL_GROUP_NAME = "global";
043    
044        /**
045         * Makes changes made to the Group attributes permanent.
046         *
047         * @throws TurbineSecurityException if there is a problem while
048         *  saving data.
049         */
050        void save()
051            throws TurbineSecurityException;
052    
053        /**
054         * Removes a group from the system.
055         *
056         * @throws TurbineSecurityException if the Group could not be removed.
057         */
058        void remove()
059            throws TurbineSecurityException;
060    
061        /**
062         * Renames the role.
063         *
064         * @param name The new Group name.
065         * @throws TurbineSecurityException if the Group could not be renamed.
066         */
067        void rename(String name)
068            throws TurbineSecurityException;
069    
070        /**
071         * Grants a Role in this Group to an User.
072         *
073         * @param user An User.
074         * @param role A Role.
075         * @throws TurbineSecurityException if there is a problem while assigning
076         * the Role.
077         */
078        void grant(User user, Role role)
079            throws TurbineSecurityException;
080    
081        /**
082         * Grants Roles in this Group to an User.
083         *
084         * @param user An User.
085         * @param roleSet A RoleSet.
086         * @throws TurbineSecurityException if there is a problem while assigning
087         * the Roles.
088         */
089        void grant(User user, RoleSet roleSet)
090            throws TurbineSecurityException;
091    
092        /**
093         * Revokes a Role in this Group from an User.
094         *
095         * @param user An User.
096         * @param role A Role.
097         * @throws TurbineSecurityException if there is a problem while unassigning
098         * the Role.
099         */
100        void revoke(User user, Role role)
101            throws TurbineSecurityException;
102    
103        /**
104         * Revokes Roles in this group from an User.
105         *
106         * @param user An User.
107         * @param roleSet a RoleSet.
108         * @throws TurbineSecurityException if there is a problem while unassigning
109         * the Roles.
110         */
111        void revoke(User user, RoleSet roleSet)
112            throws TurbineSecurityException;
113    
114    }