diff --git a/.gitea/workflows/back.yaml b/.gitea/workflows/back.yaml
index bd6f476..31aa219 100644
--- a/.gitea/workflows/back.yaml
+++ b/.gitea/workflows/back.yaml
@@ -12,8 +12,7 @@ jobs:
with:
distribution: 'temurin' # See 'Supported distributions' for available options
java-version: '21'
+
- uses: axel-op/googlejavaformat-action@v3
with:
- args: "--set-exit-if-changed --skip-sorting-imports --aosp"
- - name: Print diffs
- run: git --no-pager diff --exit-code
\ No newline at end of file
+ args: "--set-exit-if-changed --skip-sorting-imports --aosp -n"
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 26d5ccb..617387b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,13 +1,16 @@
help:
- @echo "make [clean dev-front prod dev-back]"
+ @echo "make [clean dev-front prod dev-back dev]"
clean:
+ @cp config/frontdev.env front/MyINPulse-front/.env
+ @cp config/frontdev.env .env
+ @cp config/frontdev.env MyINPulse-back/.env
@cp config/prod.docker-compose.yaml docker-compose.yaml
@docker compose down
@rm -f docker-compose.yaml
@rm -f .env
@rm -f front/MyINPulse-front/.env
-
+ @rm -f MyINPulse-back/.env
# Install npm packages
front/MyINPulse-front/.installed:
@@ -18,24 +21,37 @@ vite: ./front/MyINPulse-front/.installed
dev-front: clean vite
- @cp config/frontdev.front.env front/MyINPulse-front/.env
- @cp config/frontdev.main.env .env
+ @cp config/frontdev.env front/MyINPulse-front/.env
+ @cp config/frontdev.env .env
+ @cp config/frontdev.env MyINPulse-back/.env
@cp config/frontdev.docker-compose.yaml docker-compose.yaml
@docker compose up -d --build
@cd ./front/MyINPulse-front/ && npm run dev
prod: clean
- @cp config/prod.front.env front/MyINPulse-front/.env
- @cp config/prod.main.env .env
+ @cp config/prod.env front/MyINPulse-front/.env
+ @cp config/prod.env .env
+ @cp config/prod.env .env
@cp config/prod.docker-compose.yaml docker-compose.yaml
@docker compose up -d --build
dev-back:
- @cp config/backdev.front.env front/MyINPulse-front/.env
- @cp config/backdev.main.env .env
+ @cp config/backdev.env front/MyINPulse-front/.env
+ @cp config/backdev.env .env
+ @cp config/backdev.env MyINPulse-back/.env
@cp config/backdev.docker-compose.yaml docker-compose.yaml
@docker compose up -d --build
- @echo "cd MyINPulse-back"
- @echo "./gradlew bootRun --args='--server.port=8081'"
\ No newline at end of file
+ @echo "cd MyINPulse-back" && echo 'export $$(cat .env | xargs)'
+ @echo "./gradlew bootRun --args='--server.port=8081'"
+
+dev: clean vite
+ @cp config/dev.env front/MyINPulse-front/.env
+ @cp config/dev.env .env
+ @cp config/dev.env MyINPulse-back/.env
+ @cp config/dev.docker-compose.yaml docker-compose.yaml
+ @docker compose up -d --build
+ @echo "cd MyINPulse-back" && echo 'export $$(cat .env | xargs)'
+ @echo "./gradlew bootRun --args='--server.port=8081'"
+ @cd ./front/MyINPulse-front/ && npm run dev &
diff --git a/MyINPulse-back/build.gradle b/MyINPulse-back/build.gradle
index 5d1c2fd..abb4635 100644
--- a/MyINPulse-back/build.gradle
+++ b/MyINPulse-back/build.gradle
@@ -21,8 +21,8 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
- implementation('org.springframework.boot:spring-boot-starter-validation')
- implementation('org.springframework.boot:spring-boot-starter-data-rest')
+ implementation 'org.springframework.boot:spring-boot-starter-validation'
+ implementation 'org.springframework.boot:spring-boot-starter-data-rest'
implementation 'org.postgresql:postgresql'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/api/GetUserInfo.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/api/GetUserInfo.java
index 63aef48..ad008f0 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/api/GetUserInfo.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/api/GetUserInfo.java
@@ -1,43 +1,24 @@
package enseirb.myinpulse.api;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.bind.annotation.CrossOrigin;
-
-import java.security.Principal;
@SpringBootApplication
@RestController
public class GetUserInfo {
- // TODO: understand how to get data
- @GetMapping("/getUserInfo")
- public Object user(Principal principal) {
- System.out.println("GetUserInfo + " + principal);
- System.out.println(SecurityContextHolder.getContext().getAuthentication());
- return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
- }
-
- @CrossOrigin(methods = {RequestMethod.GET, RequestMethod.OPTIONS})
- @GetMapping("/random")
+ @GetMapping("/unauth/random")
public boolean rand() {
- System.err.println("HELLO");
return Math.random() > 0.5;
}
- @CrossOrigin(methods = {RequestMethod.GET, RequestMethod.OPTIONS})
- @GetMapping("/random2")
+ @GetMapping("/admin/random")
public boolean rand2() {
- System.err.println("HELLO2");
return Math.random() > 0.5;
}
- @CrossOrigin(methods = {RequestMethod.GET, RequestMethod.OPTIONS})
- @GetMapping("/random3")
+ @GetMapping("/entrepreneur/random")
public boolean rand3() {
- System.err.println("HELLO");
return Math.random() > 0.5;
}
}
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/config/WebSecurityCustomConfiguration.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/config/WebSecurityCustomConfiguration.java
index 43a9889..b8f0e4f 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/config/WebSecurityCustomConfiguration.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/config/WebSecurityCustomConfiguration.java
@@ -1,6 +1,10 @@
package enseirb.myinpulse.config;
+import static org.springframework.security.authorization.AuthorityAuthorizationManager.hasRole;
+
import enseirb.myinpulse.security.KeycloakJwtRolesConverter;
+
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
@@ -12,39 +16,53 @@ import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import java.util.Arrays;
import java.util.List;
-import static org.springframework.security.authorization.AuthorityAuthorizationManager.hasRole;
-
@Configuration
public class WebSecurityCustomConfiguration {
// CORS configuration
- // TODO: make sure to only accept our own domains
+
+ @Value("${VITE_APP_URL}")
+ private String frontendUrl;
+
+ /**
+ * Configure the CORS (Cross Origin Ressource Sharing -- a security feature) configuration. The
+ * only allowed website is the frontend, defined in the .env file.
+ *
+ * @return the CORS configuration used by the backend
+ */
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
- configuration.setAllowedOrigins(List.of("*"));
+ configuration.setAllowedOrigins(List.of(frontendUrl));
configuration.setAllowedMethods(Arrays.asList("GET", "OPTIONS"));
configuration.setAllowedHeaders(
- Arrays.asList(
- "authorization",
- "content-type",
- "x-auth-token")); // Do not remove, this fixes the CORS errors when
- // unauthenticated
+ Arrays.asList("authorization", "content-type", "x-auth-token"));
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
+ /**
+ * Configure the authorisation required for each path.
+ *
+ *
admin endpoints are under /admin/* and entrepreneur are under /entrepreneur/*
+ *
+ *
If endpoints dont require authentication, they are under /unauth/
+ *
+ * @param http automatically filled in by spring.
+ * @return a securityfilterchain, automatically used by spring.
+ * @throws Exception TODO: figure out when the exception are raised
+ */
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http.authorizeHttpRequests(
authorize ->
authorize
- .requestMatchers("/random2")
+ .requestMatchers("/entrepreneur/**")
.access(hasRole("REALM_MyINPulse-entrepreneur"))
- .requestMatchers("/random")
+ .requestMatchers("/admin/**")
.access(hasRole("REALM_MyINPulse-admin"))
- .requestMatchers("/random3")
+ .requestMatchers("/unauth/**")
.permitAll()
.anyRequest()
.authenticated())
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/AdministrateursController.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/AdministrateursController.java
index 2a5d05e..b9a8259 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/AdministrateursController.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/AdministrateursController.java
@@ -2,12 +2,14 @@ package enseirb.myinpulse.postgres_db.controller;
import enseirb.myinpulse.postgres_db.model.Administrateurs;
import enseirb.myinpulse.postgres_db.repository.AdministrateursRepository;
-import java.util.Optional;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
+import java.util.Optional;
+
@RestController
public class AdministrateursController {
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/ComptesRendusController.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/ComptesRendusController.java
index 3862118..77ec2f8 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/ComptesRendusController.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/ComptesRendusController.java
@@ -2,12 +2,14 @@ package enseirb.myinpulse.postgres_db.controller;
import enseirb.myinpulse.postgres_db.model.ComptesRendus;
import enseirb.myinpulse.postgres_db.repository.ComptesRendusRepository;
-import java.util.Optional;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
+import java.util.Optional;
+
@RestController
public class ComptesRendusController {
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/EntrepreneursController.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/EntrepreneursController.java
index 8fdc1dd..d97298c 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/EntrepreneursController.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/EntrepreneursController.java
@@ -2,12 +2,14 @@ package enseirb.myinpulse.postgres_db.controller;
import enseirb.myinpulse.postgres_db.model.Entrepreneurs;
import enseirb.myinpulse.postgres_db.repository.EntrepreneursRepository;
-import java.util.Optional;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
+import java.util.Optional;
+
@RestController
public class EntrepreneursController {
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/ProjetsController.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/ProjetsController.java
index d0909b0..b6bb230 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/ProjetsController.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/ProjetsController.java
@@ -2,13 +2,15 @@ package enseirb.myinpulse.postgres_db.controller;
import enseirb.myinpulse.postgres_db.model.Projets;
import enseirb.myinpulse.postgres_db.repository.ProjetsRepository;
-import java.time.LocalDate;
-import java.util.Optional;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
+import java.time.LocalDate;
+import java.util.Optional;
+
@RestController
public class ProjetsController {
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/SectionsController.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/SectionsController.java
index 01f94ae..716d434 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/SectionsController.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/SectionsController.java
@@ -2,13 +2,15 @@ package enseirb.myinpulse.postgres_db.controller;
import enseirb.myinpulse.postgres_db.model.Sections;
import enseirb.myinpulse.postgres_db.repository.SectionsRepository;
-import java.time.LocalDateTime;
-import java.util.Optional;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
+import java.time.LocalDateTime;
+import java.util.Optional;
+
@RestController
public class SectionsController {
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/UtilisateursController.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/UtilisateursController.java
index c46d688..410b5b5 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/UtilisateursController.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/controller/UtilisateursController.java
@@ -2,12 +2,14 @@ package enseirb.myinpulse.postgres_db.controller;
import enseirb.myinpulse.postgres_db.model.Utilisateurs;
import enseirb.myinpulse.postgres_db.repository.UtilisateursRepository;
-import java.util.Optional;
+
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException;
+import java.util.Optional;
+
@RestController
public class UtilisateursController {
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/model/Administrateurs.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/model/Administrateurs.java
index 0f91f9a..dbf2ea9 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/model/Administrateurs.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/model/Administrateurs.java
@@ -3,6 +3,7 @@ package enseirb.myinpulse.postgres_db.model;
import jakarta.persistence.*;
import jakarta.persistence.PrimaryKeyJoinColumn;
import jakarta.persistence.Table;
+
import java.util.ArrayList;
import java.util.List;
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/model/Projets.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/model/Projets.java
index b49c12f..e543549 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/model/Projets.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/model/Projets.java
@@ -2,6 +2,7 @@ package enseirb.myinpulse.postgres_db.model;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;
+
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/model/RendezVous.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/model/RendezVous.java
index 3bf380d..2763bbb 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/model/RendezVous.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/model/RendezVous.java
@@ -12,30 +12,14 @@ import java.util.List;
@Table(name = "rendez_vous")
public class RendezVous {
- @Id
- @NotNull
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long id_rdv;
-
- private LocalDate date_rdv;
-
- private LocalTime heure_rdv;
-
- private LocalTime duree_rdv;
-
- @Column(length = 255)
- private String lieu_rdv;
-
- private String sujet_rdv;
-
@OneToMany(mappedBy = "rendezVousEntrepreneurs", fetch = FetchType.LAZY, orphanRemoval = true)
- private List ListEntrepreneurs = new ArrayList<>();
+ private final List ListEntrepreneurs = new ArrayList<>();
@OneToMany(mappedBy = "rendezVousAdministrateurs", fetch = FetchType.LAZY, orphanRemoval = true)
- private List ListAdministrateurs = new ArrayList<>();
+ private final List ListAdministrateurs = new ArrayList<>();
@OneToMany(mappedBy = "rendezVousComptesRendus", fetch = FetchType.LAZY, orphanRemoval = true)
- private List ListComptesRendus = new ArrayList<>();
+ private final List ListComptesRendus = new ArrayList<>();
@ManyToMany(
fetch = FetchType.LAZY,
@@ -46,6 +30,20 @@ public class RendezVous {
inverseJoinColumns = @JoinColumn(name = "id_section"))
List ListSections = new ArrayList<>();
+ @Id
+ @NotNull
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ private Long id_rdv;
+
+ private LocalDate date_rdv;
+ private LocalTime heure_rdv;
+ private LocalTime duree_rdv;
+
+ @Column(length = 255)
+ private String lieu_rdv;
+
+ private String sujet_rdv;
+
public RendezVous() {}
public RendezVous(
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/AdministrateursRepository.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/AdministrateursRepository.java
index b59d2c0..0454e64 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/AdministrateursRepository.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/AdministrateursRepository.java
@@ -1,6 +1,7 @@
package enseirb.myinpulse.postgres_db.repository;
import enseirb.myinpulse.postgres_db.model.Administrateurs;
+
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/ComptesRendusRepository.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/ComptesRendusRepository.java
index e4de376..168fd87 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/ComptesRendusRepository.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/ComptesRendusRepository.java
@@ -1,6 +1,7 @@
package enseirb.myinpulse.postgres_db.repository;
import enseirb.myinpulse.postgres_db.model.ComptesRendus;
+
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/EntrepreneursRepository.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/EntrepreneursRepository.java
index bb09b74..fc288f5 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/EntrepreneursRepository.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/EntrepreneursRepository.java
@@ -1,6 +1,7 @@
package enseirb.myinpulse.postgres_db.repository;
import enseirb.myinpulse.postgres_db.model.Entrepreneurs;
+
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/ProjetsRepository.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/ProjetsRepository.java
index 37f5d8e..d9d2e59 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/ProjetsRepository.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/ProjetsRepository.java
@@ -1,6 +1,7 @@
package enseirb.myinpulse.postgres_db.repository;
import enseirb.myinpulse.postgres_db.model.Projets;
+
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/RendezVousRepository.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/RendezVousRepository.java
index 93074f8..2856de3 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/RendezVousRepository.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/RendezVousRepository.java
@@ -1,6 +1,7 @@
package enseirb.myinpulse.postgres_db.repository;
import enseirb.myinpulse.postgres_db.model.RendezVous;
+
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/SectionsRepository.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/SectionsRepository.java
index cc25ab1..4d68027 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/SectionsRepository.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/SectionsRepository.java
@@ -1,6 +1,7 @@
package enseirb.myinpulse.postgres_db.repository;
import enseirb.myinpulse.postgres_db.model.Sections;
+
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/UtilisateursRepository.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/UtilisateursRepository.java
index 28aca29..de8371c 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/UtilisateursRepository.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/postgres_db/repository/UtilisateursRepository.java
@@ -1,6 +1,7 @@
package enseirb.myinpulse.postgres_db.repository;
import enseirb.myinpulse.postgres_db.model.Utilisateurs;
+
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;
diff --git a/MyINPulse-back/src/main/java/enseirb/myinpulse/security/KeycloakJwtRolesConverter.java b/MyINPulse-back/src/main/java/enseirb/myinpulse/security/KeycloakJwtRolesConverter.java
index dba41cc..c73b82a 100644
--- a/MyINPulse-back/src/main/java/enseirb/myinpulse/security/KeycloakJwtRolesConverter.java
+++ b/MyINPulse-back/src/main/java/enseirb/myinpulse/security/KeycloakJwtRolesConverter.java
@@ -1,5 +1,7 @@
package enseirb.myinpulse.security;
+import static java.util.stream.Collectors.toSet;
+
import org.springframework.core.convert.converter.Converter;
import org.springframework.security.authentication.AbstractAuthenticationToken;
import org.springframework.security.core.GrantedAuthority;
@@ -14,8 +16,6 @@ import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
-import static java.util.stream.Collectors.toSet;
-
public class KeycloakJwtRolesConverter implements Converter {
/** Prefix used for realm level roles. */
public static final String PREFIX_REALM_ROLE = "ROLE_REALM_";
diff --git a/MyINPulse-back/src/main/resources/application.properties b/MyINPulse-back/src/main/resources/application.properties
index e67e4f6..08dccb9 100644
--- a/MyINPulse-back/src/main/resources/application.properties
+++ b/MyINPulse-back/src/main/resources/application.properties
@@ -2,11 +2,7 @@ spring.application.name=myinpulse
spring.security.oauth2.resourceserver.jwt.jwk-set-uri=http://localhost:7080/realms/test/protocol/openid-connect/certs
spring.security.oauth2.resourceserver.jwt.issuer-uri=http://localhost:7080/realms/test
logging.level.org.springframework.security=DEBUG
-#spring.datasource.url=jdbc:postgresql://postgres/${POSTGRES_DB}
-spring.datasource.url=jdbc:postgresql://localhost:5433/backend_db
-spring.datasource.username=backend_db_user
-spring.datasource.password=backend_db_user_password
+spring.datasource.url=jdbc:postgresql://${DATABASE_URL}/${BACKEND_DB}
+spring.datasource.username=${BACKEND_USER}
+spring.datasource.password=${BACKEND_PASSWORD}
spring.jpa.hibernate.ddl-auto=update
-spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
-
-spring.data.rest.base-path=/my/base/path
\ No newline at end of file
diff --git a/MyINPulse-back/src/main/resources/data.sql b/MyINPulse-back/src/main/resources/data.sql
index eb4eb9a..a94541b 100644
--- a/MyINPulse-back/src/main/resources/data.sql
+++ b/MyINPulse-back/src/main/resources/data.sql
@@ -1,10 +1,13 @@
TRUNCATE projets, utilisateurs, entrepreneurs, sections, rendez_vous, comptes_rendus CASCADE;
-INSERT INTO projets (nom_projet, logo, date_creation, status_projet) VALUES
-('Eau du robinet', decode('013d7d16d7ad4fefb61bd95b765c8ceb', 'hex'), TO_DATE('01-OCT-2023', 'DD-MON-YYYY'), 'En cours'),
-('Air oxygéné', decode('150647a0984e8f228cd14b54', 'hex'), TO_DATE('04-APR-2024', 'DD-MON-YYYY'), 'En cours'),
-('Débat concours', decode('022024abd5486e245c145dda65116f', 'hex'), TO_DATE('22-NOV-2023', 'DD-MON-YYYY'), 'Suspendu'),
-('HDeirbMI', decode('ab548d6c1d595a2975e6476f544d14c55a', 'hex'), TO_DATE('07-DEC-2024', 'DD-MON-YYYY'), 'Lancement');
+INSERT INTO projets (nom_projet, logo, date_creation, status_projet)
+VALUES ('Eau du robinet', decode('013d7d16d7ad4fefb61bd95b765c8ceb', 'hex'), TO_DATE('01-OCT-2023', 'DD-MON-YYYY'),
+ 'En cours'),
+ ('Air oxygéné', decode('150647a0984e8f228cd14b54', 'hex'), TO_DATE('04-APR-2024', 'DD-MON-YYYY'), 'En cours'),
+ ('Débat concours', decode('022024abd5486e245c145dda65116f', 'hex'), TO_DATE('22-NOV-2023', 'DD-MON-YYYY'),
+ 'Suspendu'),
+ ('HDeirbMI', decode('ab548d6c1d595a2975e6476f544d14c55a', 'hex'), TO_DATE('07-DEC-2024', 'DD-MON-YYYY'),
+ 'Lancement');
INSERT INTO utilisateurs (nom_utilisateur, prenom_utilisateur, mail_principal, mail_secondaire, numero_telephone) VALUES
('Dupont', 'Dupond', 'super@mail.fr', 'super2@mail.fr', '06 45 72 45 98'),
diff --git a/MyINPulse-back/src/main/resources/schema.sql b/MyINPulse-back/src/main/resources/schema.sql
index f1f8b08..aae3f91 100644
--- a/MyINPulse-back/src/main/resources/schema.sql
+++ b/MyINPulse-back/src/main/resources/schema.sql
@@ -10,12 +10,13 @@ DROP TABLE IF EXISTS formes CASCADE;
CREATE TABLE projets
(
-id_projet SERIAL NOT NULL,
-nom_projet VARCHAR(255) ,
-logo BYTEA ,
-date_creation DATE ,
-status_projet VARCHAR(255) ,
-CONSTRAINT pk_projet PRIMARY KEY (id_projet) );
+ id_projet SERIAL NOT NULL,
+ nom_projet VARCHAR(255),
+ logo BYTEA,
+ date_creation DATE,
+ status_projet VARCHAR(255),
+ CONSTRAINT pk_projet PRIMARY KEY (id_projet)
+);
CREATE TABLE utilisateurs
(
@@ -29,87 +30,99 @@ CONSTRAINT pk_utilisateur PRIMARY KEY (id_utilisateur) );
CREATE TABLE entrepreneurs
(
-ecole VARCHAR(255) ,
-filiere VARCHAR(255) ,
-status_snee BOOLEAN ,
-CONSTRAINT pk_entrepreneur PRIMARY KEY (id_utilisateur),
-INHERITS (utilisateurs) );
+ id_entrepreneur SERIAL REFERENCES utilisateurs (id_utilisateur),
+ ecole VARCHAR(255),
+ filiere VARCHAR(255),
+ status_snee BOOLEAN,
+ CONSTRAINT pk_entrepreneur PRIMARY KEY (id_entrepreneur)
+);
CREATE TABLE administrateurs
(
-CONSTRAINT pk_administrateur PRIMARY KEY (id_utilisateur),
-INHERITS (utilisateurs) );
+ id_administrateur SERIAL REFERENCES utilisateurs (id_utilisateur),
+ CONSTRAINT pk_administrateur PRIMARY KEY (id_administrateur)
+);
CREATE TABLE sections
(
-id_section SERIAL NOT NULL,
-titre VARCHAR(255) ,
-contenu_section TEXT ,
-date_modification TIMESTAMP ,
-CONSTRAINT pk_section PRIMARY KEY (id_section) );
+ id_section SERIAL NOT NULL,
+ titre VARCHAR(255),
+ contenu_section TEXT,
+ date_modification TIMESTAMP,
+ CONSTRAINT pk_section PRIMARY KEY (id_section)
+);
CREATE TABLE rendez_vous
(
-id_rdv SERIAL NOT NULL,
-date_rdv DATE ,
-heure_rdv TIME ,
-duree_rdv TIME ,
-lieu_rdv VARCHAR(255) ,
-sujet_rdv TEXT ,
-CONSTRAINT pk_rdv PRIMARY KEY (id_rdv) );
+ id_rdv SERIAL NOT NULL,
+ date_rdv DATE,
+ heure_rdv TIME,
+ duree_rdv TIME,
+ lieu_rdv VARCHAR(255),
+ sujet_rdv TEXT,
+ CONSTRAINT pk_rdv PRIMARY KEY (id_rdv)
+);
-CREATE TABLE comptes_rendus
+CREATE TABLE comptes_rendus
(
-id_compte_rendu SERIAL NOT NULL,
-contenu_compte_rendu TEXT ,
-CONSTRAINT pk_compte_rendu PRIMARY KEY (id_compte_rendu) );
+ id_compte_rendu SERIAL NOT NULL,
+ contenu_compte_rendu TEXT,
+ CONSTRAINT pk_compte_rendu PRIMARY KEY (id_compte_rendu)
+);
CREATE TABLE concerner
(
-id_section SERIAL REFERENCES sections (id_section),
-id_rdv SERIAL REFERENCES sections (id_rdv),
-CONSTRAINT pk_concerner PRIMARY KEY (id_section, id_rdv) );
+ id_section SERIAL REFERENCES sections (id_section),
+ id_rdv SERIAL REFERENCES sections (id_rdv),
+ CONSTRAINT pk_concerner PRIMARY KEY (id_section, id_rdv)
+);
ALTER TABLE projets
- ADD CONSTRAINT fk1_projet FOREIGN KEY (id_administrateur)
- REFERENCES administrateurs (id_administrateur)
- ON DELETE CASCADE;
+ ADD CONSTRAINT fk1_projet FOREIGN KEY (id_administrateur)
+ REFERENCES administrateurs (id_administrateur)
+ ON DELETE CASCADE;
ALTER TABLE projets
ADD CONSTRAINT fk2_projet FOREIGN KEY (id_entrepreneur_participation)
REFERENCES entrepreneurs (id_entrepreneur)
ON DELETE CASCADE;
-ALTER TABLE entrepreneurs
- ADD CONSTRAINT fk1_entrepreneur FOREIGN KEY (id_projet_propose)
- REFERENCES projets (id_projet)
- ON DELETE CASCADE;
+ALTER TABLE entrepreneurs
+ ADD CONSTRAINT fk1_entrepreneur FOREIGN KEY (id_projet_propose)
+ REFERENCES projets (id_projet)
+ ON DELETE CASCADE;
-ALTER TABLE sections
- ADD CONSTRAINT fk1_section FOREIGN KEY (id_projet)
- REFERENCES projets (id_projet)
- ON DELETE CASCADE;
+ALTER TABLE sections
+ ADD CONSTRAINT fk1_section FOREIGN KEY (id_projet)
+ REFERENCES projets (id_projet)
+ ON DELETE CASCADE;
-ALTER TABLE sections
- ADD CONSTRAINT fk2_section FOREIGN KEY (id_administrateur)
- REFERENCES administrateurs (id_administrateur)
- ON DELETE CASCADE;
+ALTER TABLE sections
+ ADD CONSTRAINT fk2_section FOREIGN KEY (id_administrateur)
+ REFERENCES administrateurs (id_administrateur)
+ ON DELETE CASCADE;
-ALTER TABLE rendez-vous
- ADD CONSTRAINT fk1_rdv FOREIGN KEY (id_entrepreneur)
- REFERENCES entrepreneurs (id_entrepreneur)
- ON DELETE CASCADE;
+ALTER TABLE rendez-vous
+ ADD CONSTRAINT fk1_rdv FOREIGN KEY (id_entrepreneur)
+ REFERENCES entrepreneurs (id_entrepreneur)
+ ON
+DELETE
+CASCADE;
-ALTER TABLE rendez-vous
- ADD CONSTRAINT fk2_rdv FOREIGN KEY (id_administrateur)
- REFERENCES administrateurs (id_administrateur)
- ON DELETE CASCADE;
+ALTER TABLE rendez-vous
+ ADD CONSTRAINT fk2_rdv FOREIGN KEY (id_administrateur)
+ REFERENCES administrateurs (id_administrateur)
+ ON
+DELETE
+CASCADE;
-ALTER TABLE comptes-rendus
- ADD CONSTRAINT fk1_compte_rendu FOREIGN KEY (id_rdv)
- REFERENCES rendez_vous (id_rdv)
- ON DELETE CASCADE;
+ALTER TABLE comptes-rendus
+ ADD CONSTRAINT fk1_compte_rendu FOREIGN KEY (id_rdv)
+ REFERENCES rendez_vous (id_rdv)
+ ON
+DELETE
+CASCADE;
diff --git a/config/frontdev.main.env b/config/backdev.env
similarity index 64%
rename from config/frontdev.main.env
rename to config/backdev.env
index 26c2803..a7e5517 100644
--- a/config/frontdev.main.env
+++ b/config/backdev.env
@@ -12,3 +12,11 @@ KEYCLOAK_PASSWORD=keycloak_db_user_password
BACKEND_DB=backend_db
BACKEND_USER=backend_db_user
BACKEND_PASSWORD=backend_db_user_password
+
+DATABASE_URL=localhost:5433
+
+VITE_KEYCLOAK_URL=http://localhost:7080
+VITE_KEYCLOAK_CLIENT_ID=myinpulse
+VITE_KEYCLOAK_REALM=test
+VITE_APP_URL=http://localhost:8080
+VITE_BACKEND_URL=http://localhost:8081/
diff --git a/config/backdev.front.env b/config/backdev.front.env
deleted file mode 100644
index 27cf54e..0000000
--- a/config/backdev.front.env
+++ /dev/null
@@ -1,5 +0,0 @@
-VITE_KEYCLOAK_URL=http://localhost:7080
-VITE_KEYCLOAK_CLIENT_ID=myinpulse
-VITE_KEYCLOAK_REALM=test
-VITE_APP_URL=http://localhost:8080
-VITE_BACKEND_URL=http://localhost:8081/
diff --git a/config/dev.docker-compose.yaml b/config/dev.docker-compose.yaml
new file mode 100644
index 0000000..d66d92a
--- /dev/null
+++ b/config/dev.docker-compose.yaml
@@ -0,0 +1,52 @@
+services:
+ postgres:
+ env_file: .env
+ build:
+ context: postgres/
+ dockerfile: Dockerfile
+ container_name: MyINPulse-DB
+ ports:
+ - 5433:5432
+ volumes:
+ - ./postgres/data:/var/lib/postgresql/data
+
+
+ keycloak:
+ container_name: MyINPulse-keycloak
+ build:
+ context: ./keycloak
+ dockerfile: Dockerfile
+ args:
+ KC_DB: postgres
+ KC_DB_URL: jdbc:postgresql://postgres/${POSTGRES_DB}
+ KC_DB_USERNAME: ${POSTGRES_USER}
+ KC_DB_PASSWORD: ${POSTGRES_PASSWORD}
+ environment:
+ KC_HOSTNAME_PORT: 7080
+ KC_HOSTNAME_STRICT_BACKCHANNEL: "true"
+ KC_BOOTSTRAP_ADMIN_USERNAME: ${KEYCLOAK_ADMIN}
+ KC_BOOTSTRAP_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD}
+ KC_LOG_LEVEL: info
+ command: ["start-dev", "--http-port", "7080", "--https-port", "7443", "--hostname", "${KEYCLOAK_HOSTNAME}"]
+ ports:
+ - "7080:7080"
+ - "7443:7443"
+ depends_on:
+ - postgres
+
+ #front:
+ # build:
+ # context: ./front/
+ # dockerfile: Dockerfile
+ # container_name: MyINPulse-front
+ # ports:
+ # - "8080:80"
+
+ #back:
+ # build:
+ # context: ./MyINPulse-back/
+ # dockerfile: Dockerfile
+ # container_name: MyINPulse-back
+ # ports:
+ # - "8081:8080"
+
\ No newline at end of file
diff --git a/config/dev.env b/config/dev.env
new file mode 100644
index 0000000..bcd45f3
--- /dev/null
+++ b/config/dev.env
@@ -0,0 +1,22 @@
+POSTGRES_DB=postgres_db
+POSTGRES_USER=postgres
+POSTGRES_PASSWORD=postgres_db_user_password
+
+KEYCLOAK_ADMIN=admin
+KEYCLOAK_ADMIN_PASSWORD=admin
+KEYCLOAK_HOSTNAME=localhost
+KEYCLOAK_DB=keycloak_db
+KEYCLOAK_USER=keycloak_db_user
+KEYCLOAK_PASSWORD=keycloak_db_user_password
+
+BACKEND_DB=backend_db
+BACKEND_USER=backend_db_user
+BACKEND_PASSWORD=backend_db_user_password
+
+DATABASE_URL=localhost:5433
+
+VITE_KEYCLOAK_URL=http://localhost:7080
+VITE_KEYCLOAK_CLIENT_ID=myinpulse-dev
+VITE_KEYCLOAK_REALM=test
+VITE_APP_URL=http://localhost:5173
+VITE_BACKEND_URL=http://localhost:8081/
diff --git a/config/backdev.main.env b/config/frontdev.env
similarity index 56%
rename from config/backdev.main.env
rename to config/frontdev.env
index 2a597c3..ed4a23b 100644
--- a/config/backdev.main.env
+++ b/config/frontdev.env
@@ -11,4 +11,12 @@ KEYCLOAK_PASSWORD=keycloak_db_user_password
BACKEND_DB=backend_db
BACKEND_USER=backend_db_user
-BACKEND_PASSWORD=backend_db_user_password
\ No newline at end of file
+BACKEND_PASSWORD=backend_db_user_password
+
+DATABASE_URL=MyINPulse-DB
+
+VITE_KEYCLOAK_URL=http://localhost:7080
+VITE_KEYCLOAK_CLIENT_ID=myinpulse-dev
+VITE_KEYCLOAK_REALM=test
+VITE_APP_URL=http://localhost:5173
+VITE_BACKEND_URL=http://localhost:8081/
diff --git a/config/frontdev.front.env b/config/frontdev.front.env
deleted file mode 100644
index 5eba221..0000000
--- a/config/frontdev.front.env
+++ /dev/null
@@ -1,5 +0,0 @@
-VITE_KEYCLOAK_URL=http://localhost:7080
-VITE_KEYCLOAK_CLIENT_ID=myinpulse-dev
-VITE_KEYCLOAK_REALM=test
-VITE_APP_URL=http://localhost:5173
-VITE_BACKEND_URL=http://localhost:8081/
diff --git a/config/prod.docker-compose.yaml b/config/prod.docker-compose.yaml
index 51f2d76..496efb3 100644
--- a/config/prod.docker-compose.yaml
+++ b/config/prod.docker-compose.yaml
@@ -30,10 +30,10 @@ services:
KC_BOOTSTRAP_ADMIN_USERNAME: ${KEYCLOAK_ADMIN}
KC_BOOTSTRAP_ADMIN_PASSWORD: ${KEYCLOAK_ADMIN_PASSWORD}
KC_LOG_LEVEL: info
- command: ["start-dev", "--http-port", "7080", "--https-port", "7443", "--hostname", "${KEYCLOAK_HOSTNAME}"]
- ports:
- - "7080:7080"
- - "7443:7443"
+ command: ["start-dev", "--http-port", "7080", "--https-port", "7443", "--hostname", "${KEYCLOAK_HOSTNAME}"] # TODO: remove start-dev
+ #ports:
+ # - "7080:7080"
+ # - "7443:7443"
depends_on:
- postgres
@@ -50,6 +50,6 @@ services:
context: ./MyINPulse-back/
dockerfile: Dockerfile
container_name: MyINPulse-back
- ports:
- - "8081:8080"
+ #ports:
+ # - "8081:8080"
\ No newline at end of file
diff --git a/config/prod.main.env b/config/prod.env
similarity index 61%
rename from config/prod.main.env
rename to config/prod.env
index 179d92c..2fb8da9 100644
--- a/config/prod.main.env
+++ b/config/prod.env
@@ -12,3 +12,11 @@ KEYCLOAK_PASSWORD=keycloak_db_user_password
BACKEND_DB=backend_db
BACKEND_USER=backend_db_user
BACKEND_PASSWORD=backend_db_user_password
+
+DATABASE_URL=MyINPulse-DB
+
+VITE_KEYCLOAK_URL=https://0549cd63f912d5dc9b31278d6f.eirb.fr
+VITE_KEYCLOAK_CLIENT_ID=myinpulse-eirb
+VITE_KEYCLOAK_REALM=test
+VITE_APP_URL=https://0549cd63f912d5dc9b31278d6f.piair.dev
+VITE_BACKEND_URL=http://TODO/
diff --git a/config/prod.front.env b/config/prod.front.env
deleted file mode 100644
index cb42a37..0000000
--- a/config/prod.front.env
+++ /dev/null
@@ -1,5 +0,0 @@
-VITE_KEYCLOAK_URL=https://0549cd63f912d5dc9b31278d6f.eirb.fr
-VITE_KEYCLOAK_CLIENT_ID=myinpulse-eirb
-VITE_KEYCLOAK_REALM=test
-VITE_APP_URL=https://0549cd63f912d5dc9b31278d6f.piair.dev
-VITE_BACKEND_URL=http://TODO/