From dea47916695641c3f394b553fd7f0ad3f2f824e0 Mon Sep 17 00:00:00 2001 From: Michael Jumper Date: Wed, 27 Feb 2013 15:49:58 -0800 Subject: [PATCH] Refactor SystemPermission to concrete class with CREATE_USER, CREATE_CONNECTION, and ADMINISTER permissions. Remove now-obsolete ConnectionDirectoryPermission and UserDirectoryPermission. --- .../ConnectionDirectoryPermission.java | 91 ------------------- .../net/auth/permission/SystemPermission.java | 61 ++++++++++++- .../permission/UserDirectoryPermission.java | 88 ------------------ 3 files changed, 57 insertions(+), 183 deletions(-) delete mode 100644 guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/ConnectionDirectoryPermission.java delete mode 100644 guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/UserDirectoryPermission.java diff --git a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/ConnectionDirectoryPermission.java b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/ConnectionDirectoryPermission.java deleted file mode 100644 index 97058992e..000000000 --- a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/ConnectionDirectoryPermission.java +++ /dev/null @@ -1,91 +0,0 @@ - -package net.sourceforge.guacamole.net.auth.permission; - -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is guacamole-ext. - * - * The Initial Developer of the Original Code is - * Michael Jumper. - * Portions created by the Initial Developer are Copyright (C) 2010 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - - -/** - * A permission which controls access to a GuacamoleConfigurationDirectory. - * - * @author Michael Jumper - */ -public class ConnectionDirectoryPermission - implements SystemPermission { - - /** - * The type of operation affected by this permission. - */ - private Type type; - - /** - * Creates a new ConnectionDirectoryPermission with the given - * type. - * - * @param type The type of operation controlled by this permission. - */ - public ConnectionDirectoryPermission(Type type) { - this.type = type; - } - - @Override - public Type getType() { - return type; - } - - @Override - public int hashCode() { - return type.hashCode(); - } - - @Override - public boolean equals(Object obj) { - - // Not equal if null or wrong type - if (obj == null) return false; - if (getClass() != obj.getClass()) return false; - - final ConnectionDirectoryPermission other = - (ConnectionDirectoryPermission) obj; - - // Compare types - if (type != other.type) - return false; - - return true; - } - -} diff --git a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/SystemPermission.java b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/SystemPermission.java index aa5ffbcbf..6d0ce27ed 100644 --- a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/SystemPermission.java +++ b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/SystemPermission.java @@ -37,14 +37,13 @@ package net.sourceforge.guacamole.net.auth.permission; * * ***** END LICENSE BLOCK ***** */ - /** * A permission which affects the system as a whole, rather than an individual * object. * * @author Michael Jumper */ -public interface SystemPermission extends Permission { +public class SystemPermission implements Permission { /** * Specific types of system-level permissions. Each permission type is @@ -53,10 +52,64 @@ public interface SystemPermission extends Permission { public enum Type { /** - * Create system-level objects. + * Create users. */ - CREATE + CREATE_USER, + + /** + * Create connections. + */ + CREATE_CONNECTION, + + /** + * Administer the system in general, including adding permissions + * which affect the system (like user creation, connection creation, + * and system administration). + */ + ADMINISTER } + /** + * The type of operation affected by this permission. + */ + private Type type; + + /** + * Creates a new SystemPermission with the given + * type. + * + * @param type The type of operation controlled by this permission. + */ + public SystemPermission(Type type) { + this.type = type; + } + + @Override + public Type getType() { + return type; + } + + @Override + public int hashCode() { + return type.hashCode(); + } + + @Override + public boolean equals(Object obj) { + + // Not equal if null or wrong type + if (obj == null) return false; + if (getClass() != obj.getClass()) return false; + + final SystemPermission other = (SystemPermission) obj; + + // Compare types + if (type != other.type) + return false; + + return true; + } + + } diff --git a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/UserDirectoryPermission.java b/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/UserDirectoryPermission.java deleted file mode 100644 index 751585b9c..000000000 --- a/guacamole-ext/src/main/java/net/sourceforge/guacamole/net/auth/permission/UserDirectoryPermission.java +++ /dev/null @@ -1,88 +0,0 @@ - -package net.sourceforge.guacamole.net.auth.permission; - -/* ***** BEGIN LICENSE BLOCK ***** - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is guacamole-ext. - * - * The Initial Developer of the Original Code is - * Michael Jumper. - * Portions created by the Initial Developer are Copyright (C) 2010 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * - * Alternatively, the contents of this file may be used under the terms of - * either the GNU General Public License Version 2 or later (the "GPL"), or - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - * in which case the provisions of the GPL or the LGPL are applicable instead - * of those above. If you wish to allow use of your version of this file only - * under the terms of either the GPL or the LGPL, and not to allow others to - * use your version of this file under the terms of the MPL, indicate your - * decision by deleting the provisions above and replace them with the notice - * and other provisions required by the GPL or the LGPL. If you do not delete - * the provisions above, a recipient may use your version of this file under - * the terms of any one of the MPL, the GPL or the LGPL. - * - * ***** END LICENSE BLOCK ***** */ - - -/** - * A permission which controls access to a UserDirectory. - * - * @author Michael Jumper - */ -public class UserDirectoryPermission implements SystemPermission { - - /** - * The type of operation affected by this permission. - */ - private Type type; - - /** - * Creates a new UserDirectoryPermission with the given type. - * - * @param type The type of operation controlled by this permission. - */ - public UserDirectoryPermission(Type type) { - this.type = type; - } - - @Override - public Type getType() { - return type; - } - - @Override - public int hashCode() { - return type.hashCode(); - } - - @Override - public boolean equals(Object obj) { - - // Not equal if null or wrong type - if (obj == null) return false; - if (getClass() != obj.getClass()) return false; - - final UserDirectoryPermission other = (UserDirectoryPermission) obj; - - // Compare types - if (type != other.type) - return false; - - return true; - } - -}