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