/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package socius.autenticacao; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; import socius.dispositivos.ComputadorRemoto; import socius.dispositivos.Servidor; import socius.dispositivos.ServidorRemoto; import socius.modelo.Usuario; import socius.persistencia.UsuarioDao; /** * * @author Lucas Dillmann <lucas [at] dillmann.com.br> */ public class AutenticadorUsuario extends UnicastRemoteObject implements AutenticacaoRemota { private Servidor servidor; private UsuarioDao udao; public AutenticadorUsuario(Servidor servidor) throws RemoteException { this.servidor = servidor; udao = new UsuarioDao(); } @Override public ServidorRemoto getServidor(ComputadorRemoto computador) throws RemoteException { String login = computador.getUsuario().getLogin(); String senha = computador.getUsuario().getSenha(); // Verifica se o usuário existe no banco e permite ou não o acesso // ao sistema Usuario auth = udao.obter(login, senha); if (auth != null) { boolean usuarioJaLogado = false; for (ComputadorRemoto c : servidor.getClientes()) { if (c.getUsuario().getId() == auth.getId()) { usuarioJaLogado = true; } } if (usuarioJaLogado) { // Caso usuário já esteja logado, // retorna usuário invalido para a tela de login saber Usuario invalido = new Usuario(); invalido.setId(-1); computador.setUsuario(invalido); return null; } else { computador.setUsuario(auth); return servidor; } } else { return null; } } @Override public boolean cadastrar(Usuario usuario) throws RemoteException { try { if (udao.usuarioExiste(usuario.getLogin())) { return false; } udao.salvar(usuario); System.out.println("Cadastro realizado: " + usuario.getNome() + " (" + usuario.getLogin() + ")"); return true; } catch (Exception e) { return false; } } }