From d4c48ee9f187ccce6d174df81aa2cfc6f5c4eaaf Mon Sep 17 00:00:00 2001 From: LeoMoulin Date: Mon, 11 Mar 2024 19:16:19 +0100 Subject: [PATCH 1/8] Leo/Backend (#82) Ce merge enverra dans main : le timeout des token, la limite de 5 token par user, les nouvelles tables pour les demandes d'inscriptions Co-authored-by: Anthony Debucquoy Reviewed-on: https://git.herisson.ovh/PGL/Clyde/pulls/82 Reviewed-by: Debucquoy Anthony Reviewed-by: Maxime <231026@umons.ac.be> Reviewed-by: Wal Co-authored-by: LeoMoulin Co-committed-by: LeoMoulin --- .../Clyde/EndPoints/MockController.java | 15 ++- .../java/ovh/herisson/Clyde/JdbcConfig.java | 2 + .../Clyde/Repositories/TokenRepository.java | 3 + .../Clyde/Services/AuthenticatorService.java | 3 +- .../herisson/Clyde/Services/TokenService.java | 33 +++++- .../Clyde/Tables/InscriptionRequest.java | 108 ++++++++++++++++++ .../Clyde/Tables/ReinscriptionRequest.java | 69 +++++++++++ .../herisson/Clyde/Tables/RequestState.java | 7 ++ .../java/ovh/herisson/Clyde/Tables/Token.java | 17 ++- .../java/ovh/herisson/Clyde/Tables/User.java | 1 + 10 files changed, 244 insertions(+), 14 deletions(-) create mode 100644 backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java create mode 100644 backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java create mode 100644 backend/src/main/java/ovh/herisson/Clyde/Tables/RequestState.java diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java index 18fea23..b140057 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java @@ -7,12 +7,14 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import ovh.herisson.Clyde.Repositories.TokenRepository; import ovh.herisson.Clyde.Repositories.UserRepository; +import ovh.herisson.Clyde.Services.TokenService; import ovh.herisson.Clyde.Tables.Role; import ovh.herisson.Clyde.Tables.Token; import ovh.herisson.Clyde.Tables.User; import java.util.ArrayList; import java.util.Arrays; +import java.util.Calendar; import java.util.Date; @RestController @@ -23,13 +25,14 @@ public class MockController { public final UserRepository userRepo; public final TokenRepository tokenRepo; - + public final TokenService tokenService; ArrayList mockUsers; - public MockController(UserRepository userRepo, TokenRepository tokenRepo){ + public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService){ this.tokenRepo = tokenRepo; this.userRepo = userRepo; + this.tokenService = tokenService; } /** Saves an example of each user type by : @@ -41,10 +44,10 @@ public class MockController { @PostMapping("/mock") public void postMock(){ - User herobrine = new User("brine","hero","admin@admin.com","in your WalLs","ShadowsLand",new Date(0), "none",Role.Admin,passwordEncoder.encode("admin")); - User joe = new User("Mama","Joe","student@student.com","roundabout","DaWarudo",new Date(0), "None",Role.Student,passwordEncoder.encode("student")); - User meh = new User("Inspiration","lackOf","secretary@secretary.com","a Box","the street",new Date(0),"none", Role.Teacher,passwordEncoder.encode("secretary")); - User joke = new User("CthemBalls","Lemme","teacher@teacher.com","lab","faculty",new Date(0), "none",Role.Teacher,passwordEncoder.encode("teacher")); + User herobrine = new User("brine","hero","admin@admin.com","in your WalLs","ShadowsLand",new Date(0), null,Role.Admin,passwordEncoder.encode("admin")); + User joe = new User("Mama","Joe","student@student.com","roundabout","DaWarudo",new Date(0), null,Role.Student,passwordEncoder.encode("student")); + User meh = new User("Inspiration","lackOf","secretary@secretary.com","a Box","the street",new Date(0), null,Role.Teacher,passwordEncoder.encode("secretary")); + User joke = new User("CthemBalls","Lemme","teacher@teacher.com","lab","faculty",new Date(0), null,Role.Teacher,passwordEncoder.encode("teacher")); mockUsers = new ArrayList(Arrays.asList(herobrine,joe,meh,joke)); diff --git a/backend/src/main/java/ovh/herisson/Clyde/JdbcConfig.java b/backend/src/main/java/ovh/herisson/Clyde/JdbcConfig.java index b6525dc..6df0b74 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/JdbcConfig.java +++ b/backend/src/main/java/ovh/herisson/Clyde/JdbcConfig.java @@ -6,8 +6,10 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; import org.springframework.jdbc.datasource.DriverManagerDataSource; +import org.springframework.scheduling.annotation.EnableScheduling; @Configuration +@EnableScheduling public class JdbcConfig { @Bean diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/TokenRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/TokenRepository.java index 6a4e47a..d3b422a 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Repositories/TokenRepository.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Repositories/TokenRepository.java @@ -4,10 +4,13 @@ import org.springframework.data.repository.CrudRepository; import ovh.herisson.Clyde.Tables.Token; import ovh.herisson.Clyde.Tables.User; +import java.util.ArrayList; + public interface TokenRepository extends CrudRepository { Token getByToken(String token); Iterable getByUser(User user); + ArrayList getByUserOrderByExpirationDate(User user); } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java index f3ae072..4cd1939 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java @@ -1,6 +1,7 @@ package ovh.herisson.Clyde.Services; import org.springframework.stereotype.Service; +import ovh.herisson.Clyde.Tables.Token; import ovh.herisson.Clyde.Tables.User; import java.util.Date; @@ -26,7 +27,7 @@ public class AuthenticatorService { if (user == null){return null;} if (!userService.checkPassword(user,password)){return null;} String token = tokenService.generateNewToken(); - tokenService.saveToken(token,user,expirationDate); + tokenService.saveToken(new Token(user, token,expirationDate)); return token; } } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java index 125dbde..50ddcbf 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java @@ -1,19 +1,19 @@ package ovh.herisson.Clyde.Services; - +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Service; import ovh.herisson.Clyde.Repositories.TokenRepository; import ovh.herisson.Clyde.Tables.Token; import ovh.herisson.Clyde.Tables.User; import java.io.UnsupportedEncodingException; -import java.nio.charset.StandardCharsets; import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; @Service public class TokenService { - TokenRepository tokenRepo; public TokenService(TokenRepository tokenRepo){ @@ -48,7 +48,28 @@ public class TokenService { return tokenRep.getUser(); } - public void saveToken(String token, User user, Date expirationDate){// todo faire qlq chose de l'expDate - tokenRepo.save(new Token(user,token)); + public void saveToken(Token token){ + //Si l'utilisateur a déja 5 token delete celui qui devait expirer le plus vite + ArrayList tokenList = tokenRepo.getByUserOrderByExpirationDate(token.getUser()); + while(tokenList.size() >= 5){ + tokenRepo.delete(tokenList.get(0)); + tokenList.remove(tokenList.get(0)); + } + tokenRepo.save(token); } -} \ No newline at end of file + + //Tous les jours a minuit + @Scheduled(cron = "0 0 0 * * ?") + public void autoDeleteToken() { + for (Token t: tokenRepo.findAll()){ + Calendar cal = Calendar.getInstance(); + + Calendar cal2 = Calendar.getInstance(); + cal2.setTime(t.getExpirationDate()); + + if (cal.compareTo(cal2) >= 0){ + tokenRepo.delete(t); + } + } + }; +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java new file mode 100644 index 0000000..2e5bf0d --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java @@ -0,0 +1,108 @@ +package ovh.herisson.Clyde.Tables; + +import jakarta.persistence.*; + +import java.util.Date; + +public class InscriptionRequest { + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + private String firstName; + private String lastName; + private String adress; + private String email; + private String country; + private Date birthDate; + + @ManyToOne + @JoinColumn(name="Cursus") + private Cursus cursus; + private RequestState state; + private String profilePicture; + public InscriptionRequest(){} + public InscriptionRequest(String lastName, String firstName, String adress, String email, String country, Date birthDate, RequestState state, String profilePicture){ + this.lastName = lastName; + this.firstName = firstName; + this.adress = adress; + this.email = email; + this.country = country; + this.birthDate = birthDate; + this.state = state; + } + + public int getId() { + return id; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getAdress() { + return adress; + } + + public void setAdress(String adress) { + this.adress = adress; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public Date getBirthDate() { + return birthDate; + } + + public void setBirthDate(Date birthDate) { + this.birthDate = birthDate; + } + + public Cursus getCursus() { + return cursus; + } + + public void setCursus(Cursus cursus) { + this.cursus = cursus; + } + + public RequestState getState() { + return state; + } + + public void setState(RequestState state) { + this.state = state; + } + + public String getProfilePicture() { + return profilePicture; + } + + public void setProfilePicture(String profilePicture) { + this.profilePicture = profilePicture; + } +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java new file mode 100644 index 0000000..8a56f88 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java @@ -0,0 +1,69 @@ +package ovh.herisson.Clyde.Tables; + +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; + +public class ReinscriptionRequest { + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + @ManyToOne + @JoinColumn(name = "User") + private User user; + + @ManyToOne + @JoinColumn(name = "Cursus") + private Cursus newCursus; + private RequestState state; + + //Permet de différencier les demandes de changement et une réinscription dans le même cursus + //Pour la réinscription on va le mettre a 0 + private boolean type; + + public ReinscriptionRequest(){} + + public ReinscriptionRequest(User user, Cursus newCursus, RequestState state, boolean type){ + this.user = user; + this.newCursus = newCursus; + this.state = state; + this.type = type; + } + + public int getId() { + return id; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public Cursus getNewCursus() { + return newCursus; + } + + public void setNewCursus(Cursus newCursus) { + this.newCursus = newCursus; + } + + public RequestState getState() { + return state; + } + + public void setState(RequestState state) { + this.state = state; + } + + public boolean isType() { + return type; + } + + public void setType(boolean type) { + this.type = type; + } +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/RequestState.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/RequestState.java new file mode 100644 index 0000000..f0345c1 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/RequestState.java @@ -0,0 +1,7 @@ +package ovh.herisson.Clyde.Tables; + +public enum RequestState { + Accepted, + Refused, + Pending; +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/Token.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/Token.java index 848f836..8aa4c0e 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/Token.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/Token.java @@ -1,6 +1,10 @@ package ovh.herisson.Clyde.Tables; import jakarta.persistence.*; +import org.springframework.scheduling.annotation.Scheduled; +import ovh.herisson.Clyde.Repositories.TokenRepository; + +import java.util.Date; @Entity public class Token { @@ -12,13 +16,16 @@ public class Token { @JoinColumn(name ="Users") private User user; private String token; + private Date expirationDate; - public Token(User user, String token){ + public Token(User user, String token, Date expirationDate){ this.user = user; this.token = token; + this.expirationDate = expirationDate; } public Token(){} + public int getId() { return id; } @@ -37,4 +44,12 @@ public class Token { public void setToken(String data) { this.token = data; } + + public void setExpirationDate(Date date){ + this.expirationDate = date; + } + + public Date getExpirationDate(){ + return expirationDate; + } } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java index 101ec9e..55c5be2 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/User.java @@ -16,6 +16,7 @@ public class User { private int regNo; private String lastName; private String firstName; + @Column(unique = true) private String email; private String address; private String country; From c14d0a9d21ca37e3ec409f4ee06dd70f4bef12af Mon Sep 17 00:00:00 2001 From: Wawilski Date: Sat, 9 Mar 2024 11:07:13 +0100 Subject: [PATCH 2/8] option language settings start --- frontend/src/App.vue | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 51f8882..2ee53b0 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -26,8 +26,10 @@ const notifications=ref(i18n("app.notifications")) const settings=ref(i18n("app.settings")) const login=ref(i18n("app.login")) - - + const active=ref(false) + function toggle() { + active = !active; + } @@ -52,9 +54,17 @@
-
  • +
  • +
  • @@ -122,8 +132,30 @@ .leftBar{ grid-area:leftBar; } +.option { + position: relative; + display: block; +} +.dropdown { + margin-top:55px; + display: block; + height:150px; + font-size: 13px; + position: absolute; + z-index: 1; + background-color:white; +} + +.dropdown .content { + color: #4CAF50; + padding: 8px 10px; + text-decoration: none; + display: block; + transition: 0.1s; +} + ul.vertical{ list-style-type: none; margin-top: 61px; @@ -176,7 +208,6 @@ position: fixed; height:61px; width: 100%; - overflow: hidden; background-color: rgb(24, 24, 24); } From 07e5fb3a7307a23e970f9a226be25a1c48638531 Mon Sep 17 00:00:00 2001 From: Wawilski Date: Sat, 9 Mar 2024 22:48:33 +0100 Subject: [PATCH 3/8] profil menu base --- frontend/src/App.vue | 115 ++++++++++++---------------------- frontend/src/Apps/Login.vue | 10 --- frontend/src/Apps/Profil.vue | 98 +++++++++++++++++++++++++++++ frontend/src/Apps/Request.vue | 15 ++--- 4 files changed, 144 insertions(+), 94 deletions(-) create mode 100644 frontend/src/Apps/Profil.vue diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 2ee53b0..bedd1f1 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -7,16 +7,21 @@ // Liste des apps import LoginPage from './Apps/Login.vue' import Inscription from "./Apps/Inscription.vue" + import Profil from "./Apps/Profil.vue" const apps = { '/login': LoginPage, - '/inscription': Inscription + '/inscription': Inscription, + '/profil': Profil } const currentPath = ref(window.location.hash) window.addEventListener('hashchange', () => { currentPath.value = window.location.hash }) + + function refreshPage() { + window.location.reload();} const currentView = computed(() => { return apps[currentPath.value.slice(1) || '/'] @@ -27,10 +32,7 @@ const settings=ref(i18n("app.settings")) const login=ref(i18n("app.login")) const active=ref(false) - function toggle() { - active = !active; - } - + @@ -32,11 +27,11 @@ .container{ color:white; height:100px; - font-size:20px; + font-size:20px; display:grid; - grid-template-columns:[firstCol-start]100px[firstCol-end secondCol-start]150px[secondCol-end thirdCol-start]200px[thirdCol-end fourthCol-start]150px[fourthCol-end]150px[fifthCol-end]150px[sixthCol-end]150px[endCol]; + grid-template-columns:[firstCol-start]100px[firstCol-end secondCol-start]150px[endCol]; grid-template-areas: - "id type surname firstname infos accept refuse"; + " accept refuse"; column-gap:10px; } From 3cf5153e79ac1b2114e0cded486b719b738faca2 Mon Sep 17 00:00:00 2001 From: Wawilski Date: Sun, 10 Mar 2024 12:34:44 +0100 Subject: [PATCH 4/8] Profil Student Prototype --- frontend/src/Apps/Profil.vue | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/frontend/src/Apps/Profil.vue b/frontend/src/Apps/Profil.vue index 893104c..76f5017 100644 --- a/frontend/src/Apps/Profil.vue +++ b/frontend/src/Apps/Profil.vue @@ -13,14 +13,15 @@ "name": "Math pour l'info", "credits": 11, "faculty": "science", - "Teacher": 42, + "teacher": 42, "Assistants": []}, - cours2:{ "id": 42, + cours2:{ + "id": 42, "name": "Fonctionnement des ordinateurs", "credits": 11, "faculty": "science", - "Teacher": 42, - "Assistants": []} + "teacher": 42, + "Assistants": []}, }, option:"IT", @@ -37,8 +38,8 @@
    -
    -
    +
    +
    {{example.firstName}} {{example.lastName.toUpperCase()}}
    @@ -50,8 +51,17 @@
    -
    +
    +
    + Liste des cours +
    +
    + {{item.name}} Teacher: {{item.teacher}} Credits:{{item.credits}} +
    +
    From 042553c1239c7029214d5f6c0342bec5052b77e6 Mon Sep 17 00:00:00 2001 From: Wawilski Date: Sun, 10 Mar 2024 16:01:47 +0100 Subject: [PATCH 5/8] Profil Teacher and examples --- frontend/src/Apps/Profil.vue | 160 +++++++++++++++++++++++++++++++--- frontend/src/Apps/Request.vue | 13 ++- 2 files changed, 156 insertions(+), 17 deletions(-) diff --git a/frontend/src/Apps/Profil.vue b/frontend/src/Apps/Profil.vue index 76f5017..b95ff54 100644 --- a/frontend/src/Apps/Profil.vue +++ b/frontend/src/Apps/Profil.vue @@ -1,8 +1,11 @@ @@ -38,30 +70,60 @@
    -
    +
    - {{example.firstName}} {{example.lastName.toUpperCase()}} + {{user.firstName}} {{user.lastName.toUpperCase()}}
    - E-mail: {{example.email}} + E-mail: {{user.email}} +
    +
    + {{user.option}} {{user.role.toUpperCase()}} +
    +
    + Faculty: {{user.faculty}} + Role: {{user.role}}
    - {{example.option}} {{example.role.toUpperCase()}} + +
    +
    + +
    -
    -
    + +
    +
    Liste des cours
    -
    - {{item.name}} Teacher: {{item.teacher}} Credits:{{item.credits}} +
    +
    +
    {{item.name}}
    +
    {{item.teacher}}
    +
    Credits:{{item.credits}}
    +
    + +
    +
    + +
    +
    + Liste des cours +
    +
    + {{item.name}} +
    +
    + +
    +
    +
    @@ -104,5 +166,77 @@ width:100%; margin-bottom:10px; } + .containerElement{ + justify-content:center; + display:grid; + grid-template-columns:350px 350px 200px; + grid-template-areas: + "name teacher credits"; + column-gap:10px; + + } + + .name { + grid-area:name; + align-self:center; + } + .teacher{ + grid-area:teacher; + align-self:center; + } + + .credits{ + grid-area:credits; + align-self:center; + } + +.listTitle{ + display: flex; + justify-content: center; + align-items: center; + width:200px; + margin-left:auto; + margin-right:auto; + border:2px solid black; + font-size:25px; + color:white; + padding:20px; + background-color:rgb(50,50,50); + border-radius:20px;margin-bottom:10px; +} + +.listElement{ + border:2px solid black; + font-size:25px; + color:white; + padding:20px; + background-color:rgb(50,50,50); + border-radius:20px; + margin-bottom:10px; +} + +.infosContainer { +padding-bottom:50px; +border:2px solid black; +font-size:25px; +color:white; +padding:20px; +background-color:rgb(50,50,50); +border-radius:20px; +} + + +button{ + border:none; + background-color:rgb(239, 60, 168); + border-radius:10px; + height:35px; + margin-top:10px; + +} + +button:hover{ + opacity:0.8; +} diff --git a/frontend/src/Apps/Request.vue b/frontend/src/Apps/Request.vue index 7b65e80..b8ec6c1 100644 --- a/frontend/src/Apps/Request.vue +++ b/frontend/src/Apps/Request.vue @@ -17,8 +17,13 @@
    -
    -
    + + + + +
    +
    +
    @@ -29,9 +34,9 @@ height:100px; font-size:20px; display:grid; - grid-template-columns:[firstCol-start]100px[firstCol-end secondCol-start]150px[endCol]; + grid-template-columns:[firstCol-start]100px[firstCol-end secondCol-start]150px[secondCol-end thirdCol-start]200px[thirdCol-end fourthCol-start]150px[fourthCol-end]150px[fifthCol-end]150px[sixthCol-end]150px[endCol]; grid-template-areas: - " accept refuse"; + "id type surname firstname infos accept refuse"; column-gap:10px; } From 2fe615370551adfc9455c525782dd7f4d0e38c70 Mon Sep 17 00:00:00 2001 From: Wawilski Date: Mon, 11 Mar 2024 12:02:27 +0100 Subject: [PATCH 6/8] Translation correction --- frontend/src/App.vue | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/frontend/src/App.vue b/frontend/src/App.vue index bedd1f1..6ed110c 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -20,9 +20,6 @@ currentPath.value = window.location.hash }) - function refreshPage() { - window.location.reload();} - const currentView = computed(() => { return apps[currentPath.value.slice(1) || '/'] }) @@ -63,10 +60,10 @@
    • - +
    • -
    • +
    From 68df9f99fa392e57b097b351916aa680508f32f7 Mon Sep 17 00:00:00 2001 From: Wawilski Date: Mon, 11 Mar 2024 21:24:40 +0100 Subject: [PATCH 7/8] modify profil strating setup --- frontend/src/Apps/Profil.vue | 38 ++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/frontend/src/Apps/Profil.vue b/frontend/src/Apps/Profil.vue index b95ff54..a4b1d45 100644 --- a/frontend/src/Apps/Profil.vue +++ b/frontend/src/Apps/Profil.vue @@ -1,5 +1,5 @@ @@ -70,7 +75,7 @@
    -
    +
    {{user.firstName}} {{user.lastName.toUpperCase()}}
    @@ -85,15 +90,40 @@ Role: {{user.role}}
    - +
    +
    +
    + Profil Picture + +
    +
    + E-mail: + +
    +
    + Address: + +
    +
    + Password + +
    +
    + Confirm Password + +
    +
    + +
    +
    -
    +
    From 86f1a6f17b2f5c9aa54fb2e49ce561a76c4b3e05 Mon Sep 17 00:00:00 2001 From: Wawilski Date: Mon, 11 Mar 2024 21:45:51 +0100 Subject: [PATCH 8/8] Little corrections --- frontend/src/App.vue | 2 +- frontend/src/Apps/Profil.vue | 19 ++++++++++--------- frontend/src/Apps/Request.vue | 2 +- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 6ed110c..ef68173 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -56,7 +56,7 @@
  • -