Galera, estou desenvolvendo um Sistema Web com JSF 1.2 e ICEfaces, IDE NetBeans.
Necessito de um sistema de login. A estrutura no BD está funcionando corretamente, consigo logar, alterar senha, consigo bloquear páginas para certos usuários de acordo com seu tipo de acesso, mas me surgiu uma dúvida: como setar visible true ou false em um botão de acordo com o tipo de acesso do usuário?
Tenho um método que pega os acessos do usuário e retorna um HashMap:
Exemplo de tipo de acesso: Enviar NFe, possui o ID, o nome do acesso e 4 colunas (Ler, Criar, alterar e deletar)
/**
* Método para checar todos os acessos de determinado usuária informado no
* parâmetro do método.
*
* @param idUsuario Código do usuário
* @param idSistema Código do sistema
* @return Um mapa que associa uma chave (código do acesso) e um valor (tipos do acesso)
* @throws ClassNotFoundException
* @throws SQLException
*/
public HashMap<Integer, ModelAcesso> getAcessosUsuario(int idUsuario, int idSistema) throws ClassNotFoundException, SQLException {
HashMap<Integer, ModelAcesso> acessos = new HashMap<Integer, ModelAcesso>();
/////***** NESTE PRIMEIRO TRECHO, BUSCA OS ACESSOS COMUNS À FUNÇÃO DO USUÁRIO EM QUESTÃO *****\\\\\
ResultSet rs = Conexao.getResultSet("SELECT A.id, A.nome, AF.criar, AF.ler, AF.alterar, AF.excluir FROM siteagrofauna.FUNCAO_USUARIO FU " +
"INNER JOIN siteagrofauna.ACESSO_FUNCAO AF ON AF.id_funcao = FU.id_funcao INNER JOIN siteagrofauna.ACESSO A ON A.id = AF.id_acesso " +
"WHERE FU.id_usuario = " + idUsuario + " AND AF.id_sistema = " + idSistema);
while(rs.next())
{
acessos.put(rs.getInt("id"), new ModelAcesso(rs.getInt("id"), rs.getString("nome"), rs.getString("criar").equalsIgnoreCase("T"), rs.getString("ler").equalsIgnoreCase("T"), rs.getString("alterar").equalsIgnoreCase("T"), rs.getString("excluir").equalsIgnoreCase("T")));
}
/////***** FIM DA VERIFICAÇÃO DOS ACESSOS DA FUNÇÃO *****\\
/////***** BUSCA OS ACESSOS PARTICULARES DO USUÁRIO *****\\
/// OBS: Caso o usuário tenha o mesmo acesso que sua função, a permissão particular terá prioridade sobre a comum da função \\
rs = Conexao.getResultSet("SELECT A.id, A.nome, AU.criar, AU.ler, AU.alterar, AU.excluir FROM siteagrofauna.ACESSO A " +
"INNER JOIN siteagrofauna.ACESSO_USUARIO AU ON AU.id_acesso = A.ID WHERE AU.id_usuario = " + idUsuario);
while(rs.next())
{
acessos.put(rs.getInt("id"), new ModelAcesso(rs.getInt("id"), rs.getString("nome"), rs.getString("criar").equalsIgnoreCase("T"), rs.getString("ler").equalsIgnoreCase("T"), rs.getString("alterar").equalsIgnoreCase("T"), rs.getString("excluir").equalsIgnoreCase("T")));
}
/////***** FIM DA VERIFICAÇÃO DAS PERMISSÕES DO USUÁRIO *****\\
return acessos;
}
Como faço para setar o visible no botão de acordo com o acesso do usuário?
Agradeço desde já