Compare commits
No commits in common. "11ab5e1dc4e46cdcdcbbb3d0c3add19a67adfd80" and "3cb12dab4fe79c42a5cfa42c9e79317666066976" have entirely different histories.
11ab5e1dc4
...
3cb12dab4f
@ -6,18 +6,15 @@ import enseirb.myinpulse.postgres_db.repository.ComptesRendusRepository;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.management.relation.RoleNotFoundException;
|
||||
|
||||
@SpringBootApplication
|
||||
@RestController
|
||||
public class GetUserInfo {
|
||||
|
||||
@GetMapping("/unauth/random")
|
||||
public boolean rand(@RequestHeader("Authorization") String token) throws RoleNotFoundException {
|
||||
System.err.println(token);
|
||||
public boolean rand() {
|
||||
return Math.random() > 0.5;
|
||||
}
|
||||
|
||||
|
@ -1,7 +0,0 @@
|
||||
package enseirb.myinpulse.exceptions;
|
||||
|
||||
public class RoleNotFoudException extends RuntimeException {
|
||||
public RoleNotFoudException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package enseirb.myinpulse.exceptions;
|
||||
|
||||
public class UserNotFoundException extends RuntimeException {
|
||||
public UserNotFoundException(String message) {
|
||||
super(message);
|
||||
}
|
||||
}
|
@ -47,6 +47,6 @@ public class ComptesRendusController {
|
||||
if (contenu_compte_rendu != null) {
|
||||
compteRendu.get().setContenu_compte_rendu(contenu_compte_rendu);
|
||||
}
|
||||
return this.comptesRendusRepository.save(compteRendu.get());
|
||||
return compteRendu.get();
|
||||
}
|
||||
}
|
||||
|
@ -53,6 +53,6 @@ public class EntrepreneursController {
|
||||
if (status_snee != null) {
|
||||
entrepreneur.get().setStatus_snee(status_snee);
|
||||
}
|
||||
return this.entrepreneursRepository.save(entrepreneur.get());
|
||||
return entrepreneur.get();
|
||||
}
|
||||
}
|
||||
|
@ -59,6 +59,6 @@ public class ProjetsController {
|
||||
if (status_projet != null) {
|
||||
projet.get().setStatus_projet(status_projet);
|
||||
}
|
||||
return this.projetsRepository.save(projet.get());
|
||||
return projet.get();
|
||||
}
|
||||
}
|
||||
|
@ -2,14 +2,16 @@ package enseirb.myinpulse.postgres_db.controller;
|
||||
|
||||
import enseirb.myinpulse.postgres_db.model.RendezVous;
|
||||
import enseirb.myinpulse.postgres_db.repository.RendezVousRepository;
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalTime;
|
||||
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.time.LocalDateTime;
|
||||
import java.util.Optional;
|
||||
|
||||
@RestController
|
||||
public class RendezVousController {
|
||||
|
||||
@ -39,8 +41,8 @@ public class RendezVousController {
|
||||
public RendezVous updateRendezVous(
|
||||
@PathVariable Long id,
|
||||
LocalDate date_rdv,
|
||||
LocalTime heure_rdv,
|
||||
LocalTime duree_rdv,
|
||||
LocalDateTime heure_rdv,
|
||||
LocalDateTime duree_rdv,
|
||||
String lieu_rdv,
|
||||
String sujet_rdv) {
|
||||
Optional<RendezVous> rendezVous = this.rendezVousRepository.findById(id);
|
||||
@ -62,6 +64,6 @@ public class RendezVousController {
|
||||
if (sujet_rdv != null) {
|
||||
rendezVous.get().setSujet_rdv(sujet_rdv);
|
||||
}
|
||||
return this.rendezVousRepository.save(rendezVous.get());
|
||||
return rendezVous.get();
|
||||
}
|
||||
}
|
||||
|
@ -55,6 +55,6 @@ public class SectionsController {
|
||||
if (date_modification != null) {
|
||||
section.get().setDate_modification(date_modification);
|
||||
}
|
||||
return this.sectionsRepository.save(section.get());
|
||||
return section.get();
|
||||
}
|
||||
}
|
||||
|
@ -62,6 +62,6 @@ public class UtilisateursController {
|
||||
if (numero_telephone != null) {
|
||||
utilisateur.get().setNumero_telephone(numero_telephone);
|
||||
}
|
||||
return this.utilisateursRepository.save(utilisateur.get());
|
||||
return utilisateur.get();
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,7 @@ import java.util.List;
|
||||
|
||||
@Entity
|
||||
@Table(name = "administrateurs")
|
||||
@PrimaryKeyJoinColumn(name = "id_administrateur", referencedColumnName = "id_utilisateur")
|
||||
@PrimaryKeyJoinColumn(name = "id_administrateur")
|
||||
public class Administrateurs extends Utilisateurs {
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
|
@ -6,7 +6,7 @@ import jakarta.persistence.Table;
|
||||
|
||||
@Entity
|
||||
@Table(name = "entrepreneurs")
|
||||
@PrimaryKeyJoinColumn(name = "id_entrepreneur", referencedColumnName = "id_utilisateur")
|
||||
@PrimaryKeyJoinColumn(name = "id_entrepreneur")
|
||||
public class Entrepreneurs extends Utilisateurs {
|
||||
|
||||
@Column(length = 255)
|
||||
|
@ -4,7 +4,7 @@ import jakarta.persistence.*;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalTime;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@ -36,8 +36,8 @@ public class RendezVous {
|
||||
private Long id_rdv;
|
||||
|
||||
private LocalDate date_rdv;
|
||||
private LocalTime heure_rdv;
|
||||
private LocalTime duree_rdv;
|
||||
private LocalDateTime heure_rdv;
|
||||
private LocalDateTime duree_rdv;
|
||||
|
||||
@Column(length = 255)
|
||||
private String lieu_rdv;
|
||||
@ -49,8 +49,8 @@ public class RendezVous {
|
||||
public RendezVous(
|
||||
Long id_rdv,
|
||||
LocalDate date_rdv,
|
||||
LocalTime heure_rdv,
|
||||
LocalTime duree_rdv,
|
||||
LocalDateTime heure_rdv,
|
||||
LocalDateTime duree_rdv,
|
||||
String lieu_rdv,
|
||||
String sujet_rdv) {
|
||||
this.id_rdv = id_rdv;
|
||||
@ -77,19 +77,19 @@ public class RendezVous {
|
||||
this.date_rdv = date_rdv;
|
||||
}
|
||||
|
||||
public LocalTime getHeure_rdv() {
|
||||
public LocalDateTime getHeure_rdv() {
|
||||
return heure_rdv;
|
||||
}
|
||||
|
||||
public void setHeure_rdv(LocalTime heure_rdv) {
|
||||
public void setHeure_rdv(LocalDateTime heure_rdv) {
|
||||
this.heure_rdv = heure_rdv;
|
||||
}
|
||||
|
||||
public LocalTime getDuree_rdv() {
|
||||
public LocalDateTime getDuree_rdv() {
|
||||
return duree_rdv;
|
||||
}
|
||||
|
||||
public void setDuree_rdv(LocalTime duree_rdv) {
|
||||
public void setDuree_rdv(LocalDateTime duree_rdv) {
|
||||
this.duree_rdv = duree_rdv;
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,7 @@ public class Utilisateurs {
|
||||
@Column(length = 255)
|
||||
private String mail_secondaire;
|
||||
|
||||
@Column(length = 20)
|
||||
@Column(length = 15)
|
||||
private String numero_telephone;
|
||||
|
||||
public Utilisateurs() {}
|
||||
|
@ -1,7 +1,3 @@
|
||||
/*
|
||||
* Source: https://github.com/ChristianHuff-DEV/secure-spring-rest-api-using-keycloak/blob/main/src/main/java/io/betweendata/RestApi/security/oauth2/KeycloakJwtRolesConverter.java
|
||||
* edited by Pierre Tellier
|
||||
*/
|
||||
package enseirb.myinpulse.security;
|
||||
|
||||
import static java.util.stream.Collectors.toSet;
|
||||
@ -42,7 +38,7 @@ public class KeycloakJwtRolesConverter implements Converter<Jwt, AbstractAuthent
|
||||
source,
|
||||
Stream.concat(
|
||||
new JwtGrantedAuthoritiesConverter().convert(source).stream(),
|
||||
tokenRolesExtractor(source).stream())
|
||||
TEMPORARNAME(source).stream())
|
||||
.collect(toSet()));
|
||||
}
|
||||
|
||||
@ -50,7 +46,7 @@ public class KeycloakJwtRolesConverter implements Converter<Jwt, AbstractAuthent
|
||||
* Extracts the realm and resource level roles from a JWT token distinguishing between them
|
||||
* using prefixes.
|
||||
*/
|
||||
public Collection<GrantedAuthority> tokenRolesExtractor(Jwt jwt) {
|
||||
public Collection<GrantedAuthority> TEMPORARNAME(Jwt jwt) {
|
||||
// Collection that will hold the extracted roles
|
||||
Collection<GrantedAuthority> grantedAuthorities = new ArrayList<>();
|
||||
|
||||
|
@ -1,135 +0,0 @@
|
||||
package enseirb.myinpulse.utils.keycloak;
|
||||
|
||||
import static org.springframework.http.MediaType.APPLICATION_JSON;
|
||||
|
||||
import enseirb.myinpulse.exceptions.UserNotFoundException;
|
||||
import enseirb.myinpulse.utils.keycloak.datatypes.RoleRepresentation;
|
||||
import enseirb.myinpulse.utils.keycloak.datatypes.UserRepresentation;
|
||||
|
||||
import org.springframework.web.client.RestClient;
|
||||
|
||||
import javax.management.relation.RoleNotFoundException;
|
||||
|
||||
public class KeycloakApi {
|
||||
|
||||
static final String keycloakUrl;
|
||||
static final String realmName;
|
||||
|
||||
static {
|
||||
if (System.getenv("VITE_KEYCLOAK_URL") == null) {
|
||||
System.exit(-1);
|
||||
}
|
||||
keycloakUrl = System.getenv("VITE_KEYCLOAK_URL");
|
||||
}
|
||||
|
||||
static {
|
||||
if (System.getenv("VITE_KEYCLOAK_REALM") == null) {
|
||||
System.exit(-1);
|
||||
}
|
||||
realmName = System.getenv("VITE_KEYCLOAK_REALM");
|
||||
}
|
||||
|
||||
/**
|
||||
* Uses Keycloak API to retrieve a role representation of a role by its name
|
||||
*
|
||||
* @param roleName name of the role
|
||||
* @param bearer authorization header used by the client to authenticate to keycloak
|
||||
*/
|
||||
public static RoleRepresentation getRoleRepresentationByName(String roleName, String bearer)
|
||||
throws RoleNotFoundException {
|
||||
RoleRepresentation[] response =
|
||||
RestClient.builder()
|
||||
.baseUrl(keycloakUrl)
|
||||
.defaultHeader("Authorization", bearer)
|
||||
.build()
|
||||
.get()
|
||||
.uri("/admin/realms/{realmName}/roles/{roleName}", realmName, roleName)
|
||||
.retrieve()
|
||||
.body(RoleRepresentation[].class);
|
||||
|
||||
if (response == null || response.length == 0) {
|
||||
throw new RoleNotFoundException("Role not found");
|
||||
}
|
||||
return response[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* Use keycloak API to to retreive a userID via his name or email.
|
||||
*
|
||||
* @param username username or mail of the user
|
||||
* @param bearer bearer of the user, allowing access to database
|
||||
* @return the userid, as a String
|
||||
* @throws UserNotFoundException
|
||||
*/
|
||||
public static String getUserIdByName(String username, String bearer)
|
||||
throws UserNotFoundException {
|
||||
UserRepresentation[] response =
|
||||
RestClient.builder()
|
||||
.baseUrl(keycloakUrl)
|
||||
.defaultHeader("Authorization", bearer)
|
||||
.build()
|
||||
.get()
|
||||
.uri(
|
||||
"/admin/realms/{realmName}/users?username={username}",
|
||||
realmName,
|
||||
username)
|
||||
.retrieve()
|
||||
.body(UserRepresentation[].class);
|
||||
|
||||
if (response == null || response.length == 0) {
|
||||
throw new UserNotFoundException("User not found");
|
||||
}
|
||||
return response[0].id;
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO: check for error
|
||||
*
|
||||
* <p>Set a keycloak role to a keycloak user.
|
||||
*
|
||||
* <p>Usual roles should be `MyINPulse-admin` and `MyINPulse-entrepreneur`
|
||||
*
|
||||
* @param username
|
||||
* @param roleName
|
||||
* @param bearer
|
||||
* @throws RoleNotFoundException
|
||||
* @throws UserNotFoundException
|
||||
*/
|
||||
public static void setRoleToUser(String username, String roleName, String bearer)
|
||||
throws RoleNotFoundException, UserNotFoundException {
|
||||
RoleRepresentation roleRepresentation = getRoleRepresentationByName(roleName, bearer);
|
||||
String userId = getUserIdByName(username, bearer);
|
||||
|
||||
RestClient.builder()
|
||||
.baseUrl(keycloakUrl)
|
||||
.defaultHeader("Authorization", bearer)
|
||||
.build()
|
||||
.post()
|
||||
.uri(
|
||||
"/admin/realms/${realmName}/users/${userId}/role-mappings/realm",
|
||||
realmName,
|
||||
userId)
|
||||
.body(roleRepresentation)
|
||||
.contentType(APPLICATION_JSON)
|
||||
.retrieve();
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a user from Keycloak database. TODO: check the bearer permission.
|
||||
*
|
||||
* @param username
|
||||
* @param bearer
|
||||
* @throws UserNotFoundException
|
||||
*/
|
||||
public static void deleteUser(String username, String bearer) throws UserNotFoundException {
|
||||
String userId = getUserIdByName(username, bearer);
|
||||
|
||||
RestClient.builder()
|
||||
.baseUrl(keycloakUrl)
|
||||
.defaultHeader("Authorization", bearer)
|
||||
.build()
|
||||
.delete()
|
||||
.uri("/admin/realms/${realmName}/users/${userId}", realmName, userId)
|
||||
.retrieve();
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package enseirb.myinpulse.utils.keycloak.datatypes;
|
||||
|
||||
public class RoleRepresentation {
|
||||
public String id;
|
||||
public String name;
|
||||
public String description;
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
package enseirb.myinpulse.utils.keycloak.datatypes;
|
||||
|
||||
public class UserRepresentation {
|
||||
public String id;
|
||||
public String name;
|
||||
}
|
@ -1,5 +1,3 @@
|
||||
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'),
|
||||
@ -9,49 +7,56 @@ VALUES ('Eau du robinet', decode('013d7d16d7ad4fefb61bd95b765c8ceb', 'hex'), TO_
|
||||
('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'),
|
||||
('Martin', 'Matin', 'genial@mail.fr', 'genial2@mail.fr', '06 52 14 58 73'),
|
||||
('Charvet', 'Lautre', 'mieux@tmail.fr', 'mieux2@tmail.fr', '07 49 82 16 35'),
|
||||
('Leguez', 'Theo', 'bof@mesmails.fr', 'bof2@mesmails.fr', '+33 6 78 14 25 29'),
|
||||
('Kia', 'Bi', 'special@mail.fr', 'special2@mail.fr', '07 65 31 38 95'),
|
||||
('Ducaillou', 'Pierre', 'maildefou@xyz.fr', 'maildefou2@xyz.fr', '06 54 78 12 62');
|
||||
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'),
|
||||
('Martin', 'Matin', 'genial@mail.fr', 'genial2@mail.fr', '06 52 14 58 73'),
|
||||
('Charvet', 'Lautre', 'mieux@tmail.fr', 'mieux2@tmail.fr', '07 49 82 16 35'),
|
||||
('Leguez', 'Theo', 'bof@mesmails.fr', 'bof2@mesmails.fr', '+33 6 78 14 25 29'),
|
||||
('Kia', 'Bi', 'special@mail.fr', 'special2@mail.fr', '07 65 31 38 95');
|
||||
|
||||
INSERT INTO entrepreneurs (ecole, filiere, status_snee)
|
||||
VALUES ('ENSEIRB-MATMECA', 'INFO', TRUE),
|
||||
('ENSC', 'Cognitique', TRUE),
|
||||
('ENSEIRB-MATMECA', 'MATMECA', FALSE),
|
||||
('SupOptique', 'Classique', TRUE),
|
||||
('ENSEGID', 'Géoscience', FALSE),
|
||||
('ENSMAC', 'Matériaux composites - Mécanique', FALSE);
|
||||
|
||||
INSERT INTO entrepreneurs (ecole, filiere, status_snee, id_entrepreneur) VALUES
|
||||
('ENSEIRB-MATMECA', 'INFO', TRUE, 1),
|
||||
('ENSC', 'Cognitique', TRUE, 2),
|
||||
('ENSEIRB-MATMECA', 'MATMECA', FALSE, 3),
|
||||
('SupOptique', 'Classique', TRUE, 4),
|
||||
('ENSEGID', 'Géoscience', FALSE, 5),
|
||||
('ENSMAC', 'Matériaux composites - Mécanique', FALSE, 6);
|
||||
INSERT INTO sections (titre, contenu_section, date_modification)
|
||||
VALUES ("Problème", "les problèmes...", TO_DATE('15-JAN-2025', 'DD-MON-YYYY')),
|
||||
("Segment de client", "Le segment AB passant le client n°8 est de longueur 32mm.
|
||||
Le segment BC a quant à lui un longueur de 28mm. Quelle la longueur du segment AC ?",
|
||||
TO_DATE('12-OCT-2022', 'DD-MON-YYYY')),
|
||||
("Proposition de valeur unique", "'Son prix est de 2594€' 'Ah oui c'est unique en effet'",
|
||||
TO_DATE('25-MAY-2024', 'DD-MON-YYYY')),
|
||||
("Solution", "Un problème ? Une solution", TO_DATE('08-FEB-2024', 'DD-MON-YYYY')),
|
||||
("Canaux", "Ici nous avons la Seine, là-bas le Rhin, oh et plus loin le canal de Suez",
|
||||
TO_DATE('19-JUL-2023', 'DD-MON-YYYY')),
|
||||
("Sources de revenus", "Y'en n'a pas on est pas payé. Enfin y'a du café quoi",
|
||||
TO_DATE('12-JAN-2025', 'DD-MON-YYYY')),
|
||||
("Structure des coûts", "'Ah oui là ça va faire au moins 1000€ par mois', Eirbware",
|
||||
TO_DATE('06-FEB-2025', 'DD-MON-YYYY')),
|
||||
("Indicateurs clés", "On apprend les clés comme des badges, ça se fait", TO_DATE('05-FEB-2025', 'DD-MON-YYYY')),
|
||||
("Avantages concurrentiel", "On est meilleur", TO_DATE('23-APR-2024', 'DD-MON-YYYY'));
|
||||
|
||||
INSERT INTO sections (titre, contenu_section, date_modification) VALUES
|
||||
('Problème', 'les problèmes...', TO_TIMESTAMP('15-JAN-2025 09:30:20', 'DD-MON-YYYY, HH24:MI:SS')),
|
||||
('Segment de client', 'Le segment AB passant le client n°8 est de longueur 32mm.
|
||||
Le segment BC a quant à lui un longueur de 28mm. Quelle la longueur du segment AC ?', TO_TIMESTAMP('12-OCT-2022 17:47:38', 'DD-MON-YYYY, HH24:MI:SS')),
|
||||
('Proposition de valeur unique', '''Son prix est de 2594€'' ''Ah oui c''est unique en effet', TO_TIMESTAMP('25-MAY-2024 11:12:04', 'DD-MON-YYYY, HH24:MI:SS')),
|
||||
('Solution', 'Un problème ? Une solution', TO_TIMESTAMP('08-FEB-2024 10:17:53', 'DD-MON-YYYY, HH24:MI:SS')),
|
||||
('Canaux', 'Ici nous avons la Seine, là-bas le Rhin, oh et plus loin le canal de Suez', TO_TIMESTAMP('19-JUL-2023 19:22:45', 'DD-MON-YYYY, HH24:MI:SS')),
|
||||
('Sources de revenus', 'Y''en n''a pas on est pas payé. Enfin y''a du café quoi', TO_TIMESTAMP('12-JAN-2025 11:40:26', 'DD-MON-YYYY, HH24:MI:SS')),
|
||||
('Structure des coûts', '''Ah oui là ça va faire au moins 1000€ par mois'', Eirbware', TO_TIMESTAMP('06-FEB-2025 13:04:06', 'DD-MON-YYYY, HH24:MI:SS')),
|
||||
('Indicateurs clés', 'On apprend les clés comme des badges, ça se fait', TO_TIMESTAMP('05-FEB-2025 12:42:38', 'DD-MON-YYYY, HH24:MI:SS')),
|
||||
('Avantages concurrentiel', 'On est meilleur', TO_TIMESTAMP('23-APR-2024 16:24:02', 'DD-MON-YYYY, HH24:MI:SS'));
|
||||
INSERT INTO rendez_vous (date_rdv, heure_rdv, duree_rdv, lieu_rdv, sujet_rdv)
|
||||
VALUES (TO_DATE('24-DEC-2023', 'DD-MON-YYYY'), '00:00:00', '00:37:53', "À la maison", "Ouvrir les cadeaux"),
|
||||
(TO_DATE('15-AUG-2024', 'DD-MON-YYYY'), '22:35:00', '00:12:36', "Sur les quais ou dans un champ probablement",
|
||||
"BOUM BOUM les feux d'artifices (on fête quoi déjà ?)"),
|
||||
(TO_DATE('29-FEB-2023', 'DD-MON-YYYY'), '14:20:00', '00:20:00', "Salle TD 15",
|
||||
"Ah mince c'est pas une année bissextile !"),
|
||||
(TO_DATE('23-JAN-2024', 'DD-MON-YYYY'), '12:56:27', '11:03:33', "Là où le vent nous porte",
|
||||
"Journée la plus importante de l'année"),
|
||||
(TO_DATE('25-AUG-2025', 'DD-MON-YYYY'), '00:09:00', '01:00:00', "Euh c'est par où l'amphi 56 ?",
|
||||
"Rentrée scolaire (il fait trop froid c'est quoi ça on est en août)");
|
||||
|
||||
INSERT INTO rendez_vous (date_rdv, heure_rdv, duree_rdv, lieu_rdv, sujet_rdv) VALUES
|
||||
(TO_DATE('24-DEC-2023', 'DD-MON-YYYY'), '00:00:00', '00:37:53', 'À la maison', 'Ouvrir les cadeaux'),
|
||||
(TO_DATE('15-AUG-2024', 'DD-MON-YYYY'), '22:35:00', '00:12:36', 'Sur les quais ou dans un champ probablement', 'BOUM BOUM les feux d''artifices (on fête quoi déjà ?)'),
|
||||
(TO_DATE('28-FEB-2023', 'DD-MON-YYYY'), '14:20:00', '00:20:00', 'Salle TD 15', 'Ah mince c''est pas une année bissextile !'),
|
||||
(TO_DATE('23-JAN-2024', 'DD-MON-YYYY'), '12:56:27', '11:03:33', 'Là où le vent nous porte', 'Journée la plus importante de l''année'),
|
||||
(TO_DATE('25-AUG-2025', 'DD-MON-YYYY'), '00:09:00', '01:00:00', 'Euh c''est par où l''amphi 56 ?', 'Rentrée scolaire (il fait trop froid c''est quoi ça on est en août)');
|
||||
|
||||
INSERT INTO comptes_rendus (contenu_compte_rendu) VALUES
|
||||
('Ah oui ça c''est super, ah ouais j''aime bien, bien vu de penser à ça'),
|
||||
('Bonne réunion'),
|
||||
('Ouais, j''ai rien compris mais niquel on fait comme vous avez dit'),
|
||||
('Non non ça va pas du tout ce que tu me proposes, faut tout refaire'),
|
||||
('Réponse de la DSI : non'),
|
||||
('Trop dommage qu''Apple ait sorti leur logiciel avant nous, on avait la même idée et tout on aurait tellement pu leur faire de la concurrence');
|
||||
INSERT INTO comptes_rendus (contenu_compte_rendu)
|
||||
VALUES ("Ah oui ça c'est super, ah ouais j'aime bien, bien vu de penser à ça"),
|
||||
("Bonne réunion"),
|
||||
("Ouais, j'ai rien compris mais niquel on fait comme vous avez dit"),
|
||||
("Non non ça va pas du tout ce que tu me proposes, faut tout refaire"),
|
||||
("Réponse de la DSI : non"),
|
||||
("Trop dommage qu'Apple ait sorti leur logiciel avant nous, on avait la même idée et tout on aurait tellement pu leur faire de la concurrence");
|
||||
|
||||
|
||||
|
||||
|
@ -1 +0,0 @@
|
||||
DROP TABLE IF EXISTS administrateurs, projets, utilisateurs, entrepreneurs, sections, rendez_vous, comptes_rendus, concerner CASCADE;
|
@ -20,13 +20,14 @@ CREATE TABLE projets
|
||||
|
||||
CREATE TABLE utilisateurs
|
||||
(
|
||||
id_utilisateur SERIAL NOT NULL,
|
||||
nom_utilisateur VARCHAR(255) ,
|
||||
prenom_utilisateur VARCHAR(255) ,
|
||||
mail_principal VARCHAR(255) ,
|
||||
mail_secondaire VARCHAR(255) ,
|
||||
numero_telephone VARCHAR(20) ,
|
||||
CONSTRAINT pk_utilisateur PRIMARY KEY (id_utilisateur) );
|
||||
id_utilisateur SERIAL NOT NULL,
|
||||
nom_utilisateur VARCHAR(255),
|
||||
prenom_utilisateur VARCHAR(255),
|
||||
mail_principal VARCHAR(255),
|
||||
mail_secondaire VARCHAR(255),
|
||||
numero_telephone VARCHAR(15),
|
||||
CONSTRAINT pk_utilisateur PRIMARY KEY (id_utilisateur)
|
||||
);
|
||||
|
||||
CREATE TABLE entrepreneurs
|
||||
(
|
||||
|
@ -14,8 +14,7 @@ axiosInstance.interceptors.response.use(
|
||||
async (error) => {
|
||||
const originalRequest = error.config;
|
||||
if (
|
||||
((error.response && error.response.status === 401) ||
|
||||
error.code == "ERR_NETWORK") &&
|
||||
error.response.status === 401 &&
|
||||
!originalRequest._retry &&
|
||||
store.authenticated
|
||||
) {
|
||||
|
@ -1,9 +1,6 @@
|
||||
<script lang="ts" setup>
|
||||
import { store } from "../main.ts";
|
||||
import { callApi } from "@/services/api.ts";
|
||||
import { ref } from "vue";
|
||||
|
||||
const CustomRequest = ref("");
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@ -58,14 +55,6 @@ const CustomRequest = ref("");
|
||||
<td>res</td>
|
||||
<td id="3"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<input v-model="CustomRequest" placeholder="edit me" />
|
||||
</td>
|
||||
<td>
|
||||
<button @click="callApi(CustomRequest)">call</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</template>
|
||||
|
Loading…
x
Reference in New Issue
Block a user