diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/ApplicationsController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/ApplicationsController.java new file mode 100644 index 0000000..1629baa --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/ApplicationsController.java @@ -0,0 +1,62 @@ +package ovh.herisson.Clyde.EndPoints; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RestController; +import ovh.herisson.Clyde.Services.AuthenticatorService; +import ovh.herisson.Clyde.Tables.Applications; +import ovh.herisson.Clyde.Tables.Role; + +import java.util.ArrayList; + +@RestController +public class ApplicationsController { + + AuthenticatorService authServ; + + public ApplicationsController(AuthenticatorService authServ){ + this.authServ = authServ; + } + + + /** return a list of authorized applications. + * depends on the token + */ + @GetMapping("/apps") + public ResponseEntity> getAuthorizedApps(@RequestHeader("Authorization") String token){ + + return new ResponseEntity<>(getAuthorizedApplications(token), HttpStatus.OK); + } + + @GetMapping("/apps/{identifier}") + public ResponseEntity getAppAuthorization(@PathVariable Applications identifier, @RequestHeader("Authorization") String token){ + + if (getAuthorizedApplications(token).contains(identifier)){ + return new ResponseEntity<>(true, HttpStatus.OK); + } + return new ResponseEntity<>(false, HttpStatus.OK); + } + + public ArrayList getAuthorizedApplications(String token){ + Role posterRole = authServ.getUserFromToken(token).getRole(); + ArrayList authorizedApps = new ArrayList<>(); + + authorizedApps.add(Applications.Login); + authorizedApps.add(Applications.Profile); + + if (posterRole == Role.Teacher || posterRole == Role.Student || posterRole == Role.Admin){ + authorizedApps.add(Applications.Msg); + authorizedApps.add(Applications.Forum); + authorizedApps.add(Applications.Rdv); + } + + if (posterRole == Role.Teacher || posterRole == Role.Secretary || posterRole == Role.Admin) authorizedApps.add(Applications.ManageCourses); + + if (posterRole == Role.InscriptionService || posterRole == Role.Admin) authorizedApps.add(Applications.Inscription); + + return authorizedApps; + } +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/CurriculumController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/CurriculumController.java new file mode 100644 index 0000000..8e9b256 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/CurriculumController.java @@ -0,0 +1,46 @@ +package ovh.herisson.Clyde.EndPoints; + + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import ovh.herisson.Clyde.Services.AuthenticatorService; +import ovh.herisson.Clyde.Services.CurriculumCourseService; +import ovh.herisson.Clyde.Services.CurriculumService; +import ovh.herisson.Clyde.Tables.Curriculum; +import ovh.herisson.Clyde.Tables.CurriculumCourse; +import ovh.herisson.Clyde.Tables.Role; +import ovh.herisson.Clyde.Tables.User; + +import java.util.Map; + +@RestController +public class CurriculumController { + + + private final CurriculumService curriculumServ; + private final AuthenticatorService authServ; + + private final CurriculumCourseService curriculumCourseServ; + + public CurriculumController(CurriculumService curriculumServ, AuthenticatorService authServ, CurriculumCourseService curriculumCourseServ){ + this.curriculumServ = curriculumServ; + this.authServ = authServ; + this.curriculumCourseServ = curriculumCourseServ; + } + + @GetMapping("/curriculum/{id}") + public ResponseEntity findById(@PathVariable long id){ + return new ResponseEntity<>(curriculumServ.findById(id), HttpStatus.OK); + } + + @GetMapping("/curriculums") + public ResponseEntity>> findAllindDepth(){ + return new ResponseEntity<>(curriculumCourseServ.getAllDepthCurriculum(),HttpStatus.OK); + } + + @GetMapping("/curriculum") + public ResponseEntity> findAll(){ + return new ResponseEntity<>(curriculumCourseServ.findAll(),HttpStatus.OK); + } +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/CursusController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/CursusController.java deleted file mode 100644 index 670865f..0000000 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/CursusController.java +++ /dev/null @@ -1,71 +0,0 @@ -package ovh.herisson.Clyde.EndPoints; - - -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.*; -import ovh.herisson.Clyde.Responses.UnauthorizedResponse; -import ovh.herisson.Clyde.Services.AuthenticatorService; -import ovh.herisson.Clyde.Services.CursusCourseService; -import ovh.herisson.Clyde.Services.CursusService; -import ovh.herisson.Clyde.Tables.Cursus; -import ovh.herisson.Clyde.Tables.CursusCourse; -import ovh.herisson.Clyde.Tables.Role; -import ovh.herisson.Clyde.Tables.User; - -import java.util.Map; - -@RestController -public class CursusController { - - - private final CursusService cursusServ; - private final AuthenticatorService authServ; - - private final CursusCourseService cursusCourseServ; - - public CursusController(CursusService cursusServ, AuthenticatorService authServ, CursusCourseService cursusCourseServ){ - this.cursusServ = cursusServ; - this.authServ = authServ; - this.cursusCourseServ = cursusCourseServ; - } - - @GetMapping("/cursus/{id}") - public ResponseEntity findById(@PathVariable long id){ - return new ResponseEntity<>(cursusServ.findById(id), HttpStatus.OK); - } - - @GetMapping("/curriculums") - public ResponseEntity>> findAllindDepth(){ - return new ResponseEntity<>(cursusCourseServ.getAllDepthCursus(),HttpStatus.OK); - } - - @GetMapping("/curriculum") - public ResponseEntity> findAll(){ - return new ResponseEntity<>(cursusCourseServ.findAll(),HttpStatus.OK); - } - - /**@PostMapping("/cursus") - public ResponseEntity postCursus(@RequestHeader("Authorization") String token,@RequestBody Cursus cursus){ - - if (!isSecretaryOrAdmin(token)){ - return new UnauthorizedResponse<>("you're not allowed to post a cursus"); - } - - cursusServ.save(cursus); - - return new ResponseEntity<>("created !",HttpStatus.CREATED); - }**/ - - - - private boolean isSecretaryOrAdmin(String authorization){ - if (authorization ==null) - return false; - - User poster = authServ.getUserFromToken(authorization); - if (poster == null) return false; - - return poster.getRole() == Role.Secretary && poster.getRole() == Role.Admin; - } -} diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/InscriptionController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/InscriptionController.java index 7757242..36946b5 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/InscriptionController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/InscriptionController.java @@ -32,7 +32,7 @@ public class InscriptionController { @GetMapping("/requests/register") public ResponseEntity>> getAllRequests(@RequestHeader("Authorization") String token){ - if (!isSecretaryOrAdmin(token)){return new UnauthorizedResponse<>(null);} + if (authServ.isNotSecretaryOrAdmin(token)){return new UnauthorizedResponse<>(null);} Iterable inscriptionRequests = inscriptionServ.getAll(); ArrayList> toReturn = new ArrayList<>(); @@ -64,12 +64,12 @@ public class InscriptionController { @RequestHeader("Authorize") String token, @RequestBody RequestState requestState) { - if (!isSecretaryOrAdmin(token)) return new UnauthorizedResponse<>(null); + if (authServ.isNotSecretaryOrAdmin(token)) return new UnauthorizedResponse<>(null); inscriptionServ.modifyState(id, requestState); return null; } - private Map requestWithoutPassword(InscriptionRequest inscriptionRequest) { + private Map requestWithoutPassword(InscriptionRequest inscriptionRequest) { Map toReturn = new HashMap<>(); toReturn.put("id", inscriptionRequest.getId()); @@ -78,20 +78,9 @@ public class InscriptionController { toReturn.put("address", inscriptionRequest.getAddress()); toReturn.put("birthDate", inscriptionRequest.getBirthDate()); toReturn.put("country", inscriptionRequest.getCountry()); - toReturn.put("cursus", inscriptionRequest.getCursus()); + toReturn.put("curriculum", inscriptionRequest.getCurriculum()); toReturn.put("profilePictureUrl", inscriptionRequest.getProfilePicture()); toReturn.put("state", inscriptionRequest.getState()); return toReturn; } - - - private boolean isSecretaryOrAdmin(String authorization){ - if (authorization ==null) - return false; - - User poster = authServ.getUserFromToken(authorization); - if (poster == null) return false; - - return poster.getRole() == Role.Secretary && poster.getRole() == Role.Admin; - } -} \ No newline at end of file +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LoginController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LoginController.java index a47603b..1e761ec 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LoginController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/LoginController.java @@ -49,4 +49,4 @@ public class LoginController { authServ.register(inscriptionRequest); return new ResponseEntity<>("Is OK", HttpStatus.OK); } -} \ No newline at end of file +} 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 116026b..089da2d 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/MockController.java @@ -20,18 +20,18 @@ public class MockController { public final UserRepository userRepo; public final TokenRepository tokenRepo; public final TokenService tokenService; - public final CursusCourseService cursusCourseService; - public final CursusService cursusService; + public final CurriculumCourseService CurriculumCourseService; + public final CurriculumService curriculumService; public final CourseService courseService; ArrayList mockUsers; - public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CursusCourseService cursusCourseService, CursusService cursusService, CourseService courseService){ + public MockController(UserRepository userRepo, TokenRepository tokenRepo, TokenService tokenService, CurriculumCourseService CurriculumCourseService, CurriculumService curriculumService, CourseService courseService){ this.tokenRepo = tokenRepo; this.userRepo = userRepo; this.tokenService = tokenService; - this.cursusCourseService = cursusCourseService; - this.cursusService = cursusService; + this.CurriculumCourseService = CurriculumCourseService; + this.curriculumService = curriculumService; this.courseService = courseService; } @@ -51,20 +51,21 @@ public class MockController { 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.Secretary,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)); + User lena = new User("Louille","Lena","inscriptionService@InscriptionService.com","no","yes",new Date(0), null,Role.Teacher,passwordEncoder.encode("inscriptionService")); + mockUsers = new ArrayList<>(Arrays.asList(herobrine,joe,meh,joke)); userRepo.saveAll(mockUsers); // Course / Curriculum part - Cursus infoBab1 = new Cursus(1,"info"); - Cursus chemistryBab1 = new Cursus(1,"chemistry"); - Cursus psychologyBab1 = new Cursus(1,"psychology"); + Curriculum infoBab1 = new Curriculum(1,"info"); + Curriculum chemistryBab1 = new Curriculum(1,"chemistry"); + Curriculum psychologyBab1 = new Curriculum(1,"psychology"); - cursusService.save(infoBab1); - cursusService.save(chemistryBab1); - cursusService.save(psychologyBab1); + curriculumService.save(infoBab1); + curriculumService.save(chemistryBab1); + curriculumService.save(psychologyBab1); Course progra1 = new Course(5,"Programmation et algorithimque 1","TODO DELETE"); @@ -78,15 +79,15 @@ public class MockController { courseService.save(commun); - cursusCourseService.save(new CursusCourse(infoBab1,progra1)); - cursusCourseService.save(new CursusCourse(infoBab1,commun)); + CurriculumCourseService.save(new CurriculumCourse(infoBab1,progra1)); + CurriculumCourseService.save(new CurriculumCourse(infoBab1,commun)); - cursusCourseService.save(new CursusCourse(psychologyBab1,psycho1)); - cursusCourseService.save(new CursusCourse(psychologyBab1,commun)); + CurriculumCourseService.save(new CurriculumCourse(psychologyBab1,psycho1)); + CurriculumCourseService.save(new CurriculumCourse(psychologyBab1,commun)); - cursusCourseService.save(new CursusCourse(chemistryBab1,commun)); - cursusCourseService.save(new CursusCourse(chemistryBab1,chemistry1)); + CurriculumCourseService.save(new CurriculumCourse(chemistryBab1,commun)); + CurriculumCourseService.save(new CurriculumCourse(chemistryBab1,chemistry1)); diff --git a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/UserController.java b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/UserController.java index 9a8c7db..8437b81 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/EndPoints/UserController.java +++ b/backend/src/main/java/ovh/herisson/Clyde/EndPoints/UserController.java @@ -40,7 +40,7 @@ public class UserController { @PostMapping("/user") public ResponseEntity postUser(@RequestBody User user,@RequestHeader("Authorization") String authorization){ - if (!isSecretaryOrAdmin(authorization)) + if (authServ.isNotSecretaryOrAdmin(authorization)) return new UnauthorizedResponse<>(null); userService.save(user); @@ -50,7 +50,7 @@ public class UserController { @GetMapping("/users") public ResponseEntity>> getAllUsers(@RequestHeader("Authorization") String authorization){ - if (!isSecretaryOrAdmin(authorization)) + if (authServ.isNotSecretaryOrAdmin(authorization)) return new UnauthorizedResponse<>(null); Iterable users = userService.getAll(); @@ -97,7 +97,6 @@ public class UserController { */ private HashMap userWithoutPassword(User user){ HashMap toReturn = new HashMap<>(); - toReturn.put("regNo",user.getRegNo()); toReturn.put("firstName",user.getFirstName()); toReturn.put("lastName",user.getLastName()); @@ -105,20 +104,7 @@ public class UserController { toReturn.put("country",user.getCountry()); toReturn.put("address",user.getAddress()); toReturn.put("role",user.getRole()); - return toReturn; } - - private boolean isSecretaryOrAdmin(String authorization){ - System.out.println(authorization); - if (authorization ==null) - return false; - - User poster = authServ.getUserFromToken(authorization); - if (poster == null) return false; - System.out.println(poster.getRole()); - - return poster.getRole() == Role.Secretary || poster.getRole() == Role.Admin; - } } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumCourseRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumCourseRepository.java new file mode 100644 index 0000000..c99f50b --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumCourseRepository.java @@ -0,0 +1,17 @@ +package ovh.herisson.Clyde.Repositories; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import ovh.herisson.Clyde.Tables.Course; +import ovh.herisson.Clyde.Tables.Curriculum; +import ovh.herisson.Clyde.Tables.CurriculumCourse; + +public interface CurriculumCourseRepository extends CrudRepository { + + @Query("select distinct cc.course from CurriculumCourse cc where cc.curriculum = ?1") + Iterable findCoursesByCurriculum(Curriculum curriculum); + + + @Query("select distinct cc.curriculum from CurriculumCourse cc") + Iterable findDistinctCurriculums(); +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumRepository.java new file mode 100644 index 0000000..441422f --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Repositories/CurriculumRepository.java @@ -0,0 +1,8 @@ +package ovh.herisson.Clyde.Repositories; + +import org.springframework.data.repository.CrudRepository; +import ovh.herisson.Clyde.Tables.Curriculum; + +public interface CurriculumRepository extends CrudRepository { + Curriculum findById(long id); +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/CursusCourseRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/CursusCourseRepository.java deleted file mode 100644 index b0cba44..0000000 --- a/backend/src/main/java/ovh/herisson/Clyde/Repositories/CursusCourseRepository.java +++ /dev/null @@ -1,20 +0,0 @@ -package ovh.herisson.Clyde.Repositories; - -import org.springframework.data.jpa.repository.Query; -import org.springframework.data.repository.CrudRepository; -import ovh.herisson.Clyde.Tables.Course; -import ovh.herisson.Clyde.Tables.Cursus; -import ovh.herisson.Clyde.Tables.CursusCourse; - -public interface CursusCourseRepository extends CrudRepository { - - - //todo faire custom query pour trouver tous les cours d'un cursus par un cursusId - - @Query("select distinct cc.course from CursusCourse cc where cc.cursus = ?1") - Iterable findCoursesByCursus(Cursus cursus); - - - @Query("select distinct cc.cursus from CursusCourse cc") - Iterable findDistinctCursuses(); -} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Repositories/CursusRepository.java b/backend/src/main/java/ovh/herisson/Clyde/Repositories/CursusRepository.java deleted file mode 100644 index 0e84688..0000000 --- a/backend/src/main/java/ovh/herisson/Clyde/Repositories/CursusRepository.java +++ /dev/null @@ -1,8 +0,0 @@ -package ovh.herisson.Clyde.Repositories; - -import org.springframework.data.repository.CrudRepository; -import ovh.herisson.Clyde.Tables.Cursus; - -public interface CursusRepository extends CrudRepository { - Cursus findById(long id); -} 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 60dc6bc..a3301c1 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/AuthenticatorService.java @@ -1,9 +1,8 @@ package ovh.herisson.Clyde.Services; import org.springframework.stereotype.Service; -import ovh.herisson.Clyde.EndPoints.LoginController; -import ovh.herisson.Clyde.Repositories.InscriptionRepository; import ovh.herisson.Clyde.Tables.InscriptionRequest; +import ovh.herisson.Clyde.Tables.Role; import ovh.herisson.Clyde.Tables.Token; import ovh.herisson.Clyde.Tables.User; @@ -39,4 +38,17 @@ public class AuthenticatorService { public void register(InscriptionRequest inscriptionRequest) { inscriptionService.save(inscriptionRequest); } + + + public boolean isNotSecretaryOrAdmin(String authorization){ + if (authorization ==null) + return true; + + User poster = getUserFromToken(authorization); + if (poster == null) return true; + + return poster.getRole() != Role.Secretary || poster.getRole() != Role.Admin; + } + } + diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumCourseService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumCourseService.java new file mode 100644 index 0000000..ccf1226 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumCourseService.java @@ -0,0 +1,68 @@ +package ovh.herisson.Clyde.Services; + +import org.springframework.stereotype.Service; +import ovh.herisson.Clyde.Repositories.CourseRepository; +import ovh.herisson.Clyde.Repositories.CurriculumCourseRepository; +import ovh.herisson.Clyde.Repositories.CurriculumRepository; +import ovh.herisson.Clyde.Tables.Course; +import ovh.herisson.Clyde.Tables.Curriculum; +import ovh.herisson.Clyde.Tables.CurriculumCourse; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +@Service +public class CurriculumCourseService { + + private final CurriculumCourseRepository curriculumCourseRepo; + + private final CourseRepository courseRepo; + + private final CurriculumRepository curriculumRepo; + + public CurriculumCourseService(CurriculumCourseRepository curriculumCourseRepository, CourseRepository courseRepo, CurriculumRepository curriculumRepo) { + this.curriculumCourseRepo = curriculumCourseRepository; + this.courseRepo = courseRepo; + this.curriculumRepo = curriculumRepo; + } + + public void save(CurriculumCourse curriculumCourse){ + curriculumCourseRepo.save(curriculumCourse); + } + + public Iterable findAll(){ + return curriculumCourseRepo.findAll(); + } + + + public Map getDepthCurriculum(Curriculum curriculum){ + + HashMap toReturn = new HashMap<>(); + ArrayList courses = new ArrayList<>(); + for (Course c: curriculumCourseRepo.findCoursesByCurriculum(curriculum)){ + courses.add(c); + } + toReturn.put("courses",courses); + toReturn.put("curriculumId", curriculum.getCurriculumId()); + toReturn.put("year", curriculum.getYear()); + toReturn.put("option", curriculum.getOption()); + + + return toReturn; + } + + public Iterable> getAllDepthCurriculum(){ + + ArrayList> toReturn = new ArrayList<>(); + + for (Curriculum curriculum : curriculumCourseRepo.findDistinctCurriculums()){ + toReturn.add(getDepthCurriculum(curriculum)); + } + return toReturn; + } + + + + +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumService.java new file mode 100644 index 0000000..6f6d89b --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/CurriculumService.java @@ -0,0 +1,32 @@ +package ovh.herisson.Clyde.Services; + +import org.springframework.stereotype.Service; +import ovh.herisson.Clyde.Repositories.CourseRepository; +import ovh.herisson.Clyde.Repositories.CurriculumRepository; +import ovh.herisson.Clyde.Tables.Curriculum; + +@Service +public class CurriculumService { + + private final CurriculumRepository curriculumRepo; + + private final CourseRepository courseRepo; + + public CurriculumService(CurriculumRepository curriculumRepo, CourseRepository courseRepo){ + this.curriculumRepo = curriculumRepo; + this.courseRepo = courseRepo; + } + + + public void save(Curriculum curriculum){ + curriculumRepo.save(curriculum); + } + + public Curriculum findById(long id){ + return curriculumRepo.findById(id); + } + + public Iterable findAll(){ + return curriculumRepo.findAll(); + } +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/CursusCourseService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/CursusCourseService.java deleted file mode 100644 index 95b31de..0000000 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/CursusCourseService.java +++ /dev/null @@ -1,68 +0,0 @@ -package ovh.herisson.Clyde.Services; - -import org.springframework.stereotype.Service; -import ovh.herisson.Clyde.Repositories.CourseRepository; -import ovh.herisson.Clyde.Repositories.CursusCourseRepository; -import ovh.herisson.Clyde.Repositories.CursusRepository; -import ovh.herisson.Clyde.Tables.Course; -import ovh.herisson.Clyde.Tables.Cursus; -import ovh.herisson.Clyde.Tables.CursusCourse; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Map; - -@Service -public class CursusCourseService { - - private final CursusCourseRepository cursusCourseRepo; - - private final CourseRepository courseRepo; - - private final CursusRepository cursusRepo; - - public CursusCourseService(CursusCourseRepository cursusCourseRepo, CourseRepository courseRepo, CursusRepository cursusRepo) { - this.cursusCourseRepo = cursusCourseRepo; - this.courseRepo = courseRepo; - this.cursusRepo = cursusRepo; - } - - public void save(CursusCourse cursusCourse){ - cursusCourseRepo.save(cursusCourse); - } - - public Iterable findAll(){ - return cursusCourseRepo.findAll(); - } - - - public Map getDepthCursus(Cursus cursus){ - - HashMap toReturn = new HashMap<>(); - ArrayList courses = new ArrayList<>(); - for (Course c: cursusCourseRepo.findCoursesByCursus(cursus)){ - courses.add(c); - } - toReturn.put("courses",courses); - toReturn.put("cursusId",cursus.getCursusId()); - toReturn.put("year",cursus.getYear()); - toReturn.put("option",cursus.getOption()); - - - return toReturn; - } - - public Iterable> getAllDepthCursus(){ - - ArrayList> toReturn = new ArrayList<>(); - - for (Cursus cursus : cursusCourseRepo.findDistinctCursuses()){ - toReturn.add(getDepthCursus(cursus)); - } - return toReturn; - } - - - - -} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/CursusService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/CursusService.java deleted file mode 100644 index 0258ec8..0000000 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/CursusService.java +++ /dev/null @@ -1,36 +0,0 @@ -package ovh.herisson.Clyde.Services; - -import org.springframework.stereotype.Service; -import ovh.herisson.Clyde.Repositories.CourseRepository; -import ovh.herisson.Clyde.Repositories.CursusRepository; -import ovh.herisson.Clyde.Tables.Cursus; - -import java.util.HashMap; -import java.util.Map; - -@Service -public class CursusService { - - - private final CursusRepository cursusRepo; - - private final CourseRepository courseRepo; - - public CursusService(CursusRepository cursusRepo, CourseRepository courseRepo){ - this.cursusRepo = cursusRepo; - this.courseRepo = courseRepo; - } - - - public void save(Cursus cursus){ - cursusRepo.save(cursus); - } - - public Cursus findById(long id){ - return cursusRepo.findById(id); - } - - public Iterable findAll(){ - return cursusRepo.findAll(); - } -} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/InscriptionService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/InscriptionService.java index f1bd092..6130fe8 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/InscriptionService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/InscriptionService.java @@ -31,4 +31,4 @@ public class InscriptionService { inscriptionRequest.setState(requestState); save(inscriptionRequest); } -} \ No newline at end of file +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Services/StorageService.java b/backend/src/main/java/ovh/herisson/Clyde/Services/StorageService.java index c7f8d1b..fb04f68 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/StorageService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/StorageService.java @@ -4,10 +4,8 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import ovh.herisson.Clyde.Repositories.FileRepository; import ovh.herisson.Clyde.Tables.*; - import java.io.File; import java.io.IOException; - import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; 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 50ddcbf..2f746ce 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Services/TokenService.java @@ -5,16 +5,15 @@ 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.security.SecureRandom; import java.util.ArrayList; +import java.util.Base64; import java.util.Calendar; -import java.util.Date; @Service public class TokenService { - TokenRepository tokenRepo; + private final TokenRepository tokenRepo; public TokenService(TokenRepository tokenRepo){ this.tokenRepo = tokenRepo; @@ -30,13 +29,10 @@ public class TokenService { new SecureRandom().nextBytes(bytes); for (int i = 0; i < bytes.length; i++) { bytes[i] = (byte) (((bytes[i]+256)%256 %95+ 32)); - while ((char)bytes[i] == ';'){ - bytes[i] = new SecureRandom().generateSeed(1)[0]; - } } // will never end up in the catch because of the way that SecureRandom.nextBytes is implemented try { - return new String(bytes,"ISO_8859_1"); + return new String(Base64.getEncoder().encode(bytes),"ISO_8859_1"); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/Applications.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/Applications.java new file mode 100644 index 0000000..6ad6567 --- /dev/null +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/Applications.java @@ -0,0 +1,21 @@ +package ovh.herisson.Clyde.Tables; + +public enum Applications { + // without any token + Login, + + // with any token + Profile, + + + // Students and higher authorization + Msg, + Forum, + Rdv, + + // teachers and Secretary authorization + ManageCourses, + + // InscriptionService authorization + Inscription +} diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/Cursus.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/Curriculum.java similarity index 76% rename from backend/src/main/java/ovh/herisson/Clyde/Tables/Cursus.java rename to backend/src/main/java/ovh/herisson/Clyde/Tables/Curriculum.java index d124179..67075d1 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/Cursus.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/Curriculum.java @@ -6,21 +6,21 @@ import jakarta.persistence.GenerationType; import jakarta.persistence.Id; @Entity -public class Cursus { +public class Curriculum { @Id @GeneratedValue(strategy = GenerationType.AUTO) - private int cursusId; + private int curriculumId; private int year; private String option; - public Cursus(int year, String option){ + public Curriculum(int year, String option){ this.year = year; this.option = option; } - public Cursus() {} + public Curriculum() {} - public int getCursusId(){ - return this.cursusId; + public int getCurriculumId(){ + return this.curriculumId; } public int getYear(){ diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/CursusCourse.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/CurriculumCourse.java similarity index 57% rename from backend/src/main/java/ovh/herisson/Clyde/Tables/CursusCourse.java rename to backend/src/main/java/ovh/herisson/Clyde/Tables/CurriculumCourse.java index 111cb78..8202e8d 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/CursusCourse.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/CurriculumCourse.java @@ -3,25 +3,25 @@ package ovh.herisson.Clyde.Tables; import jakarta.persistence.*; @Entity -public class CursusCourse { +public class CurriculumCourse { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; @ManyToOne(fetch = FetchType.EAGER) - @JoinColumn(name = "Cursus") - private Cursus cursus; + @JoinColumn(name = "Curriculum") + private Curriculum curriculum; @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "Course") private Course course; - public CursusCourse(Cursus cursus, Course course){ - this.cursus = cursus; + public CurriculumCourse(Curriculum curriculum, Course course){ + this.curriculum = curriculum; this.course = course; } - public CursusCourse() {} + public CurriculumCourse() {} public int getId() { return id; @@ -35,11 +35,11 @@ public class CursusCourse { this.course = course; } - public Cursus getCursus() { - return cursus; + public Curriculum getCurriculum() { + return curriculum; } - public void setCursus(Cursus cursus) { - this.cursus = cursus; + public void setCurriculum(Curriculum curriculum) { + this.curriculum = curriculum; } } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java index aecebe2..dfbf7ed 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/InscriptionRequest.java @@ -18,8 +18,8 @@ public class InscriptionRequest { private Date birthDate; @ManyToOne - @JoinColumn(name="Cursus") - private Cursus cursus; + @JoinColumn(name="Curriculum") + private Curriculum curriculum; private RequestState state; private String profilePicture; @@ -89,12 +89,12 @@ public class InscriptionRequest { this.birthDate = birthDate; } - public Cursus getCursus() { - return cursus; + public Curriculum getCurriculum() { + return curriculum; } - public void setCursus(Cursus cursus) { - this.cursus = cursus; + public void setCurriculum(Curriculum curriculum) { + this.curriculum = curriculum; } public RequestState getState() { diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java index 69c80e6..57ad53c 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/ReinscriptionRequest.java @@ -13,26 +13,26 @@ public class ReinscriptionRequest { private User user; @ManyToOne - @JoinColumn(name = "Cursus") - private Cursus newCursus; + @JoinColumn(name = "Curriculum") + private Curriculum newCurriculum; private RequestState state; - //Permet de différencier les demandes de changement et une réinscription dans le même cursus + //Permet de différencier les demandes de changement et une réinscription dans le même Curriculum //Pour la réinscription on va le mettre a 0 private boolean type = false; public ReinscriptionRequest(){} - public ReinscriptionRequest(User user, Cursus newCursus, RequestState state, boolean type){ + public ReinscriptionRequest(User user, Curriculum newCurriculum, RequestState state, boolean type){ this.user = user; - this.newCursus = newCursus; + this.newCurriculum = newCurriculum; this.state = state; this.type = type; } - public ReinscriptionRequest(User user, Cursus newCursus, RequestState state){ + public ReinscriptionRequest(User user, Curriculum newCurriculum, RequestState state){ this.user = user; - this.newCursus = newCursus; + this.newCurriculum = newCurriculum; this.state = state; } @@ -48,12 +48,12 @@ public class ReinscriptionRequest { this.user = user; } - public Cursus getNewCursus() { - return newCursus; + public Curriculum getNewCurriculum() { + return newCurriculum; } - public void setNewCursus(Cursus newCursus) { - this.newCursus = newCursus; + public void setNewCurriculum(Curriculum newCurriculum) { + this.newCurriculum = newCurriculum; } public RequestState getState() { diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/RequestState.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/RequestState.java index f0345c1..d52f1c9 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/RequestState.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/RequestState.java @@ -3,5 +3,5 @@ package ovh.herisson.Clyde.Tables; public enum RequestState { Accepted, Refused, - Pending; + Pending } diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/Role.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/Role.java index 4e4469b..f6f8967 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/Role.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/Role.java @@ -5,5 +5,5 @@ public enum Role { Student, Admin, InscriptionService, - Secretary; -} + Secretary +} \ No newline at end of file diff --git a/backend/src/main/java/ovh/herisson/Clyde/Tables/UserCursus.java b/backend/src/main/java/ovh/herisson/Clyde/Tables/UserCurriculum.java similarity index 53% rename from backend/src/main/java/ovh/herisson/Clyde/Tables/UserCursus.java rename to backend/src/main/java/ovh/herisson/Clyde/Tables/UserCurriculum.java index 6590b2d..2202763 100644 --- a/backend/src/main/java/ovh/herisson/Clyde/Tables/UserCursus.java +++ b/backend/src/main/java/ovh/herisson/Clyde/Tables/UserCurriculum.java @@ -3,26 +3,26 @@ package ovh.herisson.Clyde.Tables; import jakarta.persistence.*; @Entity -public class UserCursus { +public class UserCurriculum { @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; - //Un étudiant peut avoir plusieurs cursus + //Un étudiant peut avoir plusieurs curriculums @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "Users") private User user; @OneToOne(fetch = FetchType.EAGER) - @JoinColumn(name = "Cursus") - private Cursus cursus; + @JoinColumn(name = "Curriculum") + private Curriculum curriculum; - public UserCursus(User user, Cursus cursus){ + public UserCurriculum(User user, Curriculum curriculum){ this.user = user; - this.cursus = cursus; + this.curriculum = curriculum; } - public UserCursus() {} + public UserCurriculum() {} public int getId() { return id; @@ -36,11 +36,11 @@ public class UserCursus { this.user = user; } - public Cursus getCursus() { - return cursus; + public Curriculum getCurriculum() { + return curriculum; } - public void setCursus(Cursus cursus) { - this.cursus = cursus; + public void setCurriculum(Curriculum curriculum) { + this.curriculum = curriculum; } } diff --git a/frontend/src/App.vue b/frontend/src/App.vue index 7b944de..1163b03 100644 --- a/frontend/src/App.vue +++ b/frontend/src/App.vue @@ -2,6 +2,7 @@ import { toast } from 'vue3-toastify'; import { ref, computed } from 'vue' import i18n, { setLang } from './i18n.js' + import { isLogged } from '@/rest/Users.js' // Liste des apps @@ -19,6 +20,7 @@ const currentPath = ref(window.location.hash) window.addEventListener('hashchange', () => { + Logged.value = isLogged(); currentPath.value = window.location.hash }) @@ -31,7 +33,9 @@ const settings=ref(i18n("app.settings")) const login=ref(i18n("app.login")) const active=ref(false) - + + const Logged = ref(isLogged()); +