package com.iconplus.smartproc.controller; import com.iconplus.smartproc.helper.model.EmptyRequest; import com.iconplus.smartproc.helper.model.EmptyResponse; import com.iconplus.smartproc.model.request.ChangePasswordRequest; import com.iconplus.smartproc.model.request.LoginRequest; import com.iconplus.smartproc.model.request.RefreshTokenRequest; import com.iconplus.smartproc.model.response.LoginResponse; import com.iconplus.smartproc.model.response.RefreshTokenResponse; import com.iconplus.smartproc.service.authentication.ChangePasswordService; import com.iconplus.smartproc.service.authentication.LoginService; import com.iconplus.smartproc.service.authentication.LogoutService; import com.iconplus.smartproc.service.authentication.TokenManagementService; import org.springframework.web.bind.annotation.*; @CrossOrigin(origins = "http://localhost:8080", allowCredentials = "true") @RestController @RequestMapping("/api/authentication") public class AuthenticationController { private LoginService loginService; private TokenManagementService tokenManagementService; private LogoutService logoutService; private ChangePasswordService changePasswordService; public AuthenticationController(LoginService loginService, TokenManagementService tokenManagementService, LogoutService logoutService, ChangePasswordService changePasswordService) { this.loginService = loginService; this.tokenManagementService = tokenManagementService; this.logoutService = logoutService; this.changePasswordService = changePasswordService; } @PostMapping("/login") public LoginResponse getLoginResponse(@RequestBody LoginRequest loginRequest) { return loginService.execute(loginRequest); } @PostMapping("/refresh-token") public RefreshTokenResponse getRefreshToken(@RequestBody RefreshTokenRequest refreshTokenRequest) { return tokenManagementService.execute(refreshTokenRequest); } @PostMapping("/logout") public EmptyResponse logoutUser(EmptyRequest request) { return logoutService.execute(request); } @PostMapping("/change-password") public EmptyResponse changePassword(@RequestBody ChangePasswordRequest changePasswordRequest) { return changePasswordService.execute(changePasswordRequest); } }