Domanda

Ho un database che contiene gli utenti, ruoli e permessi. Voglio essere in grado di mappare questo al front-end (Java Swing) in modo da un utente che non può fare un'azione non può vederlo.

Un esempio:

  • AddressManager ruolo dispone di autorizzazioni create_address, edit_address e remove_address.
  • L'utente A dispone di autorizzazioni create_address e edit_address.
  • L'utente B ha il permesso remove_address.

Voglio tre pulsanti per la visualizzazione di indirizzo che rappresentano i ruoli del AddressManager, e per gli utenti A e B per attivare / disattivare i pulsanti.

Domanda: C'è un modo semplice per mappare i valori della tabella di database a Swing componenti (Buttons)

?

Un modo è quello di assegnare abilitare / disabilitare manualmente ad ogni singolo componente, ma che è poco pratica se ci sono 40 dialoghi nell'applicazione con circa 200 componenti che deve avere l'autorizzazione.

È stato utile?

Soluzione

Che cosa si può fare è quello di scrivere una classe come questo e usarlo ovunque. Nel tuo esempio si dovrebbe aggiungere che con il nuovo ActionContainer ( "indirizzo"); e creerà un create_address, edit_address, Button delete_address che sono attivati ??se l'utente possiede il diritto di corrispondenza.

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);
        }
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top