GUAC-800: Use Forms for attributes, not just Fields.

This commit is contained in:
Michael Jumper
2015-05-26 14:42:39 -07:00
parent c3558a3ae9
commit e7574c0276
8 changed files with 63 additions and 50 deletions

View File

@@ -38,6 +38,7 @@ import org.glyptodon.guacamole.auth.jdbc.permission.ConnectionGroupPermissionSer
import org.glyptodon.guacamole.auth.jdbc.permission.ConnectionPermissionService;
import org.glyptodon.guacamole.auth.jdbc.permission.UserPermissionService;
import org.glyptodon.guacamole.form.Field;
import org.glyptodon.guacamole.form.Form;
import org.glyptodon.guacamole.net.auth.User;
import org.glyptodon.guacamole.net.auth.permission.ObjectPermissionSet;
import org.glyptodon.guacamole.net.auth.permission.SystemPermission;
@@ -58,15 +59,19 @@ public class ModeledUser extends ModeledDirectoryObject<UserModel> implements Us
public static final String DISABLED_ATTRIBUTE_NAME = "disabled";
/**
* A typed field corresponding to the disabled attribute of a user.
* All attributes related to restricting user accounts, within a logical
* form.
*/
public static final Field DISABLED_ATTRIBUTE = new Field(DISABLED_ATTRIBUTE_NAME, "Disabled", "true");
public static final Form ACCOUNT_RESTRICTIONS = new Form("restrictions", "Account Restrictions", Arrays.asList(
new Field(DISABLED_ATTRIBUTE_NAME, "Disabled", "true")
));
/**
* All possible attributes of user objects.
* All possible attributes of user objects organized as individual,
* logical forms.
*/
public static final Collection<Field> ATTRIBUTES = Collections.unmodifiableCollection(Arrays.asList(
DISABLED_ATTRIBUTE
public static final Collection<Form> ATTRIBUTES = Collections.unmodifiableCollection(Arrays.asList(
ACCOUNT_RESTRICTIONS
));
/**

View File

@@ -33,7 +33,7 @@ import java.util.Collections;
import org.glyptodon.guacamole.GuacamoleException;
import org.glyptodon.guacamole.auth.jdbc.base.RestrictedObject;
import org.glyptodon.guacamole.auth.jdbc.activeconnection.ActiveConnectionDirectory;
import org.glyptodon.guacamole.form.Field;
import org.glyptodon.guacamole.form.Form;
import org.glyptodon.guacamole.net.auth.ActiveConnection;
import org.glyptodon.guacamole.net.auth.Connection;
import org.glyptodon.guacamole.net.auth.ConnectionGroup;
@@ -134,18 +134,18 @@ public class UserContext extends RestrictedObject
}
@Override
public Collection<Field> getUserAttributes() {
public Collection<Form> getUserAttributes() {
return ModeledUser.ATTRIBUTES;
}
@Override
public Collection<Field> getConnectionAttributes() {
return Collections.<Field>emptyList();
public Collection<Form> getConnectionAttributes() {
return Collections.<Form>emptyList();
}
@Override
public Collection<Field> getConnectionGroupAttributes() {
return Collections.<Field>emptyList();
public Collection<Form> getConnectionGroupAttributes() {
return Collections.<Form>emptyList();
}
}

View File

@@ -1,5 +1,9 @@
{
"USER_ATTRIBUTES" : {
"FIELD_HEADER_DISABLED" : "Disabled:"
"FIELD_HEADER_DISABLED" : "Login disabled:",
"SECTION_HEADER_RESTRICTIONS" : "Account Restrictions"
}
}

View File

@@ -24,7 +24,7 @@ package org.glyptodon.guacamole.net.auth;
import java.util.Collection;
import org.glyptodon.guacamole.GuacamoleException;
import org.glyptodon.guacamole.form.Field;
import org.glyptodon.guacamole.form.Form;
/**
* The context of an active user. The functions of this class enforce all
@@ -121,7 +121,7 @@ public interface UserContext {
* @return
* A collection of all attributes applicable to users.
*/
Collection<Field> getUserAttributes();
Collection<Form> getUserAttributes();
/**
* Retrieves a collection of all attributes applicable to connections. This
@@ -132,7 +132,7 @@ public interface UserContext {
* @return
* A collection of all attributes applicable to connections.
*/
Collection<Field> getConnectionAttributes();
Collection<Form> getConnectionAttributes();
/**
* Retrieves a collection of all attributes applicable to connection
@@ -143,6 +143,6 @@ public interface UserContext {
* @return
* A collection of all attributes applicable to connection groups.
*/
Collection<Field> getConnectionGroupAttributes();
Collection<Form> getConnectionGroupAttributes();
}

View File

@@ -28,7 +28,7 @@ import java.util.Collections;
import java.util.Map;
import java.util.UUID;
import org.glyptodon.guacamole.GuacamoleException;
import org.glyptodon.guacamole.form.Field;
import org.glyptodon.guacamole.form.Form;
import org.glyptodon.guacamole.net.auth.ActiveConnection;
import org.glyptodon.guacamole.net.auth.Connection;
import org.glyptodon.guacamole.net.auth.ConnectionGroup;
@@ -176,18 +176,18 @@ public class SimpleUserContext implements UserContext {
}
@Override
public Collection<Field> getUserAttributes() {
return Collections.<Field>emptyList();
public Collection<Form> getUserAttributes() {
return Collections.<Form>emptyList();
}
@Override
public Collection<Field> getConnectionAttributes() {
return Collections.<Field>emptyList();
public Collection<Form> getConnectionAttributes() {
return Collections.<Form>emptyList();
}
@Override
public Collection<Field> getConnectionGroupAttributes() {
return Collections.<Field>emptyList();
public Collection<Form> getConnectionGroupAttributes() {
return Collections.<Form>emptyList();
}
}

View File

@@ -34,7 +34,7 @@ import javax.ws.rs.core.MediaType;
import org.glyptodon.guacamole.GuacamoleException;
import org.glyptodon.guacamole.environment.Environment;
import org.glyptodon.guacamole.environment.LocalEnvironment;
import org.glyptodon.guacamole.form.Field;
import org.glyptodon.guacamole.form.Form;
import org.glyptodon.guacamole.net.auth.UserContext;
import org.glyptodon.guacamole.net.basic.rest.AuthProviderRESTExposure;
import org.glyptodon.guacamole.net.basic.rest.auth.AuthenticationService;
@@ -65,8 +65,8 @@ public class SchemaRESTService {
* performing the operation.
*
* @return
* A collection of form fields which describe the possible attributes
* of a user object.
* A collection of forms which describe the possible attributes of a
* user object.
*
* @throws GuacamoleException
* If an error occurs while retrieving the possible attributes.
@@ -74,7 +74,7 @@ public class SchemaRESTService {
@GET
@Path("/users/attributes")
@AuthProviderRESTExposure
public Collection<Field> getUserAttributes(@QueryParam("token") String authToken) throws GuacamoleException {
public Collection<Form> getUserAttributes(@QueryParam("token") String authToken) throws GuacamoleException {
// Retrieve all possible user attributes
UserContext userContext = authenticationService.getUserContext(authToken);
@@ -90,8 +90,8 @@ public class SchemaRESTService {
* performing the operation.
*
* @return
* A collection of form fields which describe the possible attributes
* of a connection object.
* A collection of forms which describe the possible attributes of a
* connection object.
*
* @throws GuacamoleException
* If an error occurs while retrieving the possible attributes.
@@ -99,7 +99,7 @@ public class SchemaRESTService {
@GET
@Path("/connections/attributes")
@AuthProviderRESTExposure
public Collection<Field> getConnectionAttributes(@QueryParam("token") String authToken) throws GuacamoleException {
public Collection<Form> getConnectionAttributes(@QueryParam("token") String authToken) throws GuacamoleException {
// Retrieve all possible connection attributes
UserContext userContext = authenticationService.getUserContext(authToken);
@@ -115,8 +115,8 @@ public class SchemaRESTService {
* performing the operation.
*
* @return
* A collection of form fields which describe the possible attributes
* of a connection group object.
* A collection of forms which describe the possible attributes of a
* connection group object.
*
* @throws GuacamoleException
* If an error occurs while retrieving the possible attributes.
@@ -124,7 +124,7 @@ public class SchemaRESTService {
@GET
@Path("/connectionGroups/attributes")
@AuthProviderRESTExposure
public Collection<Field> getConnectionGroupAttributes(@QueryParam("token") String authToken) throws GuacamoleException {
public Collection<Form> getConnectionGroupAttributes(@QueryParam("token") String authToken) throws GuacamoleException {
// Retrieve all possible connection group attributes
UserContext userContext = authenticationService.getUserContext(authToken);

View File

@@ -105,9 +105,10 @@ angular.module('manage').controller('manageUserController', ['$scope', '$injecto
/**
* All available user attributes. This is only the set of attribute
* definitions, not attribute values.
* definitions, organized as logical groupings of attributes, not attribute
* values.
*
* @type Field[]
* @type Form[]
*/
$scope.attributes = null;

View File

@@ -36,12 +36,13 @@ angular.module('rest').factory('schemaService', ['$injector',
/**
* Makes a request to the REST API to get the list of available attributes
* for user objects, returning a promise that provides an array of
* @link{Field} objects if successful. Each element of the array describes
* a possible attribute.
* @link{Form} objects if successful. Each element of the array describes
* a logical grouping of possible attributes.
*
* @returns {Promise.<Field[]>}
* A promise which will resolve with an array of @link{Field}
* objects, where each @link{Field} describes a possible attribute.
* @returns {Promise.<Form[]>}
* A promise which will resolve with an array of @link{Form}
* objects, where each @link{Form} describes a logical grouping of
* possible attributes.
*/
service.getUserAttributes = function getUserAttributes() {
@@ -63,12 +64,13 @@ angular.module('rest').factory('schemaService', ['$injector',
/**
* Makes a request to the REST API to get the list of available attributes
* for connection objects, returning a promise that provides an array of
* @link{Field} objects if successful. Each element of the array describes
* a possible attribute.
* @link{Form} objects if successful. Each element of the array describes
* a logical grouping of possible attributes.
*
* @returns {Promise.<Field[]>}
* A promise which will resolve with an array of @link{Field}
* objects, where each @link{Field} describes a possible attribute.
* @returns {Promise.<Form[]>}
* A promise which will resolve with an array of @link{Form}
* objects, where each @link{Form} describes a logical grouping of
* possible attributes.
*/
service.getConnectionAttributes = function getConnectionAttributes() {
@@ -90,12 +92,13 @@ angular.module('rest').factory('schemaService', ['$injector',
/**
* Makes a request to the REST API to get the list of available attributes
* for connection group objects, returning a promise that provides an array
* of @link{Field} objects if successful. Each element of the array
* describes a possible attribute.
* of @link{Form} objects if successful. Each element of the array
* a logical grouping of possible attributes.
*
* @returns {Promise.<Field[]>}
* A promise which will resolve with an array of @link{Field}
* objects, where each @link{Field} describes a possible attribute.
* @returns {Promise.<Form[]>}
* A promise which will resolve with an array of @link{Form}
* objects, where each @link{Form} describes a logical grouping of
* possible attributes.
*/
service.getConnectionGroupAttributes = function getConnectionGroupAttributes() {