AppConfig.java 2.99 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.*;
import java.util.*;


@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.setId((int)(customerRepository.count() + 1));
        n.setActive(1);

        Customer temp = customerRepository.findByEmail(conf.getAdminEmail());
        Role userRole = roleRepository.findByRole("ADMIN");
        n.setRoles(new HashSet<>(Arrays.asList(userRole)));

        //////////////////////////////////////////
        /*
        Customer p = new Customer();
        p.setEmail("admin@admin.fr");
        p.setPassword(bCryptPasswordEncoder.encode("azerty"));
        p.setId((int)(customerRepository.count() + 2));
        p.setActive(1);

        Role userRole2 = roleRepository.findByRole("USER");
        p.setRoles(new HashSet<>(Arrays.asList(userRole2)));
        customerRepository.save(p);
        */
        ///////////////////////////////////

        if(temp == null) {
            customerRepository.save(n);

        }

        /* Partie sur les groupes */
        Team g = new Team();
        g.setTeamId((int)(teamRepository.count() +1));
        g.setTeam("Labo1");
        Set<Customer> tempC = new HashSet<>();
        tempC.add(n);
        //tempC.add(p);
        g.setCustomers(tempC);
        //g.setCustomers(new HashSet<>(Arrays.asList(n, p)));
        teamRepository.save(g);
        //////////////////////////

    }
}