mirror of
https://github.com/gyurix1968/guacamole-client.git
synced 2025-09-06 13:17:41 +00:00
Merge pull request #108 from glyptodon/protect-users-from-themselves
GUAC-1114: Do not allow users to delete themselves, nor remove their own system permissions.
This commit is contained in:
@@ -29,6 +29,7 @@ import org.glyptodon.guacamole.auth.jdbc.user.AuthenticatedUser;
|
|||||||
import org.glyptodon.guacamole.auth.jdbc.user.ModeledUser;
|
import org.glyptodon.guacamole.auth.jdbc.user.ModeledUser;
|
||||||
import org.glyptodon.guacamole.GuacamoleException;
|
import org.glyptodon.guacamole.GuacamoleException;
|
||||||
import org.glyptodon.guacamole.GuacamoleSecurityException;
|
import org.glyptodon.guacamole.GuacamoleSecurityException;
|
||||||
|
import org.glyptodon.guacamole.GuacamoleUnsupportedException;
|
||||||
import org.glyptodon.guacamole.net.auth.permission.SystemPermission;
|
import org.glyptodon.guacamole.net.auth.permission.SystemPermission;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -112,6 +113,11 @@ public class SystemPermissionService
|
|||||||
|
|
||||||
// Only an admin can delete system permissions
|
// Only an admin can delete system permissions
|
||||||
if (user.getUser().isAdministrator()) {
|
if (user.getUser().isAdministrator()) {
|
||||||
|
|
||||||
|
// Do not allow users to remove their own admin powers
|
||||||
|
if (user.getUser().getIdentifier().equals(targetUser.getIdentifier()))
|
||||||
|
throw new GuacamoleUnsupportedException("Removing your own administrative permissions is not allowed.");
|
||||||
|
|
||||||
Collection<SystemPermissionModel> models = getModelInstances(targetUser, permissions);
|
Collection<SystemPermissionModel> models = getModelInstances(targetUser, permissions);
|
||||||
systemPermissionMapper.delete(models);
|
systemPermissionMapper.delete(models);
|
||||||
return;
|
return;
|
||||||
|
@@ -32,6 +32,7 @@ import org.glyptodon.guacamole.auth.jdbc.base.DirectoryObjectMapper;
|
|||||||
import org.glyptodon.guacamole.auth.jdbc.base.DirectoryObjectService;
|
import org.glyptodon.guacamole.auth.jdbc.base.DirectoryObjectService;
|
||||||
import org.glyptodon.guacamole.GuacamoleClientException;
|
import org.glyptodon.guacamole.GuacamoleClientException;
|
||||||
import org.glyptodon.guacamole.GuacamoleException;
|
import org.glyptodon.guacamole.GuacamoleException;
|
||||||
|
import org.glyptodon.guacamole.GuacamoleUnsupportedException;
|
||||||
import org.glyptodon.guacamole.auth.jdbc.permission.ObjectPermissionMapper;
|
import org.glyptodon.guacamole.auth.jdbc.permission.ObjectPermissionMapper;
|
||||||
import org.glyptodon.guacamole.auth.jdbc.permission.UserPermissionMapper;
|
import org.glyptodon.guacamole.auth.jdbc.permission.UserPermissionMapper;
|
||||||
import org.glyptodon.guacamole.auth.jdbc.security.PasswordEncryptionService;
|
import org.glyptodon.guacamole.auth.jdbc.security.PasswordEncryptionService;
|
||||||
@@ -164,6 +165,17 @@ public class UserService extends DirectoryObjectService<ModeledUser, User, UserM
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void beforeDelete(AuthenticatedUser user, String identifier) throws GuacamoleException {
|
||||||
|
|
||||||
|
super.beforeDelete(user, identifier);
|
||||||
|
|
||||||
|
// Do not allow users to delete themselves
|
||||||
|
if (identifier.equals(user.getUser().getIdentifier()))
|
||||||
|
throw new GuacamoleUnsupportedException("Deleting your own user is not allowed.");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieves the user corresponding to the given credentials from the
|
* Retrieves the user corresponding to the given credentials from the
|
||||||
* database.
|
* database.
|
||||||
|
Reference in New Issue
Block a user