/*
* 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;
}
}
}