Permissões de acesso Menus e Sub Menus Java Netbeans

0 respostas
W

–No Banco de dados PostgreSQL 9.3 criei 3 Tabelas,

CREATE TABLE tbl_usuario

(

cod_usuario serial NOT NULL,

nome_usuario character varying(40) NOT NULL,

cod_departamento integer NOT NULL,

login_usuario character varying(30) NOT NULL,

senha_usuario character varying(30) NOT NULL,

status_usuario character varying(14) NOT NULL,

cod_empresa integer NOT NULL,

CONSTRAINT PK_COD_USUARIO PRIMARY KEY (cod_usuario),

CONSTRAINT UK_LOGIN_USUARIO UNIQUE (login_usuario)

)

WITH (

OIDS=FALSE

);

ALTER TABLE tbl_usuario

OWNER TO postgres;
CREATE TABLE tbl_nivel_permissao

(

cod_permissao serial NOT NULL,

descricao_permissao character varying(60) NOT NULL,

CONSTRAINT pk_permissao_usuario PRIMARY KEY (cod_permissao)

)

WITH (

OIDS=FALSE

);

ALTER TABLE tbl_nivel_permissao

OWNER TO postgres;
CREATE TABLE tbl_permissao_usuario

(

cod_permissao integer,

cod_usuario integer,

CONSTRAINT fk_cod_permissao FOREIGN KEY (cod_permissao)

REFERENCES tbl_nivel_permissao (cod_permissao) MATCH SIMPLE

ON UPDATE NO ACTION ON DELETE NO ACTION,

CONSTRAINT fk_cod_usuario FOREIGN KEY (cod_usuario)

REFERENCES tbl_usuario (cod_usuario) MATCH SIMPLE

ON UPDATE NO ACTION ON DELETE NO ACTION

)

WITH (

OIDS=FALSE

);

ALTER TABLE tbl_permissao_usuario

OWNER TO postgres;

–Criei uma classe CadastroUsuario e dentro dela o metodo abaixo:

public boolean getPermissoes(String login, String permissao) {
boolean permissaoExistente = false;

try {
        con = conexaoDB.getConexao();
        stm = con.prepareStatement(sql = "SELECT U.LOGIN_USUARIO, P.DESCRICAO_PERMISSAO FROM\n"
                + "TBL_USUARIO U, TBL_PERMISSAO_USUARIO N, TBL_NIVEL_PERMISSAO P WHERE\n"
                + "U.COD_USUARIO = N.COD_USUARIO AND P.COD_PERMISSAO = N.COD_PERMISSAO AND U.LOGIN_USUARIO = ? AND P.DESCRICAO_PERMISSAO = ?;");

        stm.setString(1, login);
        stm.setString(2, permissao);
        rs = stm.executeQuery();
        if (rs.next()) {

            permissaoExistente = true;
            //System.out.println(rs.getString("DESCRICAO_PERMISSAO"));

        }

    } catch (SQLException ex) {
        Logger.getLogger(CadastroUsuario.class.getName()).log(Level.SEVERE, null, ex);
    }
    return permissaoExistente;

}

–Agora no FramePrincipal criei o metodo abaixo que compara as permissoes cadastradas no Banco de Dados com a Descrição do Menu:

/INICIO Metodo para verificar as permissões do usuário/

public static void setPermissoes() {

CadastroUsuario usuario = new CadastroUsuario();
    /* Inicio análise permissão MENU SISTEMA-----------------------------------------------------------------------------------------------------------*/
    if (usuario.getPermissoes(getInstancia().jLabelUsuarioLogado.getText().toUpperCase(), getInstancia().MENU_SISTEMA.getText().toUpperCase())) {
        getInstancia().MENU_SISTEMA.setVisible(true);

        //INICIO análise permissão SUB MENU Administracao Sistema
        if (usuario.getPermissoes(getInstancia().jLabelUsuarioLogado.getText().toUpperCase(), getInstancia().jMenuAdmSistema.getText().toUpperCase())) {
            getInstancia().jMenuAdmSistema.setEnabled(true);

        } else {
            getInstancia().jMenuAdmSistema.setEnabled(false);
        }
        //FIM
    } else {
        getInstancia().MENU_SISTEMA.setVisible(false);
    }

}
/* Fim análise permissão MENU SISTEMA---------------------------------------------------------------------------------------------*/

–Para os demais Menus e Sub Menus basta seguir as mesmas lógica,
–Se alguém tiver uma idéia de como melhorar isso , por favor fiquem avontade, estou apenas começando no java e estou contribuindo com o que sei no momento.
– A vantagem que encontrei nesse modo é que o usuário visualizará apenas os menus cadastrados, e será habilitado apenas os sub menus cadastrados para o mesmo.

–Ressalto, sou iniciante no java, se alguém tiver sugestões quanto a melhorias no código, será ótimo.

Criado 29 de setembro de 2014
Respostas 0
Participantes 1