Verificar Usuario na base de dados. Spring security, Hibernate, JSF 2.2, primefaces

0 respostas
jsfprimefaceshibernatejavaspring
H

Pessoal estou tentado logar com os users que tenho na minha base de dados mas nao consigo ele apenas cria a tabela mas nao vifica o que tem dentro da base de dados. vai ai meu codigo. Ajuda por favor.

UserDetailServiceImpl

package mz.co.mpteventos.springsecurity.controller;
import org.springframework.security.core.userdetails.UserDetails;

import org.springframework.security.core.userdetails.UserDetailsService;

import org.springframework.security.core.userdetails.UsernameNotFoundException;
import mz.co.mpteventos.springsecurity.dao.DAO;

import mz.co.mpteventos.springsecurity.dto.UserDetailsImpl;

import mz.co.mpteventos.springsecurity.model.Conta;

public class UserDetailServiceImpl implements UserDetailsService {

private Conta conta = new Conta();


@Override
public UserDetails loadUserByUsername(String username)
		throws UsernameNotFoundException {

	System.out.println("No sistema " +username);
	System.out.println("Entrou no metodo");
	conta = new DAO<Conta>(Conta.class).listaTodos().get(1);	
	System.out.println("na base de daods " + conta.getNome());
	
	if (username.equalsIgnoreCase(conta.toString())) {
		UserDetailsImpl user = new UserDetailsImpl();/*
		user.setUserName(conta.getNome().toString());
		user.setPassword(conta.getPassword().toString());
		user.addAuthority(conta.getAuthorities().toString());*/
		return user;
	}
	
	throw new UsernameNotFoundException("Usuario não encontrado");
}

// getters & setters

public Conta getConta() {
	return conta;
}

public void setConta(Conta conta) {
	this.conta = conta;
}

}

UserDetailsImpl

package mz.co.mpteventos.springsecurity.dto;

import java.util.ArrayList;
import java.util.Collection;

import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

public class UserDetailsImpl implements UserDetails {

/**
 * 
 */
private static final long serialVersionUID = 1L;
private String userName;
private String password;
private ArrayList<GrantedAuthorityImpl> authorities;

public void setUserName(String userName) {
	this.userName = userName;
}

public void setPassword(String password) {
	this.password = password;
}

public void addAuthority(String authorityName){
	if (this.authorities == null) {
		authorities = new ArrayList<GrantedAuthorityImpl>();
	}
	GrantedAuthorityImpl aut = new GrantedAuthorityImpl();
	aut.setName(authorityName);
	authorities.add(aut);
}

@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
	// TODO Auto-generated method stub
	return authorities;
}

@Override
public String getPassword() {
	// TODO Auto-generated method stub
	return this.password;
}

@Override
public String getUsername() {
	// TODO Auto-generated method stub
	return this.userName;
}

@Override
public boolean isAccountNonExpired() {
	// TODO Auto-generated method stub
	return true;
}

@Override
public boolean isAccountNonLocked() {
	// TODO Auto-generated method stub
	return true;
}

@Override
public boolean isCredentialsNonExpired() {
	// TODO Auto-generated method stub
	return true;
}

@Override
public boolean isEnabled() {
	// TODO Auto-generated method stub
	return true;
}

}

GrantedAuthorityImpl

package mz.co.mpteventos.springsecurity.dto;

import org.springframework.security.core.GrantedAuthority;

public class GrantedAuthorityImpl implements GrantedAuthority {

/**
 * 
 */
private static final long serialVersionUID = 1L;

private String name;



public String getName() {
	return name;
}



public void setName(String name) {
	this.name = name;
}

@Override
public String getAuthority() {
	// TODO Auto-generated method stub
	return this.name;
}

}

DAO
package mz.co.mpteventos.springsecurity.dao;

import java.util.List;

import javax.persistence.EntityManager;

import javax.persistence.NoResultException;

import javax.persistence.criteria.CriteriaQuery;

import mz.co.mpteventos.springsecurity.model.Conta;

public class DAO {

private final Class<T> classe;

public DAO(Class<T> classe) {
	this.classe = classe;
}

public void adiciona(T t) {

	// consegue a entity manager
	EntityManager em = new JPAUtil().getEntityManager();

	// abre transacao
	em.getTransaction().begin();

	// persiste o objeto
	em.persist(t);

	// commita a transacao
	em.getTransaction().commit();

	// fecha a entity manager
	em.close();
}

public void remove(T t) {
	EntityManager em = new JPAUtil().getEntityManager();
	em.getTransaction().begin();

	em.remove(em.merge(t));

	em.getTransaction().commit();
	em.close();
}

public void removeNaLista(List<T> t) {
	EntityManager em = new JPAUtil().getEntityManager();
	em.getTransaction().begin();

	for (int i = 0; i < t.size(); i++) {
		em.remove(em.merge(t.get(i)));
	}
	
	em.getTransaction().commit();
	em.close();
}

public void atualiza(T t) {
	EntityManager em = new JPAUtil().getEntityManager();
	em.getTransaction().begin();

	em.merge(t);

	em.getTransaction().commit();
	em.close();
}

public List<T> listaTodos() {
	EntityManager em = new JPAUtil().getEntityManager();
	CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
	query.select(query.from(classe));

	List<T> lista = em.createQuery(query).getResultList();

	em.close();
	return lista;
}

public T buscaPorId(Integer id) {
	EntityManager em = new JPAUtil().getEntityManager();
	T instancia = em.find(classe, id);
	em.close();
	return instancia;
}

public T buscaPorNome(String t) {
	EntityManager em = new JPAUtil().getEntityManager();
	T instancia = em.find(classe, t);
	em.close();
	return instancia;
}

 public Conta encontrarUsuario(String nameUser) {
	 EntityManager em = new JPAUtil().getEntityManager();
     try {
    	 Conta user = (Conta) em
                      .createQuery(
                                  "SELECT c from Conta c where c.nome = :nome and c.password = :password and r.authorities - :authorities")
                      .setParameter("nome", nameUser);
    	 			

           return user;
     } catch (NoResultException e) {
           return null;
     }

}

public int contaTodos() {
	EntityManager em = new JPAUtil().getEntityManager();
	long result = (Long) em.createQuery("select count(n) from evento n")
			.getSingleResult();
	em.close();

	return (int) result;
}

public List<T> listaTodosPaginada(int firstResult, int maxResults) {
	EntityManager em = new JPAUtil().getEntityManager();
	CriteriaQuery<T> query = em.getCriteriaBuilder().createQuery(classe);
	query.select(query.from(classe));

	List<T> lista = em.createQuery(query).setFirstResult(firstResult)
			.setMaxResults(maxResults).getResultList();

	em.close();
	return lista;
}

}

JPAUtil
package mz.co.mpteventos.springsecurity.dao;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.Persistence;

public class JPAUtil {

private static EntityManagerFactory emf = Persistence.createEntityManagerFactory("springsecurity");

public EntityManager getEntityManager() {
	return emf.createEntityManager();
}

public void close(EntityManager em) {
	em.close();
}

}

persistence.xml
<?xml version="1.0" encoding="UTF-8"?>

<persistence-unit name="springsecurity" transaction-type="RESOURCE_LOCAL">

	<provider>org.hibernate.ejb.HibernatePersistence</provider>

	<class>mz.co.mpteventos.springsecurity.model.Conta</class>


	<properties>
		<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
		<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/mpteventosdb" />
		<property name="javax.persistence.jdbc.user" value="root" />
		<property name="javax.persistence.jdbc.password" value="fonsildb2" />

		<property name="hibernate.hbm2ddl.auto" value="create" />
		<property name="hibernate.show_sql" value="true" />
		<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
	</properties>
</persistence-unit>

Nota: Se eu tentar logar sem precisar dabase de dados directo ele aceita.

Criado 13 de junho de 2017
Respostas 0
Participantes 1