Relatorio

6 respostas
java
F

Como eu faco para o usuário não ter acesso ao relatório e só o administrador ter?

try {
	conecta.executaSql("SELECT * FROM administrador");
	JRResultSetDataSource relatResul = new JRResultSetDataSource(conecta.rs);
	JasperPrint jpPrint = JasperFillManager.fillReport("C:/Users/fabin/Documents/NetBeansProjects/Projeto-MS.Segurança/relatorios/relatorio/relatorioUsuario.jasper", new HashMap<>(), relatResul);
	JasperViewer jv = new JasperViewer(jpPrint);
	jv.setVisible(true);
} catch (JRException ex) {
	JOptionPane.showMessageDialog(rootPane, "Erro ao chamar o relatório!\nErro:" +ex);
}

6 Respostas

I

O sistema tem login?

F

tem sim
eu acesso com esse código a tela login:

try {
        con.executaSql("select *from administrador where nome='"+jTextFieldUsuario.getText()+"'");
        con.rs.first();
        if(con.rs.getString("senha").equals(jPasswordFieldSenha.getText())){
            TelaPrincipal tela = new TelaPrincipal(jTextFieldUsuario.getText());
            tela.setVisible(true);
            dispose();           
        }else{
            JOptionPane.showMessageDialog(rootPane,"Senha ou usuário invalidos!");
        }
    } catch (SQLException ex) {
           JOptionPane.showMessageDialog(rootPane,"Senha ou usuário invalidos!");        
    }
F

tem sim
eu acesso com esse código a tela login:

try {
        con.executaSql("select *from administrador where nome='"+jTextFieldUsuario.getText()+"'");
        con.rs.first();
        if(con.rs.getString("senha").equals(jPasswordFieldSenha.getText())){
            TelaPrincipal tela = new TelaPrincipal(jTextFieldUsuario.getText());
            tela.setVisible(true);
            dispose();           
        }else{
            JOptionPane.showMessageDialog(rootPane,"Senha ou usuário invalidos!");
        }
    } catch (SQLException ex) {
           JOptionPane.showMessageDialog(rootPane,"Senha ou usuário invalidos!");        
    }
I

Certo, e você guarda a informação do usuário logado em algum lugar. Por exemplo, em uma caixa de texto que exibe o usuário atualmente logado? Se sim, você pode verificar quem está logado (ou as suas prerrogativas) e bloquear o botão de geração do relatório, por exemplo. Os usuários têm um campo que define as prerrogativas (privilégios) de acesso?

F

como assim não entendi???

I

Por exemplo:

package.bean;

public class Usuario {
	private long codigoUsuario;
	private String nomeusuario;
	private String senha;
	private char privilegio; //'A' = administrador; 'B' =  básico, usuário sem muitos privilégios
	
	[...]
}

Daí por meio do tipo de privilégio tu nega ou permite a cesso a determinado recurso. Ilustrando:

image

Fiz o login e fica registrado quem está logado. Com base nessa informação eu posso fazer validações. Por exemplo, supondo que haja uma tela que permite escolher que tipo de relatório gerar. Nessa tela, haja um combobox que permite escolher qual relatório gerar. Com base no valor do combobox, ao clicar no botão “Gerar”, vai para um switch que manipula as as informações necessárias à geração do relatório. Você pode fazer uma validação, por exemplo:

/*
* Relatório cadastral X
*/
case 2:
	[...]
	break;
	/*
* Relatório cadastral Y
*/
case 3:
	if(usuario.getPrivilegio() == 'A'){
		gera o relatório...
		
	}else{
		rotulo.setForeground(Color.red);
		rotulo.setText("Você não tem permissão para realizar essa tarefa!");
	}
	break;
/*
* Relatório cadastral W
*/
case 4:
	[...]
	break;
Criado 5 de novembro de 2019
Ultima resposta 5 de nov. de 2019
Respostas 6
Participantes 2