All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.evasion.plugin.security.UserDetailsService Maven / Gradle / Ivy

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.evasion.plugin.security;

import com.evasion.entity.security.User;
import com.evasion.exception.PersistenceViolationException;
import java.util.HashSet;
import javax.persistence.EntityManager;
import org.springframework.security.userdetails.UserDetails;

/**
 *
 * @author sebastien.glon
 */
public class UserDetailsService {

    public static final String USERNAME_ADMIN = "admin";

    private EntityManager em;

    public UserDetailsService(EntityManager em) {
        this.em = em;
    }

    public final UserDetails loadUserByUsername(String login)
            throws PersistenceViolationException {
        try {
            User account = findUserByUserName(login);
            em.flush();
            if (account != null) {
                return new UserDetailsAdapter(account);
            } else {
                return null;
            }
        } catch (Exception e) {
            throw new PersistenceViolationException("Erreur lors de l'identification du login '" + login + "' en persistence");
        }
    }

    public User findUserByUserName(String u) {
        User user;
        if (u.equals(USERNAME_ADMIN)) {
            user = initAdminUser();
        } else {
            user = em.find(User.class, u);
        }
        return user;
    }

    /**
     * Initialise de compte administrateur si non present en base.
     * @return
     */
    public User initAdminUser() {
        User user = em.find(User.class, USERNAME_ADMIN);
        if (user == null || user.getPassword() == null ||
                user.getPassword().isEmpty()) {
            HashSet auth = new HashSet();
            auth.add("ROLE_SUPERADMIN");
            auth.add("ROLE_ADMIN");
            user = new User();
            user.setUsername(USERNAME_ADMIN);
            user.setEnabled(true);
            user.setPassword(USERNAME_ADMIN + USERNAME_ADMIN);
            user.setAuthorities(auth);
            UserDetailsAdapter.encodPassword(user);
            em.merge(user);
        }
        return user;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy