Pregunta

I tiene una base de datos que contiene los usuarios, roles y permisos. Quiero ser capaz de asignar este al extremo frontal (Java Swing) por lo que un usuario que no puede hacer una acción no puede verlo.

Un ejemplo:

  • AddressManager Papel tiene permisos create_address, edit_address y remove_address.
  • El usuario A tiene permisos create_address y edit_address.
  • El usuario B tiene remove_address permiso.

Quiero tres botones para la dirección de vista que representan los papeles de la AddressManager, y para los usuarios A y B para activar / desactivar los botones.

Pregunta: ¿Hay alguna forma fácil de asignar los valores de la tabla de base de datos para los componentes Swing (botones)

?

Una forma es asignar activar / desactivar manualmente a cada componente, pero eso es poco práctico si hay 40 cuadros de diálogo de la aplicación con alrededor de 200 componentes que deben tener permiso.

¿Fue útil?

Solución

Lo que puede hacer es escribir una clase como esta y usarlo en todas partes. En su ejemplo debe agregar que con la nueva ActionContainer ( "dirección"); y se creará un create_address, edit_address, Botón delete_address que se activa si el usuario posee el derecho a juego.

package de.steamnet.samples;

// This class is a Panel that renders buttons based on rights.

import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JPanel;

public class ActionContainer extends JPanel {
    List<JButton> buttons = new ArrayList<JButton>();

    public ActionContainer(String rightBase) {
        List<String> rights = database.getRightsStartingWith(rightBase);
        for(String nextRight : rights) {
            JButton next = new JButton(nextRight);
            buttons.add(next);
            if(user.hasRight(nextRight)) {
                next.setEnabled(true);
            } else {
                next.setEnabled(false);
            }
            add(next);
        }
    }

    public void addActionListener(ActionListener al) {
        for(JButton next: buttons) {
            next.addActionListener(al);
        }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top