Query by username, add directory permission.

This commit is contained in:
Michael Jumper
2013-01-30 13:13:31 -08:00
parent 13d3159908
commit 9599d012a4

View File

@@ -31,7 +31,6 @@ import net.sourceforge.guacamole.GuacamoleException;
import net.sourceforge.guacamole.GuacamoleSecurityException; import net.sourceforge.guacamole.GuacamoleSecurityException;
import net.sourceforge.guacamole.net.auth.GuacamoleConfigurationDirectory; import net.sourceforge.guacamole.net.auth.GuacamoleConfigurationDirectory;
import net.sourceforge.guacamole.net.auth.PermissionDirectory; import net.sourceforge.guacamole.net.auth.PermissionDirectory;
import net.sourceforge.guacamole.net.auth.User;
import net.sourceforge.guacamole.net.auth.UserContext; import net.sourceforge.guacamole.net.auth.UserContext;
import net.sourceforge.guacamole.net.auth.permission.GuacamoleConfigurationDirectoryPermission; import net.sourceforge.guacamole.net.auth.permission.GuacamoleConfigurationDirectoryPermission;
import net.sourceforge.guacamole.net.auth.permission.GuacamoleConfigurationPermission; import net.sourceforge.guacamole.net.auth.permission.GuacamoleConfigurationPermission;
@@ -61,7 +60,7 @@ public class ConfigurationList extends AuthenticatingHttpServlet {
* @throws GuacamoleException If an error occurs while checking permissions. * @throws GuacamoleException If an error occurs while checking permissions.
*/ */
private boolean hasConfigPermission(PermissionDirectory permissions, private boolean hasConfigPermission(PermissionDirectory permissions,
User user, SystemPermission.Type type) String user, SystemPermission.Type type)
throws GuacamoleException { throws GuacamoleException {
// Build permission // Build permission
@@ -94,7 +93,7 @@ public class ConfigurationList extends AuthenticatingHttpServlet {
* @throws GuacamoleException If an error occurs while checking permissions. * @throws GuacamoleException If an error occurs while checking permissions.
*/ */
private boolean hasConfigPermission(PermissionDirectory permissions, private boolean hasConfigPermission(PermissionDirectory permissions,
User user, ObjectPermission.Type type, String identifier) String user, ObjectPermission.Type type, String identifier)
throws GuacamoleException { throws GuacamoleException {
// Build permission // Build permission
@@ -158,6 +157,9 @@ public class ConfigurationList extends AuthenticatingHttpServlet {
// Write actual XML // Write actual XML
try { try {
// Get username
String username = context.self().getUsername();
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance(); XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
XMLStreamWriter xml = outputFactory.createXMLStreamWriter(response.getWriter()); XMLStreamWriter xml = outputFactory.createXMLStreamWriter(response.getWriter());
@@ -165,6 +167,11 @@ public class ConfigurationList extends AuthenticatingHttpServlet {
xml.writeStartDocument(); xml.writeStartDocument();
xml.writeStartElement("configs"); xml.writeStartElement("configs");
// Save config create permission attribute
if (hasConfigPermission(permissions, username,
SystemPermission.Type.CREATE))
xml.writeAttribute("create", "yes");
// For each entry, write corresponding config element // For each entry, write corresponding config element
for (Entry<String, GuacamoleConfiguration> entry : configs.entrySet()) { for (Entry<String, GuacamoleConfiguration> entry : configs.entrySet()) {
@@ -176,26 +183,21 @@ public class ConfigurationList extends AuthenticatingHttpServlet {
xml.writeAttribute("id", entry.getKey()); xml.writeAttribute("id", entry.getKey());
xml.writeAttribute("protocol", config.getProtocol()); xml.writeAttribute("protocol", config.getProtocol());
// Save config create permission attribute
if (hasConfigPermission(permissions, context.self(),
SystemPermission.Type.CREATE))
xml.writeAttribute("create", "yes");
// Check permissions and set attributes appropriately // Check permissions and set attributes appropriately
if (permissions != null) { if (permissions != null) {
// Save update permission attribute // Save update permission attribute
if (hasConfigPermission(permissions, context.self(), if (hasConfigPermission(permissions, username,
ObjectPermission.Type.UPDATE, entry.getKey())) ObjectPermission.Type.UPDATE, entry.getKey()))
xml.writeAttribute("update", "yes"); xml.writeAttribute("update", "yes");
// Save admin permission attribute // Save admin permission attribute
if (hasConfigPermission(permissions, context.self(), if (hasConfigPermission(permissions, username,
ObjectPermission.Type.ADMINSTER, entry.getKey())) ObjectPermission.Type.ADMINISTER, entry.getKey()))
xml.writeAttribute("admin", "yes"); xml.writeAttribute("admin", "yes");
// Save delete permission attribute // Save delete permission attribute
if (hasConfigPermission(permissions, context.self(), if (hasConfigPermission(permissions, username,
ObjectPermission.Type.DELETE, entry.getKey())) ObjectPermission.Type.DELETE, entry.getKey()))
xml.writeAttribute("delete", "yes"); xml.writeAttribute("delete", "yes");