diff --git a/src/main/java/org/example/alfs/config/SecurityConfig.java b/src/main/java/org/example/alfs/config/SecurityConfig.java index 9a17a11..0b61490 100644 --- a/src/main/java/org/example/alfs/config/SecurityConfig.java +++ b/src/main/java/org/example/alfs/config/SecurityConfig.java @@ -43,6 +43,10 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti .requestMatchers("/auth/signup").permitAll() .requestMatchers("/auth/hash").permitAll() .requestMatchers("/h2-console/**").permitAll() + + //allow access to endpoints during development + .requestMatchers("/create", "/tickets/**", "/view/**").permitAll() + .requestMatchers("/css/**", "/js/**", "/images/**", "/static/**").permitAll() .requestMatchers("/login", "/login-form").permitAll() .requestMatchers("/signup", "/signup-form").permitAll() .anyRequest().authenticated() diff --git a/src/main/java/org/example/alfs/controllers/TicketController.java b/src/main/java/org/example/alfs/controllers/TicketController.java index 5e47799..7ff0a32 100644 --- a/src/main/java/org/example/alfs/controllers/TicketController.java +++ b/src/main/java/org/example/alfs/controllers/TicketController.java @@ -15,7 +15,7 @@ //TODO: Decide final routes and redirects @Controller -@RequestMapping +@RequestMapping("/tickets") public class TicketController { private final TicketService ticketService; @@ -34,23 +34,23 @@ public String createNewTicketForm(Model model) { return "create"; } - //TODO REDIRECT, WHERE?? @PreAuthorize("hasRole('REPORTER')") // should change later for anonymous access @PostMapping("/create") - public String createNewTicket(@ModelAttribute("ticket") @Valid TicketCreateDTO ticketCreateDTO, BindingResult bindingResult) { + public String createNewTicket(@ModelAttribute("ticket") @Valid TicketCreateDTO ticketCreateDTO, BindingResult bindingResult, Model model) { if (bindingResult.hasErrors()) { + model.addAttribute("ticket", ticketCreateDTO); return "create"; } - ticketService.createNewTicket(ticketCreateDTO); + TicketViewDTO ticket = ticketService.createNewTicket(ticketCreateDTO); - return "redirect:/home"; + return "redirect:/tickets/" + ticket.getId(); } //view ticket by token - //TODO, FIX SO ANONYMOUS USERS CAN USE - @GetMapping("/view/token/{token}") + + @GetMapping("/token/{token}") public String viewTicketByToken(@PathVariable String token, Model model) { TicketViewDTO ticket = ticketService.getTicketByToken(token); @@ -61,7 +61,7 @@ public String viewTicketByToken(@PathVariable String token, Model model) { //view ticket by id @PreAuthorize("hasAnyRole('ADMIN','INVESTIGATOR','REPORTER')") - @GetMapping("/view/id/{id}") + @GetMapping("/{id}") public String viewTicketById(@PathVariable Long id, Model model) { TicketViewDTO ticket = ticketService.getTicketById(id); @@ -78,7 +78,7 @@ public String assignTicket(@PathVariable Long id, @Valid @ModelAttribute TicketA ticketService.assignInvestigator(id, dto.getInvestigatorId()); - return "redirect:/view/id/" + id; + return "redirect:/tickets/" + id; } //update status @@ -88,7 +88,7 @@ public String updateStatus(@PathVariable Long id, @Valid @ModelAttribute TicketS ticketService.updateTicketStatus(id, dto.getStatus()); - return "redirect:/view/id/" + id; + return "redirect:/tickets/" + id; } diff --git a/src/main/jte/.jteroot b/src/main/jte/.jteroot new file mode 100644 index 0000000..e69de29 diff --git a/src/main/jte/create.jte b/src/main/jte/create.jte new file mode 100644 index 0000000..02fc472 --- /dev/null +++ b/src/main/jte/create.jte @@ -0,0 +1,24 @@ +@param org.example.alfs.dto.ticket.TicketCreateDTO ticket + +@template.layout(title = "Create Ticket", content = @` +