Witam serdecznie, z góry prosze o wyrozumiałość ponieważ dopiero ucze się Springa. Od wczoraj stoje w miejscu z pewną kwestią.
Mam kontroler obsługujący żądania administracji:
@Controller
public class ManagementController {
private final UserService userService;
public ManagementController(UserService userService) {
this.userService = userService;
}
@GetMapping("/management")
public String managementForm() {
return "management-panel";
}
@GetMapping("/forwarder-list")
public String forwarderManagementForm(Model model){
List<String> allForwarders = userService.findAllForwarderEmail();
model.addAttribute("forwardersEmail", allForwarders);
return "forwarders";
}
@GetMapping("/delete-forwarders")
public String deleteUser(@RequestParam String email){
userService.deleteUserByEmail(email);
return "redirect:/forwarders";
}
@GetMapping("/assign-task")
public String assignNewTask(){
return "assign-task-employees";
}
@PostMapping("/assign-role")
public String assignRoleToEmployee(@RequestParam Long userId, @RequestParam String roleName){
userService.setNewRole(userId,roleName);
return "redirect:/assign-task-employees";
}
}
Kontroler działa ponieważ widać zmiany w bazie danych, mogę usuwać pracowników, zmieniać ich role itd..
Jednak gdy to zrobie to dostaje od razu błąd:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Wed Sep 20 13:50:22 CEST 2023
There was an unexpected error (type=Not Found, status=404).
No message available
Ściezki są poprawne więc nie wiem już o co chodzi.
W konfiguracji dostepów zrobił mi się mały... "burderl", lecz mimo wszystko uwazam że jak jestem zalogowany jako admin (zarząd) to mam dostęp do strony do ktorej powinienem byc przekierowany po zmianie roli czy usunięciu. A jednak tak sie nie dzieje.
Kontroler poniżej
@Bean
public SecurityFilterChain filterChain(HttpSecurity http, MvcRequestMatcher.Builder mvc) throws Exception {
http.authorizeHttpRequests(request -> request
.requestMatchers(mvc.pattern("/")).permitAll()
.requestMatchers(mvc.pattern("/img/**")).permitAll()
.requestMatchers(mvc.pattern("/styles/**")).permitAll()
.requestMatchers(mvc.pattern("/registration")).permitAll()
.requestMatchers(mvc.pattern("/register")).permitAll()
.requestMatchers(mvc.pattern("/confirmation")).permitAll()
.requestMatchers(mvc.pattern("/home-page")).authenticated()
.requestMatchers(mvc.pattern("/forwarder")).hasAnyRole("FORWARDER", "MANAGEMENT")
.requestMatchers(mvc.pattern("/forwarders")).hasAnyRole("FORWARDER", "MANAGEMENT")
.requestMatchers(mvc.pattern("/forwarder-panel")).hasAnyRole("FORWARDER", "MANAGEMENT")
.requestMatchers(mvc.pattern("/bookkeeping")).hasAnyRole("BOOKKEEPING", "MANAGEMENT")
.requestMatchers(mvc.pattern("/management")).hasRole("MANAGEMENT")
.requestMatchers(mvc.pattern("/employee-management")).hasRole("MANAGEMENT")
.requestMatchers(mvc.pattern("/forwarder-list")).hasRole("MANAGEMENT")
.requestMatchers(mvc.pattern("/delete-forwarders")).hasRole("MANAGEMENT")
.requestMatchers(mvc.pattern("/forwarders")).hasRole("MANAGEMENT")
.requestMatchers(mvc.pattern("/assign-task-employees")).hasRole("MANAGEMENT")
.requestMatchers(mvc.pattern("/assign-task")).hasRole("MANAGEMENT")
.requestMatchers(mvc.pattern("/assign-role")).hasRole("MANAGEMENT")
.anyRequest().authenticated()
);
http.formLogin(login -> login.loginPage("/login").permitAll()
.defaultSuccessUrl("/home-page", true));
http.logout(logout -> logout.logoutRequestMatcher(mvc.pattern(HttpMethod.GET, "/logout/**"))
.logoutSuccessUrl("/").permitAll());
return http.build();
}
