Package com.evasion.plugin.security

Source Code of com.evasion.plugin.security.UserDetailsService

/*
* 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<String> auth = new HashSet<String>();
            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;
    }
}
TOP

Related Classes of com.evasion.plugin.security.UserDetailsService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.