diff --git a/src/main/java/com/example/nto/App.java b/src/main/java/com/example/nto/App.java index d4add94..b22ec6c 100644 --- a/src/main/java/com/example/nto/App.java +++ b/src/main/java/com/example/nto/App.java @@ -2,8 +2,9 @@ package com.example.nto; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; -@SpringBootApplication +@SpringBootApplication(exclude = { SecurityAutoConfiguration.class }) public class App { public static void main(String[] args) { SpringApplication.run(App.class, args); diff --git a/src/main/java/com/example/nto/config/WebSecurityConfig.java b/src/main/java/com/example/nto/config/WebSecurityConfig.java index 508d772..0bd9ecd 100644 --- a/src/main/java/com/example/nto/config/WebSecurityConfig.java +++ b/src/main/java/com/example/nto/config/WebSecurityConfig.java @@ -1,33 +1,35 @@ -package com.example.nto.config; - -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.security.authentication.AuthenticationManager; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; -import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; -import org.springframework.security.crypto.password.PasswordEncoder; -import org.springframework.security.web.SecurityFilterChain; - -@Configuration -@EnableWebSecurity -public class WebSecurityConfig { - - @Bean - public PasswordEncoder passwordEncoder() { - return new BCryptPasswordEncoder(); - } - - - @Bean - public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { - http - .csrf(csrf -> csrf.disable()) - .authorizeHttpRequests((authorize) -> authorize - .requestMatchers("/h2-console").permitAll() - .requestMatchers("/register").permitAll() - .anyRequest().authenticated() - ); - return http.build(); - } -} +//package com.example.nto.controller.config; +// +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.security.config.annotation.web.builders.HttpSecurity; +//import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +//import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +//import org.springframework.security.crypto.password.PasswordEncoder; +//import org.springframework.security.web.SecurityFilterChain; +// +//@Configuration +//@EnableWebSecurity +//public class WebSecurityConfig { +// @Bean +// public PasswordEncoder passwordEncoder() { +// return new BCryptPasswordEncoder(); +// } +// +// @Bean +// public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { +// http +// .csrf(csrf -> csrf.disable()) +// .authorizeHttpRequests((authorize) -> authorize +// .requestMatchers("/h2-console").permitAll() +// .requestMatchers("/index.html").permitAll() +// .requestMatchers("/register").permitAll() +// .anyRequest().authenticated() +// ); +// +// return http.build(); +// } +// +// +// +//} diff --git a/src/main/java/com/example/nto/controller/EmployeeController.java b/src/main/java/com/example/nto/controller/EmployeeController.java index 8f7d364..6d7d57c 100644 --- a/src/main/java/com/example/nto/controller/EmployeeController.java +++ b/src/main/java/com/example/nto/controller/EmployeeController.java @@ -3,6 +3,7 @@ package com.example.nto.controller; import com.example.nto.controller.dto.EmployeeDto; import com.example.nto.controller.dto.EmployeeRegisterDto; +import com.example.nto.entity.Employee; import com.example.nto.service.EmployeeService; import lombok.RequiredArgsConstructor; import org.springframework.http.HttpStatus; @@ -15,20 +16,17 @@ public class EmployeeController { private final EmployeeService employeeService; - @GetMapping("/{username}/auth") - @ResponseStatus(code = HttpStatus.OK) - public void login(@PathVariable String username) { - employeeService.auth(username); - } - @GetMapping("/{username}/info") @ResponseStatus(code = HttpStatus.OK) - public EmployeeDto getByCode(@PathVariable String username) { + public EmployeeDto getByUsername(@PathVariable String username) { return employeeService.getByUsername(username); } - @GetMapping("/register") + @PostMapping("/register") @ResponseStatus(code = HttpStatus.CREATED) - public void register(EmployeeRegisterDto employeeRegisterDto) {employeeService.register(employeeRegisterDto);} + public Employee registerEmployee(EmployeeRegisterDto employeeRegisterDto) { + return employeeService.register(employeeRegisterDto); + } + } diff --git a/src/main/java/com/example/nto/controller/dto/EmployeeDto.java b/src/main/java/com/example/nto/controller/dto/EmployeeDto.java index 3c87566..b5a5c24 100644 --- a/src/main/java/com/example/nto/controller/dto/EmployeeDto.java +++ b/src/main/java/com/example/nto/controller/dto/EmployeeDto.java @@ -16,7 +16,7 @@ import java.util.TreeMap; @NoArgsConstructor @AllArgsConstructor public class EmployeeDto { - private String name; + private String username; private String photoUrl; private Map booking; @@ -26,6 +26,6 @@ public class EmployeeDto { dtoTreeMap.put(booking.getDate(), PlaceDto.toDto(booking.getPlace())); } - return new EmployeeDto(employee.getName(), employee.getPhotoUrl(), dtoTreeMap); + return new EmployeeDto(employee.getUsername(), employee.getPhotoUrl(), dtoTreeMap); } } diff --git a/src/main/java/com/example/nto/controller/dto/EmployeeRegisterDto.java b/src/main/java/com/example/nto/controller/dto/EmployeeRegisterDto.java index 9dbfbb4..44b461f 100644 --- a/src/main/java/com/example/nto/controller/dto/EmployeeRegisterDto.java +++ b/src/main/java/com/example/nto/controller/dto/EmployeeRegisterDto.java @@ -1,16 +1,21 @@ package com.example.nto.controller.dto; +import com.example.nto.entity.Booking; +import com.example.nto.entity.Employee; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.time.LocalDate; +import java.util.Map; +import java.util.TreeMap; + @Data @Builder @NoArgsConstructor @AllArgsConstructor public class EmployeeRegisterDto { - private String name; private String username; private String password; } diff --git a/src/main/java/com/example/nto/entity/Employee.java b/src/main/java/com/example/nto/entity/Employee.java index 67be86c..4b27334 100644 --- a/src/main/java/com/example/nto/entity/Employee.java +++ b/src/main/java/com/example/nto/entity/Employee.java @@ -17,15 +17,12 @@ import java.util.List; @NoArgsConstructor @AllArgsConstructor @Table(name = "employee") -public class Employee { +public class Employee implements UserDetails{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; - @Column(name = "name") - private String name; - @Column(name = "username") private String username; @@ -38,4 +35,8 @@ public class Employee { @OneToMany(mappedBy = "employee", cascade = CascadeType.ALL, fetch = FetchType.LAZY) private List bookingList; + @Override + public Collection getAuthorities() { + return List.of(); + } } diff --git a/src/main/java/com/example/nto/exception/PasswordNotCorrectException.java b/src/main/java/com/example/nto/exception/PasswordNotCorrectException.java deleted file mode 100644 index 97b00d2..0000000 --- a/src/main/java/com/example/nto/exception/PasswordNotCorrectException.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.example.nto.exception; - -public class PasswordNotCorrectException extends RuntimeException { - public PasswordNotCorrectException(String message) { - super(message); - } -} diff --git a/src/main/java/com/example/nto/exception/handler/GlobalExceptionHandler.java b/src/main/java/com/example/nto/exception/handler/GlobalExceptionHandler.java index f95660e..89860b5 100644 --- a/src/main/java/com/example/nto/exception/handler/GlobalExceptionHandler.java +++ b/src/main/java/com/example/nto/exception/handler/GlobalExceptionHandler.java @@ -28,11 +28,6 @@ public class GlobalExceptionHandler { return new ResponseEntity<>(e.getMessage(), HttpStatus.CONFLICT); } - @ExceptionHandler(PasswordNotCorrectException.class) - public ResponseEntity handlePasswordNotCorrectException(PasswordNotCorrectException e) { - return new ResponseEntity<>(e.getMessage(), HttpStatus.CONFLICT); - } - @ExceptionHandler(Exception.class) public ResponseEntity handleGenericException(Exception e) { return new ResponseEntity<>(e.getMessage(), HttpStatus.BAD_REQUEST); diff --git a/src/main/java/com/example/nto/service/EmployeeService.java b/src/main/java/com/example/nto/service/EmployeeService.java index 5f221a7..084cda2 100644 --- a/src/main/java/com/example/nto/service/EmployeeService.java +++ b/src/main/java/com/example/nto/service/EmployeeService.java @@ -2,11 +2,10 @@ package com.example.nto.service; import com.example.nto.controller.dto.EmployeeDto; import com.example.nto.controller.dto.EmployeeRegisterDto; +import com.example.nto.entity.Employee; public interface EmployeeService { EmployeeDto getByUsername(String username); - void auth(String username); - - void register(EmployeeRegisterDto employeeRegisterDto); + Employee register(EmployeeRegisterDto employeeRegisterDto); } diff --git a/src/main/java/com/example/nto/service/impl/BookingServiceImpl.java b/src/main/java/com/example/nto/service/impl/BookingServiceImpl.java index 7ad558d..dea29f5 100644 --- a/src/main/java/com/example/nto/service/impl/BookingServiceImpl.java +++ b/src/main/java/com/example/nto/service/impl/BookingServiceImpl.java @@ -30,15 +30,13 @@ public class BookingServiceImpl implements BookingService { private final BookingRepository bookingRepository; private final EmployeeRepository employeeRepository; private final PlaceRepository placeRepository; - private final EmployeeService employeeService; @Value("${booking.days-ahead}") private int daysAhead; @Override @Transactional(readOnly = true) - public Map> getFreePlace(String username) { - employeeService.auth(username); + public Map> getFreePlace(String code) { List allPlaces = placeRepository.findAll(); diff --git a/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java b/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java index 4e045ff..e73ef9d 100644 --- a/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java +++ b/src/main/java/com/example/nto/service/impl/EmployeeServiceImpl.java @@ -5,7 +5,6 @@ import com.example.nto.controller.dto.EmployeeRegisterDto; import com.example.nto.entity.Employee; import com.example.nto.exception.EmployeeAlreadyExistsException; import com.example.nto.exception.EmployeeNotFoundException; -import com.example.nto.exception.PasswordNotCorrectException; import com.example.nto.repository.EmployeeRepository; import com.example.nto.service.EmployeeService; import lombok.RequiredArgsConstructor; @@ -18,7 +17,7 @@ import org.springframework.transaction.annotation.Transactional; public class EmployeeServiceImpl implements EmployeeService { private final EmployeeRepository employeeRepository; - private PasswordEncoder passwordEncoder; + @Override @Transactional(readOnly = true) @@ -28,30 +27,17 @@ public class EmployeeServiceImpl implements EmployeeService { } @Override - @Transactional(readOnly = true) - public void auth(String username) { - if (employeeRepository.findByUsername(username).isEmpty()) { - throw new EmployeeNotFoundException("Employee with " + username + " username not found!"); + public Employee register(EmployeeRegisterDto employeeRegisterDto) { + if (employeeRepository.findByUsername(employeeRegisterDto.getUsername()).isPresent()) { + throw new EmployeeAlreadyExistsException("Employee with " + employeeRegisterDto.getUsername() + " username"); } - } - - @Override - public void register(EmployeeRegisterDto employeeRegisterDto) { - if (employeeRepository.findByUsername(employeeRegisterDto.getUsername()).isPresent()){ - throw new EmployeeAlreadyExistsException("Employee with " + employeeRegisterDto.getUsername() + " username already exist"); - }; Employee employee = new Employee(); - - if (passwordEncoder.encode(employee.getPassword()).length() < 8) { - throw new PasswordNotCorrectException("The password is too short!!!"); - } - - employee.setName(employeeRegisterDto.getName()); employee.setUsername(employeeRegisterDto.getUsername()); - employee.setPassword(passwordEncoder.encode(employeeRegisterDto.getPassword())); + employee.setPassword(employeeRegisterDto.getPassword()); - employeeRepository.save(employee); + return employeeRepository.save(employee); } + } diff --git a/src/main/resources/db.changelog/1/0/2026-25-02--0004-authority.xml b/src/main/resources/db.changelog/1/0/2026-25-02--0004-authority.xml new file mode 100644 index 0000000..fed641a --- /dev/null +++ b/src/main/resources/db.changelog/1/0/2026-25-02--0004-authority.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/db.changelog/data/2026-25-02--0004-authority-data.xml b/src/main/resources/db.changelog/data/2026-25-02--0004-authority-data.xml new file mode 100644 index 0000000..4d64e90 --- /dev/null +++ b/src/main/resources/db.changelog/data/2026-25-02--0004-authority-data.xml @@ -0,0 +1,14 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/resources/db.changelog/data/csv/2026-25-02--0004-authority-data.csv b/src/main/resources/db.changelog/data/csv/2026-25-02--0004-authority-data.csv new file mode 100644 index 0000000..6005ef8 --- /dev/null +++ b/src/main/resources/db.changelog/data/csv/2026-25-02--0004-authority-data.csv @@ -0,0 +1,3 @@ +authority +ROLE_USER +ROLE_ROOM \ No newline at end of file