Changeset cf09deb
- Timestamp:
- 01/23/25 05:05:47 (3 months ago)
- Branches:
- master
- Children:
- 5b32153
- Parents:
- d157fcd
- Location:
- ReserveNGo-backend
- Files:
-
- 28 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
ReserveNGo-backend/pom.xml
rd157fcd rcf09deb 59 59 60 60 <dependency> 61 <groupId>io.jsonwebtoken</groupId> 62 <artifactId>jjwt-api</artifactId> 63 <version>0.11.5</version> 64 </dependency> 65 66 <dependency> 67 <groupId>io.jsonwebtoken</groupId> 68 <artifactId>jjwt-impl</artifactId> 69 <version>0.11.5</version> 70 </dependency> 71 72 <dependency> 73 <groupId>io.jsonwebtoken</groupId> 74 <artifactId>jjwt-jackson</artifactId> 75 <version>0.11.5</version> 76 </dependency> 77 78 <dependency> 61 79 <groupId>com.h2database</groupId> 62 80 <artifactId>h2</artifactId> -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/ReserveNGoApplication.java
rd157fcd rcf09deb 14 14 SpringApplication.run(ReserveNGoApplication.class, args); 15 15 } 16 17 @Bean18 PasswordEncoder passwordEncoder() {19 return new BCryptPasswordEncoder(10);20 }21 16 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/bootstrap/DataHolder.java
rd157fcd rcf09deb 3 3 import jakarta.annotation.PostConstruct; 4 4 import mk.ukim.finki.it.reservengo.model.*; 5 import mk.ukim.finki.it.reservengo.model.enumerations.*; 5 import mk.ukim.finki.it.reservengo.model.enumerations.Position; 6 import mk.ukim.finki.it.reservengo.model.enumerations.Role; 7 import mk.ukim.finki.it.reservengo.model.enumerations.Service; 6 8 import mk.ukim.finki.it.reservengo.repository.*; 7 9 import org.springframework.security.crypto.password.PasswordEncoder; … … 17 19 public static List<LocalWorker> workers = new ArrayList<>(); 18 20 public static List<LocalManager> managers = new ArrayList<>(); 19 public static List<Event> events = new ArrayList<>();20 public static List<Reservation> reservations = new ArrayList<>();21 21 public static List<Local> locals = new ArrayList<>(); 22 22 23 23 private final AdminRepository adminRepository; 24 24 private final CustomerRepository customerRepository; 25 private final EventRepository eventRepository;26 25 private final LocalManagerRepository localManagerRepository; 27 26 private final LocalRepository localRepository; 28 27 private final LocalWorkerRepository localWorkerRepository; 29 private final ReservationRepository reservationRepository;30 28 private final PasswordEncoder passwordEncoder; 31 29 32 public DataHolder(AdminRepository adminRepository, CustomerRepository customerRepository, EventRepository eventRepository, LocalManagerRepository localManagerRepository, LocalRepository localRepository, LocalWorkerRepository localWorkerRepository, ReservationRepository reservationRepository, PasswordEncoder passwordEncoder) {30 public DataHolder(AdminRepository adminRepository, CustomerRepository customerRepository, LocalManagerRepository localManagerRepository, LocalRepository localRepository, LocalWorkerRepository localWorkerRepository, PasswordEncoder passwordEncoder) { 33 31 this.adminRepository = adminRepository; 34 32 this.customerRepository = customerRepository; 35 this.eventRepository = eventRepository;36 33 this.localManagerRepository = localManagerRepository; 37 34 this.localRepository = localRepository; 38 35 this.localWorkerRepository = localWorkerRepository; 39 this.reservationRepository = reservationRepository;40 36 this.passwordEncoder = passwordEncoder; 41 37 } … … 61 57 customerRepository.saveAll(customers); 62 58 63 // Print for debugging purposes 64 System.out.println("Initialization complete!"); 59 //Local worker 60 for (int i = 1; i <= 3; i++) { 61 LocalWorker localWorker = new LocalWorker( 62 "FirstName" + i, 63 "LastName" + i, 64 "Email" + i, 65 "Password" + i, 66 "PhoneNumber" + i, 67 Role.LOCAL_WORKER 68 ); 69 workers.add(localWorker); 70 } 71 localWorkerRepository.saveAll(workers); 72 73 //Local manager 74 for (int i = 1; i <= 3; i++) { 75 LocalManager manager = new LocalManager( 76 "FirstName" + i, 77 "LastName" + i, 78 "EmailManager" + i, 79 "Password" + i, 80 "PhoneNumber" + i, 81 Role.LOCAL_MANAGER 82 ); 83 managers.add(manager); 84 } 85 localManagerRepository.saveAll(managers); 86 87 //Local 88 List<Service> serviceList = new ArrayList<>(List.of(Service.values())); 89 List<String> localPhotos; 90 for (int i = 1; i <= 3; i++) { 91 localPhotos = new ArrayList<>(); 92 for (int j = 1; j <= 3; j++) { 93 localPhotos.add("Picture number: " + j); 94 } 95 Local local = new Local( 96 "Name" + i, 97 "Description" + i, 98 "Address" + i, 99 "WorkingHours" + i, 100 serviceList, 101 null, 102 null, 103 localPhotos, 104 "MenuPhoto" + i, 105 "MenuLink" + i, 106 null, 107 null, 108 null 109 ); 110 locals.add(local); 111 } 112 localRepository.saveAll(locals); 65 113 } 66 114 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java
rd157fcd rcf09deb 1 1 package mk.ukim.finki.it.reservengo.config; 2 2 3 import mk.ukim.finki.it.reservengo.config.filter.JWTAuthenticationFilter; 3 4 import org.springframework.context.annotation.Bean; 4 5 import org.springframework.context.annotation.Configuration; 6 import org.springframework.security.authentication.AuthenticationProvider; 5 7 import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity; 6 8 import org.springframework.security.config.annotation.web.builders.HttpSecurity; … … 8 10 import org.springframework.security.config.annotation.web.configurers.AbstractHttpConfigurer; 9 11 import org.springframework.security.config.annotation.web.configurers.HeadersConfigurer; 12 import org.springframework.security.config.http.SessionCreationPolicy; 10 13 import org.springframework.security.web.SecurityFilterChain; 14 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; 11 15 12 16 @Configuration … … 14 18 @EnableMethodSecurity 15 19 public class WebSecurityConfig { 20 21 22 private final JWTAuthenticationFilter jwtAuthFilter; 23 private final AuthenticationProvider authenticationProvider; 24 25 public WebSecurityConfig(JWTAuthenticationFilter jwtAuthFilter, AuthenticationProvider authenticationProvider) { 26 this.jwtAuthFilter = jwtAuthFilter; 27 this.authenticationProvider = authenticationProvider; 28 } 16 29 17 30 @Bean … … 23 36 ) 24 37 .authorizeHttpRequests((requests) -> requests 25 .requestMatchers("/ **")38 .requestMatchers("/api/auth/**", "/h2/**") 26 39 .permitAll() 27 ) 28 .formLogin((form) -> form 29 .permitAll() 30 .defaultSuccessUrl("/", true) 40 .anyRequest() 41 .authenticated() 31 42 ) 32 43 .logout((logout) -> logout … … 35 46 .deleteCookies("JSESSIONID") 36 47 .logoutSuccessUrl("/login") 37 ); 48 ) 49 .sessionManagement(manager -> manager 50 .sessionCreationPolicy(SessionCreationPolicy.STATELESS) 51 ) 52 .authenticationProvider(authenticationProvider) 53 .addFilterBefore(jwtAuthFilter, UsernamePasswordAuthenticationFilter.class) 54 ; 38 55 39 56 return http.build(); -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Admin.java
rd157fcd rcf09deb 11 11 @AllArgsConstructor 12 12 @NoArgsConstructor 13 public class Admin { 14 public Admin(String username, String password, Role userRole) { 15 this.username = username; 16 this.password = password; 17 this.userRole = userRole; 13 public class Admin extends User { 14 public Admin(String email, String password, Role userRole) { 15 super(null, null, email, password, null, userRole); 18 16 } 19 20 @Id21 @GeneratedValue(strategy = GenerationType.IDENTITY)22 private Long id;23 24 @Column(unique = true)25 private String username;26 27 private String password;28 29 @Enumerated(EnumType.STRING)30 private Role userRole = Role.ADMIN;31 17 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Contact.java
rd157fcd rcf09deb 16 16 @Embeddable 17 17 public class Contact { 18 19 18 private String phone; 20 19 private String email; -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Customer.java
rd157fcd rcf09deb 19 19 @NoArgsConstructor 20 20 public class Customer extends User { 21 public Customer(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) { 21 public Customer(String firstName, 22 String lastName, 23 String email, 24 String password, 25 String phoneNumber, 26 Role userRole) { 22 27 super(firstName, lastName, email, password, phoneNumber, userRole); 23 28 } … … 28 33 @OneToMany 29 34 private List<Local> favouriteLocals; 35 36 30 37 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/LocalManager.java
rd157fcd rcf09deb 15 15 @NoArgsConstructor 16 16 public class LocalManager extends LocalWorker{ 17 public LocalManager(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole , Local local, Position position) {18 super(firstName, lastName, email, password, phoneNumber, userRole , local, position);17 public LocalManager(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) { 18 super(firstName, lastName, email, password, phoneNumber, userRole); 19 19 } 20 20 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/LocalWorker.java
rd157fcd rcf09deb 14 14 @AllArgsConstructor 15 15 @NoArgsConstructor 16 public class LocalWorker extends User {17 public LocalWorker(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole , Local local, Position position) {16 public class LocalWorker extends User { 17 public LocalWorker(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) { 18 18 super(firstName, lastName, email, password, phoneNumber, userRole); 19 this.local = local;20 this.position = position;21 19 } 22 20 -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/User.java
rd157fcd rcf09deb 4 4 import lombok.AllArgsConstructor; 5 5 import lombok.Data; 6 import lombok.Getter; 6 7 import lombok.NoArgsConstructor; 7 8 import mk.ukim.finki.it.reservengo.model.enumerations.Role; 9 import org.springframework.security.core.GrantedAuthority; 10 import org.springframework.security.core.authority.SimpleGrantedAuthority; 11 import org.springframework.security.core.userdetails.UserDetails; 8 12 9 @Data 13 import java.util.Collection; 14 import java.util.List; 15 16 //@Data 10 17 @Entity 11 18 @AllArgsConstructor … … 13 20 @Inheritance(strategy = InheritanceType.JOINED) 14 21 @Table(name = "app_user") 15 public class User {22 public class User implements UserDetails { 16 23 public User(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) { 17 24 this.firstName = firstName; … … 23 30 } 24 31 32 33 34 @Getter 25 35 @Id 26 36 @GeneratedValue(strategy = GenerationType.IDENTITY) … … 40 50 @Enumerated(EnumType.STRING) 41 51 private Role userRole; 52 53 @Override 54 public Collection<? extends GrantedAuthority> getAuthorities() { 55 return List.of(new SimpleGrantedAuthority(userRole.name())); //check here:IMPORTANT 56 } 57 58 @Override 59 public String getPassword() { 60 return password; 61 } 62 63 @Override 64 public String getUsername() { 65 return email; 66 } 67 68 @Override 69 public boolean isAccountNonExpired() { 70 return true; 71 } 72 73 @Override 74 public boolean isAccountNonLocked() { 75 return true; 76 } 77 78 @Override 79 public boolean isCredentialsNonExpired() { 80 return true; 81 } 82 83 @Override 84 public boolean isEnabled() { 85 return true; 86 } 87 88 public Long getId() { 89 return id; 90 } 91 92 public String getFirstName() { 93 return firstName; 94 } 95 96 public String getLastName() { 97 return lastName; 98 } 99 100 public String getEmail() { 101 return email; 102 } 103 104 public String getPhoneNumber() { 105 return phoneNumber; 106 } 107 108 public Role getUserRole() { 109 return userRole; 110 } 111 112 @Override 113 public String toString() { 114 return "User{" + 115 "id=" + id + 116 ", firstName='" + firstName + '\'' + 117 ", lastName='" + lastName + '\'' + 118 ", email='" + email + '\'' + 119 ", password='" + password + '\'' + 120 ", phoneNumber='" + phoneNumber + '\'' + 121 ", userRole=" + userRole + 122 '}'; 123 } 42 124 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/enumerations/Role.java
rd157fcd rcf09deb 4 4 ADMIN, 5 5 CUSTOMER, 6 RESTAURANT_MANAGER,7 RESTAURANT_WORKER6 LOCAL_MANAGER, 7 LOCAL_WORKER 8 8 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/CustomerRepository.java
rd157fcd rcf09deb 5 5 import org.springframework.stereotype.Repository; 6 6 7 import java.util.Optional; 8 7 9 @Repository 8 10 public interface CustomerRepository extends JpaRepository<Customer, Long> { 11 12 Optional<Customer> findByEmail(String email); 9 13 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/LocalManagerRepository.java
rd157fcd rcf09deb 5 5 import org.springframework.stereotype.Repository; 6 6 7 import java.util.Optional; 8 7 9 @Repository 8 10 public interface LocalManagerRepository extends JpaRepository<LocalManager, Long> { 11 Optional<LocalManager> findByEmail(String email); 9 12 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/LocalWorkerRepository.java
rd157fcd rcf09deb 5 5 import org.springframework.stereotype.Repository; 6 6 7 import java.util.Optional; 8 7 9 @Repository 8 10 public interface LocalWorkerRepository extends JpaRepository<LocalWorker, Long> { 11 Optional<LocalWorker> findByEmail(String email); 9 12 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/repository/UserRepository.java
rd157fcd rcf09deb 5 5 import org.springframework.stereotype.Repository; 6 6 7 import java.util.Optional; 8 7 9 @Repository 8 10 public interface UserRepository extends JpaRepository<User, Long> { 9 11 Optional<User> findByEmail(String email); 10 12 } -
ReserveNGo-backend/src/main/resources/application.properties
rd157fcd rcf09deb 3 3 spring.profiles.active=h2 4 4 5
Note:
See TracChangeset
for help on using the changeset viewer.