This commit is contained in:
Arthur Wambst 2025-10-16 01:19:35 +02:00
parent 20568ed0b2
commit 0c222fffc5
No known key found for this signature in database
6 changed files with 46 additions and 38 deletions

View File

@ -48,26 +48,26 @@ public class User {
public Long id; public Long id;
@Username public String name; @Username public String name;
@Password public String password; @Password public String password;
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
@ElementCollection(fetch = FetchType.EAGER) @ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "user_roles") @CollectionTable(name = "user_roles")
public Set<RolesAsso> role; public Set<RolesAsso> role;
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// Dans l'ordre d'affichage dans le dashboard : // Dans l'ordre d'affichage dans le dashboard :
@ManyToMany(mappedBy = "respos", cascade = CascadeType.ALL) @ManyToMany(mappedBy = "respos", cascade = CascadeType.ALL)
public List<Ji> jiRespo; public List<Ji> jiRespo; // JI dont user est respo
@ManyToMany(mappedBy = "participants", cascade = CascadeType.ALL) @ManyToMany(mappedBy = "participants", cascade = CascadeType.ALL)
public List<Ji> jiParticipant; public List<Ji> jiParticipant; // JI ou user est participant
@ManyToMany(mappedBy = "respos", cascade = CascadeType.ALL)
public List<Sujet> sujetRespo; // Sujet ou user est respo
///////////////////////////////////////////////////////////////////////////
@OneToMany(mappedBy = "owner", cascade = CascadeType.ALL) @OneToMany(mappedBy = "owner", cascade = CascadeType.ALL)
public List<Instance> instances; public List<Instance> instances; // mouai, pas a afficher
@ManyToMany(mappedBy = "respos", cascade = CascadeType.ALL)
public List<Sujet> sujetRespo;
///////////////////////////////////////////////////////////////////////////
// Méthode pour Quarkus Security - conversion simple // Méthode pour Quarkus Security - conversion simple
@RolesValue @RolesValue

View File

@ -1,8 +1,10 @@
package fr.la_banquise.backend.rest; package fr.la_banquise.backend.rest;
import fr.la_banquise.backend.data.model.User;
import fr.la_banquise.backend.rest.response.DashboardResponse; import fr.la_banquise.backend.rest.response.DashboardResponse;
import fr.la_banquise.backend.services.InstanceService; import fr.la_banquise.backend.services.InstanceService;
import fr.la_banquise.backend.services.SujetService; import fr.la_banquise.backend.services.SujetService;
import fr.la_banquise.backend.services.UserService;
import io.quarkus.security.Authenticated; import io.quarkus.security.Authenticated;
import io.quarkus.security.identity.SecurityIdentity; import io.quarkus.security.identity.SecurityIdentity;
import jakarta.inject.Inject; import jakarta.inject.Inject;
@ -21,16 +23,21 @@ public class Endpoints {
@Inject InstanceService instanceService; @Inject InstanceService instanceService;
@Inject SujetService sujetService; @Inject SujetService sujetService;
@Inject UserService userService;
@GET @GET
@Authenticated @Authenticated
@Path("dashboard") @Path("dashboard")
public Response getDashboard() { public Response getDashboard() {
String username = identity.getPrincipal().getName(); User user = userService.getUser(identity.getPrincipal().getName());
DashboardResponse dashboard = new DashboardResponse(); DashboardResponse dashboard = new DashboardResponse();
dashboard.tps = dashboard.roles = user.getRoles();
sujetService.getAllSujetsRespo(identity.getPrincipal().getName());
// dashboard.instances = instanceService.getAllInstances(username); dashboard.jiRespo = user.jiRespo;
dashboard.jiParticipant = user.jiParticipant;
dashboard.sujetRespo = user.sujetRespo;
return Response.ok(dashboard).build(); return Response.ok(dashboard).build();
} }
} }

View File

@ -1,17 +1,30 @@
package fr.la_banquise.backend.rest.response; package fr.la_banquise.backend.rest.response;
import java.util.List;
import fr.la_banquise.backend.data.model.Instance; import fr.la_banquise.backend.data.model.Instance;
import fr.la_banquise.backend.data.model.Ji;
import fr.la_banquise.backend.data.model.Sujet; import fr.la_banquise.backend.data.model.Sujet;
import io.quarkus.runtime.annotations.RegisterForReflection; import io.quarkus.runtime.annotations.RegisterForReflection;
import lombok.AllArgsConstructor; import java.util.List;
import java.util.Set;
/** /**
* DashboardResponse * DashboardResponse
*/ */
@RegisterForReflection @RegisterForReflection
public class DashboardResponse { public class DashboardResponse {
public List<Sujet> tps;
public List<Instance> instances;
///////////////////////////////////////////////////////////////////////////
////// Dans l'ordre d'affichage dans le dashboard :
// Profil
public String name;
public Set<String> roles;
// A afficher dans des blocs differents
public List<Ji> jiRespo;
public List<Ji> jiParticipant;
public List<Sujet> sujetRespo;
///////////////////////////////////////////////////////////////////////////
} }

View File

@ -1,12 +1,6 @@
package fr.la_banquise.backend.services; package fr.la_banquise.backend.services;
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.api.command.CreateContainerResponse;
import com.github.dockerjava.api.command.InspectContainerResponse; import com.github.dockerjava.api.command.InspectContainerResponse;
import com.github.dockerjava.api.model.ExposedPort;
import com.github.dockerjava.api.model.HostConfig;
import com.github.dockerjava.api.model.Ports;
import fr.la_banquise.backend.data.model.Instance; import fr.la_banquise.backend.data.model.Instance;
import fr.la_banquise.backend.data.model.Ji; import fr.la_banquise.backend.data.model.Ji;
import fr.la_banquise.backend.data.model.User; import fr.la_banquise.backend.data.model.User;
@ -16,11 +10,8 @@ import fr.la_banquise.backend.data.repository.UserRepository;
import jakarta.enterprise.context.ApplicationScoped; import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject; import jakarta.inject.Inject;
import jakarta.transaction.Transactional; import jakarta.transaction.Transactional;
import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set; import java.util.Set;
/** /**
@ -70,7 +61,7 @@ public class InstanceService {
return dockerService.createContainer(instance.name, instance.port); return dockerService.createContainer(instance.name, instance.port);
} }
public boolean deleteContainer(Long id) { public boolean deleteContainer(Long id) {
Instance instance = instanceRepository.findById(id); Instance instance = instanceRepository.findById(id);
@ -111,5 +102,4 @@ public class InstanceService {
return retour; return retour;
} }
} }

View File

@ -14,7 +14,6 @@ import io.quarkus.elytron.security.common.BcryptUtil;
import jakarta.enterprise.context.ApplicationScoped; import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject; import jakarta.inject.Inject;
import jakarta.transaction.Transactional; import jakarta.transaction.Transactional;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -30,6 +29,7 @@ public class UserService {
public List<User> getAllUsers() { return userRepository.listAll(); } public List<User> getAllUsers() { return userRepository.listAll(); }
public User getUser(Long id) { return userRepository.findById(id); } public User getUser(Long id) { return userRepository.findById(id); }
public User getUser(String name) { return userRepository.findByName(name); }
@Transactional @Transactional
public User createUser(UserRequest request) { public User createUser(UserRequest request) {
@ -94,8 +94,7 @@ public class UserService {
} }
return response; return response;
} }
public RolesAsso fromString(String role_str) { public RolesAsso fromString(String role_str) {
return switch (role_str) { return switch (role_str) {
@ -118,5 +117,4 @@ public class UserService {
User user = userRepository.findById(userId); User user = userRepository.findById(userId);
user.role.remove(fromString(role)); user.role.remove(fromString(role));
} }
} }

View File

@ -1,6 +1,6 @@
-- Ce fichier est exécuté automatiquement en mode dev -- Ce fichier est exécuté automatiquement en mode dev
INSERT INTO penguin (name, password) VALUES ('root', '$2a$10$lzKAv4aj6s0jtneg0Ikx/eEBb6p.6N6yo7ZF.myqYxEA9MWbMwvNu'); INSERT INTO penguin (name, password) VALUES ('root', '$2a$12$o8FSg6JaPwW4h9OnEDT0VOOlf2K/mVg.rhPyRbQzgKybqb9obYyGS');
INSERT INTO user_roles (User_id, role) VALUES (1, 'ROOT'); INSERT INTO user_roles (User_id, role) VALUES (1, 'ROOT');
INSERT INTO site (name, description, address) VALUES ('test', 'test', 'test'); -- INSERT INTO site (name, description, address) VALUES ('test', 'test', 'test');
INSERT INTO ji (name, description, date, site_id) VALUES ('ji', 'test', 'date', 1); -- INSERT INTO ji (name, description, date, site_id) VALUES ('ji', 'test', 'date', 1);
INSERT INTO ji_respos (ji_id, User_id) VALUES (1, 1); -- INSERT INTO ji_respos (ji_id, User_id) VALUES (1, 1);