001: /**
002: * Copyright (C) 2001 Yasna.com. All rights reserved.
003: *
004: * ===================================================================
005: * The Apache Software License, Version 1.1
006: *
007: * Redistribution and use in source and binary forms, with or without
008: * modification, are permitted provided that the following conditions
009: * are met:
010: *
011: * 1. Redistributions of source code must retain the above copyright
012: * notice, this list of conditions and the following disclaimer.
013: *
014: * 2. Redistributions in binary form must reproduce the above copyright
015: * notice, this list of conditions and the following disclaimer in
016: * the documentation and/or other materials provided with the
017: * distribution.
018: *
019: * 3. The end-user documentation included with the redistribution,
020: * if any, must include the following acknowledgment:
021: * "This product includes software developed by
022: * Yasna.com (http://www.yasna.com)."
023: * Alternately, this acknowledgment may appear in the software itself,
024: * if and wherever such third-party acknowledgments normally appear.
025: *
026: * 4. The names "Yazd" and "Yasna.com" must not be used to
027: * endorse or promote products derived from this software without
028: * prior written permission. For written permission, please
029: * contact yazd@yasna.com.
030: *
031: * 5. Products derived from this software may not be called "Yazd",
032: * nor may "Yazd" appear in their name, without prior written
033: * permission of Yasna.com.
034: *
035: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
036: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
037: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
038: * DISCLAIMED. IN NO EVENT SHALL YASNA.COM OR
039: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
040: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
041: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
042: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
043: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
044: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
045: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
046: * SUCH DAMAGE.
047: * ====================================================================
048: *
049: * This software consists of voluntary contributions made by many
050: * individuals on behalf of Yasna.com. For more information
051: * on Yasna.com, please see <http://www.yasna.com>.
052: */
053:
054: /**
055: * Copyright (C) 2000 CoolServlets.com. All rights reserved.
056: *
057: * ===================================================================
058: * The Apache Software License, Version 1.1
059: *
060: * Redistribution and use in source and binary forms, with or without
061: * modification, are permitted provided that the following conditions
062: * are met:
063: *
064: * 1. Redistributions of source code must retain the above copyright
065: * notice, this list of conditions and the following disclaimer.
066: *
067: * 2. Redistributions in binary form must reproduce the above copyright
068: * notice, this list of conditions and the following disclaimer in
069: * the documentation and/or other materials provided with the
070: * distribution.
071: *
072: * 3. The end-user documentation included with the redistribution,
073: * if any, must include the following acknowledgment:
074: * "This product includes software developed by
075: * CoolServlets.com (http://www.coolservlets.com)."
076: * Alternately, this acknowledgment may appear in the software itself,
077: * if and wherever such third-party acknowledgments normally appear.
078: *
079: * 4. The names "Jive" and "CoolServlets.com" must not be used to
080: * endorse or promote products derived from this software without
081: * prior written permission. For written permission, please
082: * contact webmaster@coolservlets.com.
083: *
084: * 5. Products derived from this software may not be called "Jive",
085: * nor may "Jive" appear in their name, without prior written
086: * permission of CoolServlets.com.
087: *
088: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
089: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
090: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
091: * DISCLAIMED. IN NO EVENT SHALL COOLSERVLETS.COM OR
092: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
093: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
094: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
095: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
096: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
097: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
098: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
099: * SUCH DAMAGE.
100: * ====================================================================
101: *
102: * This software consists of voluntary contributions made by many
103: * individuals on behalf of CoolServlets.com. For more information
104: * on CoolServlets.com, please see <http://www.coolservlets.com>.
105: */package com.Yasna.forum;
106:
107: import java.util.*;
108:
109: /**
110: * Protection proxy for User objects.
111: *
112: * @see User
113: */
114: public class UserProxy implements User {
115:
116: private User user;
117: private Authorization authorization;
118: private ForumPermissions permissions;
119:
120: /**
121: * Create a new UserProxy.
122: */
123: public UserProxy(User user, Authorization authorization,
124: ForumPermissions permissions) {
125: this .user = user;
126: this .authorization = authorization;
127: this .permissions = permissions;
128: }
129:
130: public int getID() {
131: return user.getID();
132: }
133:
134: public boolean isAnonymous() {
135: return user.isAnonymous();
136: }
137:
138: public String getUsername() {
139: return user.getUsername();
140: }
141:
142: public String getName() {
143: if (isNameVisible()
144: || permissions.get(ForumPermissions.SYSTEM_ADMIN)
145: || permissions.get(ForumPermissions.USER_ADMIN)) {
146: return user.getName();
147: } else {
148: return null;
149: }
150: }
151:
152: public void setName(String name) throws UnauthorizedException {
153: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)
154: || permissions.get(ForumPermissions.USER_ADMIN)) {
155: user.setName(name);
156: } else {
157: throw new UnauthorizedException();
158: }
159: }
160:
161: public boolean isNameVisible() {
162: return user.isNameVisible();
163: }
164:
165: public void setNameVisible(boolean visible)
166: throws UnauthorizedException {
167: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)
168: || permissions.get(ForumPermissions.USER_ADMIN)) {
169: user.setNameVisible(visible);
170: } else {
171: throw new UnauthorizedException();
172: }
173: }
174:
175: public void setPassword(String password)
176: throws UnauthorizedException {
177: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)
178: || permissions.get(ForumPermissions.USER_ADMIN)) {
179: user.setPassword(password);
180: } else {
181: throw new UnauthorizedException();
182: }
183: }
184:
185: public String getPasswordHash() throws UnauthorizedException {
186: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)) {
187: return user.getPasswordHash();
188: } else {
189: throw new UnauthorizedException();
190: }
191: }
192:
193: public void setPasswordHash(String passwordHash)
194: throws UnauthorizedException {
195: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)) {
196: user.setPasswordHash(passwordHash);
197: } else {
198: throw new UnauthorizedException();
199: }
200: }
201:
202: public String getEmail() {
203: if (isEmailVisible()
204: || permissions.get(ForumPermissions.SYSTEM_ADMIN)
205: || permissions.get(ForumPermissions.USER_ADMIN)) {
206: return user.getEmail();
207: } else {
208: return null;
209: }
210: }
211:
212: public Calendar getLastLogin() {
213: return user.getLastLogin();
214: }
215:
216: public Calendar getLastPost() {
217: return user.getLastPost();
218: }
219:
220: public Locale getUserLocale() {
221: return user.getUserLocale();
222: }
223:
224: public void setUserLocale(Locale locale)
225: throws UnauthorizedException {
226: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)
227: || permissions.get(ForumPermissions.USER_ADMIN)) {
228: user.setUserLocale(locale);
229: } else {
230: throw new UnauthorizedException();
231: }
232:
233: }
234:
235: public TimeZone getUserTimeZone() {
236: return user.getUserTimeZone();
237: }
238:
239: public void setUserTimeZone(String timezone)
240: throws UnauthorizedException {
241: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)
242: || permissions.get(ForumPermissions.USER_ADMIN)) {
243: user.setUserTimeZone(timezone);
244: } else {
245: throw new UnauthorizedException();
246: }
247:
248: }
249:
250: public void setEmail(String email) throws UnauthorizedException {
251: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)
252: || permissions.get(ForumPermissions.USER_ADMIN)) {
253: user.setEmail(email);
254: } else {
255: throw new UnauthorizedException();
256: }
257: }
258:
259: public boolean getThreadSubscribe() {
260: return user.getThreadSubscribe();
261: }
262:
263: public void setThreadSubscribe(boolean emailReply)
264: throws UnauthorizedException {
265: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)
266: || permissions.get(ForumPermissions.USER_ADMIN)) {
267: user.setThreadSubscribe(emailReply);
268: } else {
269: throw new UnauthorizedException();
270: }
271: }
272:
273: public boolean isEmailVisible() {
274: return user.isEmailVisible();
275: }
276:
277: public void setEmailVisible(boolean visible)
278: throws UnauthorizedException {
279: if (permissions.get(ForumPermissions.SYSTEM_ADMIN)
280: || permissions.get(ForumPermissions.USER_ADMIN)) {
281: user.setEmailVisible(visible);
282: } else {
283: throw new UnauthorizedException();
284: }
285: }
286:
287: public String getProperty(String name) {
288: return user.getProperty(name);
289: }
290:
291: public Enumeration propertyNames() {
292: return user.propertyNames();
293: }
294:
295: public void setProperty(String name, String value) {
296: user.setProperty(name, value);
297: }
298:
299: public ForumPermissions getPermissions(Authorization authorization) {
300: return user.getPermissions(authorization);
301: }
302:
303: public boolean hasPermission(int type) {
304: return permissions.get(type);
305: }
306:
307: /**
308: * Converts the object to a String by returning the usernamename.
309: * This functionality is primarily for Java applications that might be
310: * accessing CoolForum objects through a GUI.
311: */
312: public String toString() {
313: return user.toString();
314: }
315: }
|