En esta guía aprenderás a gestionar permisos y grupos de usuarios dentro de tu plugin de Hytale usando la clase PermissionsModule.
Introducción a PermissionsModule
La clase PermissionsModule se encarga de administrar nodos de permisos y grupos de usuarios en tu plugin. Con esta clase puedes:
- Agregar permisos a un usuario
- Eliminar permisos de un usuario
- Agregar permisos a un grupo (si el grupo no existe, se crea automáticamente)
- Eliminar permisos de un grupo
- Agregar un usuario a un grupo
- Eliminar un usuario de un grupo
- Listar todos los grupos a los que pertenece un usuario
- Comprobar si un usuario tiene un permiso específico (revisa tanto permisos directos como de grupo)
Limitaciones:
- No permite listar todos los grupos definidos
- No permite eliminar un grupo completo
Gestión de Nodos de Permiso
Agregar Nodos de Permiso a un Usuario
Para agregar permisos a un usuario, necesitas un Set<String> con los nodos que deseas añadir. Esto agrega permisos encima de los existentes, no los reemplaza.
Set<String> permissions = new HashSet<>();
PermissionsModule perms = PermissionsModule.get();
perms.addUserPermission(playerUUID, permissions);
Eliminar Nodos de Permiso de un Usuario
Para eliminar permisos de un usuario se utiliza el método removeUserPermission:
Set<String> permissions = new HashSet<>();
PermissionsModule perms = PermissionsModule.get();
perms.removeUserPermission(playerUUID, permissions);
Gestión de Grupos
Agregar Permisos a un Grupo
String groupName = "testGroup";
Set<String> permissions = new HashSet<>();
PermissionsModule perms = PermissionsModule.get();
perms.addGroupPermission(groupName, permissions);
Eliminar Permisos de un Grupo
String groupName = "testGroup";
Set<String> permissions = new HashSet<>();
PermissionsModule perms = PermissionsModule.get();
perms.removeGroupPermission(groupName, permissions);
Agregar Usuario a un Grupo
String groupName = "testGroup";
PermissionsModule perms = PermissionsModule.get();
perms.addUserToGroup(playerUUID, groupName);
Eliminar Usuario de un Grupo
String groupName = "testGroup";
PermissionsModule perms = PermissionsModule.get();
perms.removeUserFromGroup(playerUUID, groupName);
Listar Grupos de un Usuario
PermissionsModule perms = PermissionsModule.get();
perms.getGroupsForUser(playerUUID);
Comprobación de Permisos
Para verificar si un usuario tiene un permiso específico:
boolean hasPermission = PermissionsModule.hasPermission(playerUUID, "permission.node");
Esto revisa tanto los permisos individuales del usuario como los heredados por grupos.
Personalización: Implementando tu Propio Almacenamiento
Hytale permite definir proveedores personalizados para el almacenamiento de permisos y grupos, lo que es útil si quieres usar una base de datos en lugar de archivos.
Crear un proveedor personalizado
Define una clase que implemente PermissionProvider:
public class DatabasePermissionProvider implements PermissionProvider {
// Implementa los métodos necesarios usando tu base de datos
}
Registrar el proveedor
Para forzar que tu plugin use este proveedor:
PermissionsModule perms = PermissionsModule.get();
perms.getProviders().addFirst(new DatabasePermissionProvider());
Conclusión
PermissionsModule es la herramienta principal para manejar permisos y grupos de usuarios en tu plugin de Hytale. Te permite controlar accesos de manera granular y también soporta la integración con sistemas de almacenamiento personalizados.
