2 * Copyright (C) 2001, 2002 The Mir-coders group
4 * This file is part of Mir.
6 * Mir is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * Mir is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with Mir; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 * In addition, as a special exception, The Mir-coders gives permission to link
21 * the code of this program with any library licensed under the Apache Software License,
22 * The Sun (tm) Java Advanced Imaging library (JAI), The Sun JIMI library
23 * (or with modified versions of the above that use the same license as the above),
24 * and distribute linked combinations including the two. You must obey the
25 * GNU General Public License in all respects for all of the code used other than
26 * the above mentioned libraries. If you modify this file, you may extend this
27 * exception to your version of the file, but you are not obligated to do so.
28 * If you do not wish to do so, delete this exception statement from your version.
31 package mircoders.accesscontrol;
36 import mircoders.entity.*;
37 import mircoders.global.*;
39 public class AccessControl {
40 private UserAccessControl user;
41 protected LoggerWrapper logger = new LoggerWrapper("Global.AccessControl");
42 protected MirPropertiesConfiguration configuration;
44 public AccessControl() {
46 configuration = MirPropertiesConfiguration.instance();
48 user = new UserAccessControl(configuration.getVector("AccessControl.SuperUsers"));
51 throw new RuntimeException(t.toString());
55 public UserAccessControl user() {
59 public class UserAccessControl {
60 private List superusers;
62 public UserAccessControl(List aSuperUsers) {
63 superusers = new Vector(aSuperUsers);
66 public void assertMayAddUsers(EntityUsers aSubject) throws AuthorizationExc, AuthorizationFailure {
68 if (!mayAddUsers(aSubject))
69 throw new AuthorizationExc("not allowed to add users");
72 throw new AuthorizationFailure(t);
77 public boolean mayAddUsers(EntityUsers aSubject) {
78 return superusers.contains(aSubject.getValue("login"));
81 public void assertMayEditUser(EntityUsers aSubject, EntityUsers anObject) throws AuthorizationExc, AuthorizationFailure {
83 if (!mayEditUser(aSubject, anObject))
84 throw new AuthorizationExc("not allowed to edit user " + anObject.getId());
87 throw new AuthorizationFailure(t);
92 public boolean mayEditUser(EntityUsers aSubject, EntityUsers anObject) {
93 return superusers.contains(aSubject.getValue("login"));
96 public boolean mayEditUsers(EntityUsers aSubject) {
97 return superusers.contains(aSubject.getValue("login"));
100 public void assertMayDeleteUser(EntityUsers aSubject, EntityUsers anObject) throws AuthorizationExc, AuthorizationFailure {
102 if (!mayDeleteUser(aSubject, anObject))
103 throw new AuthorizationExc("not allowed to delete user " + anObject.getId());
105 catch (Throwable t) {
106 throw new AuthorizationFailure(t);
110 public boolean mayDeleteUser(EntityUsers aSubject, EntityUsers anObject) {
111 return superusers.contains(aSubject.getValue("login"));
114 public boolean mayDeleteUsers(EntityUsers aSubject) {
115 return superusers.contains(aSubject.getValue("login"));
118 public boolean mayChangeUserPassword(EntityUsers aSubject, EntityUsers anObject) {
119 return aSubject.getId().equals(anObject.getId()) || superusers.contains(aSubject.getValue("login"));
122 public void assertMayChangeUserPassword(EntityUsers aSubject, EntityUsers anObject) throws AuthorizationExc, AuthorizationFailure {
124 if (!mayChangeUserPassword(aSubject, anObject))
125 throw new AuthorizationExc("not allowed to change user " + anObject.getId()+"'s password");
127 catch (Throwable t) {
128 throw new AuthorizationFailure(t);