001: /*
002: * Copyright 2002,2004 The Apache Software Foundation.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016:
017: package org.apache.catalina;
018:
019: import java.security.Principal;
020: import java.util.Iterator;
021:
022: /**
023: * <p>Abstract representation of a user in a {@link UserDatabase}. Each user
024: * is optionally associated with a set of {@link Group}s through which he or
025: * she inherits additional security roles, and is optionally assigned a set
026: * of specific {@link Role}s.</p>
027: *
028: * @author Craig R. McClanahan
029: * @version $Revision: 1.2 $ $Date: 2004/02/27 14:58:39 $
030: * @since 4.1
031: */
032:
033: public interface User extends Principal {
034:
035: // ------------------------------------------------------------- Properties
036:
037: /**
038: * Return the full name of this user.
039: */
040: public String getFullName();
041:
042: /**
043: * Set the full name of this user.
044: *
045: * @param fullName The new full name
046: */
047: public void setFullName(String fullName);
048:
049: /**
050: * Return the set of {@link Group}s to which this user belongs.
051: */
052: public Iterator getGroups();
053:
054: /**
055: * Return the logon password of this user, optionally prefixed with the
056: * identifier of an encoding scheme surrounded by curly braces, such as
057: * <code>{md5}xxxxx</code>.
058: */
059: public String getPassword();
060:
061: /**
062: * Set the logon password of this user, optionally prefixed with the
063: * identifier of an encoding scheme surrounded by curly braces, such as
064: * <code>{md5}xxxxx</code>.
065: *
066: * @param password The new logon password
067: */
068: public void setPassword(String password);
069:
070: /**
071: * Return the set of {@link Role}s assigned specifically to this user.
072: */
073: public Iterator getRoles();
074:
075: /**
076: * Return the {@link UserDatabase} within which this User is defined.
077: */
078: public UserDatabase getUserDatabase();
079:
080: /**
081: * Return the logon username of this user, which must be unique
082: * within the scope of a {@link UserDatabase}.
083: */
084: public String getUsername();
085:
086: /**
087: * Set the logon username of this user, which must be unique within
088: * the scope of a {@link UserDatabase}.
089: *
090: * @param username The new logon username
091: */
092: public void setUsername(String username);
093:
094: // --------------------------------------------------------- Public Methods
095:
096: /**
097: * Add a new {@link Group} to those this user belongs to.
098: *
099: * @param group The new group
100: */
101: public void addGroup(Group group);
102:
103: /**
104: * Add a {@link Role} to those assigned specifically to this user.
105: *
106: * @param role The new role
107: */
108: public void addRole(Role role);
109:
110: /**
111: * Is this user in the specified {@link Group}?
112: *
113: * @param group The group to check
114: */
115: public boolean isInGroup(Group group);
116:
117: /**
118: * Is this user specifically assigned the specified {@link Role}? This
119: * method does <strong>NOT</strong> check for roles inherited based on
120: * {@link Group} membership.
121: *
122: * @param role The role to check
123: */
124: public boolean isInRole(Role role);
125:
126: /**
127: * Remove a {@link Group} from those this user belongs to.
128: *
129: * @param group The old group
130: */
131: public void removeGroup(Group group);
132:
133: /**
134: * Remove all {@link Group}s from those this user belongs to.
135: */
136: public void removeGroups();
137:
138: /**
139: * Remove a {@link Role} from those assigned to this user.
140: *
141: * @param role The old role
142: */
143: public void removeRole(Role role);
144:
145: /**
146: * Remove all {@link Role}s from those assigned to this user.
147: */
148: public void removeRoles();
149:
150: }
|