AppConfig.java 2.27 KB
package com.PFE.ServerManager;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Component;
import org.yaml.snakeyaml.Yaml;
import org.yaml.snakeyaml.constructor.Constructor;

import javax.annotation.PostConstruct;
import java.io.*;

@Component
public class AppConfig {

    @Autowired
    CustomerRepository customerRepository;

    @Autowired
    RoleRepository roleRepository;

    @Autowired
    TeamRepository teamRepository;

    @Autowired
    BCryptPasswordEncoder bCryptPasswordEncoder;

    @PostConstruct
    public void init() {
        System.out.println("============= Configuration de l'application =============");

        /* Ajout des rôles si non présent */

        if(roleRepository.count() != 2) {
            roleRepository.deleteAll();
            Role roleAdmin = new Role();
            roleAdmin.setRoleId(1);
            roleAdmin.setRole("ADMIN");
            roleRepository.save(roleAdmin);
            Role roleUser = new Role();
            roleUser.setRoleId(2);
            roleUser.setRole("USER");
            roleRepository.save(roleUser);
        }

        /* Ajout d'un utilisateur ADMIN avec les informations du fichier de conf*/

        Yaml yaml = new Yaml(new Constructor(ConfYAML.class));
        InputStream inputStream = null;
        try {
            inputStream = new FileInputStream(new File("app.conf"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        ConfYAML conf = yaml.load(inputStream);

        Customer n = new Customer();
        n.setEmail(conf.getAdminEmail());
        n.setPassword(bCryptPasswordEncoder.encode(conf.getAdminPassword()));
        n.setCustomerId((int)(customerRepository.count() + 1));
        n.setActive(1);

        Customer temp = customerRepository.findByEmail(conf.getAdminEmail());
        Role userRole = roleRepository.findByRole("ADMIN");
        n.addRole(userRole);

        if(temp == null) {
            customerRepository.save(n);
        }
        /* Partie sur les groupes */
        Team g = new Team();
        g.setTeamId((int)(teamRepository.count() +1));
        g.setTeam("Labo1");
        g.addCustomer(n);
        teamRepository.save(g);
    }
}