Konfiguracja dostępów

Konfiguracja dostępów
MJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

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:

Kopiuj
@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:

Kopiuj
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

Kopiuj
@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();
}
K5
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1005
1

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:

Co to znaczy, że kontroler działa bo działa Ci usuwanie ale jednak dostajesz błąd?

Powtórz operację i przejrzyj logi aplikacji, a najlepiej to odpal debuggera i przejdź krok po kroku w swoich warstwach.

ps co wy macie z tym MVC? Uczenie się tego w 2023 to strzał w kolano. Póki nie jest jeszcze za późno, przepisz sobie apke na REST API

MJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

W logach pusto

Escanor16
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 367
0

Ten błąd to dostajesz pewnie w przeglądarce jak sobie któryś GET endpoint odpalisz. Zakładam, że spring nie widzi twojego controllera, sprawdź czy jest w dobrym miejscu, poczytaj o @ComponentScan

MJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

No tak, ale dlaczego wszystko pozostałe działa bez problemu ? Problem jest tylko z przekierowaniem po usunięciu pracownika, i z przekierowaniem po dodaniu nowej roli do pracownika.

MJ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

obraz.png

Black007
  • Rejestracja: dni
  • Ostatnio: dni
0

Hej, a masz w ogóle kontroler, który obsługuje "/assign-task-employees"??

RequiredNickname
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 646
0

Ja tylko nie śmiało dodac, że o ile chwali sięchęć nauki autora to mamy końcówkę roku 2023, server-side template engine'y są w odwrocie od pewnie przynajmniej 10 lat i raczej stawia się na bezstanowość, komunikacjępo http (rest) ewentualnie jakieś rpc ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.