Changeset bf28e50
- Timestamp:
- 01/27/25 18:06:49 (3 months ago)
- Branches:
- master
- Children:
- 0f3afae
- Parents:
- 840887f
- Location:
- ReserveNGo-backend
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
ReserveNGo-backend/.gitignore
r840887f rbf28e50 15 15 16 16 ### IntelliJ IDEA ### 17 .idea /17 .idea 18 18 *.iws 19 19 *.iml -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/WebSecurityConfig.java
r840887f rbf28e50 13 13 import org.springframework.security.web.SecurityFilterChain; 14 14 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; 15 import org.springframework.web.servlet.config.annotation.CorsRegistry; 16 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 15 17 16 18 @Configuration … … 35 37 .authorizeHttpRequests((requests) -> requests 36 38 .requestMatchers( 37 "/api/ auth/**",39 "/api/**", 38 40 "/h2/**", 39 "/api/locals/**",40 41 "/favicon.ico") 41 42 .permitAll() 42 .requestMatchers("/api/customer/**").hasRole("CUSTOMER")43 .requestMatchers("/api/admin/**").hasRole("ADMIN")44 43 .anyRequest() 45 44 .authenticated() … … 53 52 return http.build(); 54 53 } 54 55 @Bean 56 public WebMvcConfigurer corsConfigurer() { 57 return new WebMvcConfigurer() { 58 @Override 59 public void addCorsMappings(CorsRegistry registry) { 60 registry.addMapping("/**") 61 .allowedOrigins("http://localhost:5173") 62 .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") 63 .allowedHeaders("*") 64 .allowCredentials(true); 65 } 66 }; 67 } 68 55 69 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/config/filter/JWTAuthenticationFilter.java
r840887f rbf28e50 36 36 final String userEmail; 37 37 38 System.out.println(request);39 System.out.println(authHeader);40 41 38 if (authHeader == null || !authHeader.startsWith("Bearer ")) { 42 39 filterChain.doFilter(request, response); -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/model/Customer.java
r840887f rbf28e50 1 1 package mk.ukim.finki.it.reservengo.model; 2 2 3 import jakarta.persistence.CascadeType; 4 import jakarta.persistence.Entity; 5 import jakarta.persistence.OneToMany; 3 import jakarta.persistence.*; 6 4 import lombok.EqualsAndHashCode; 7 5 import mk.ukim.finki.it.reservengo.model.enumerations.Role; … … 11 9 @EqualsAndHashCode(callSuper = true) 12 10 @Entity 11 13 12 public class Customer extends User { 14 13 public Customer(String firstName, String lastName, String email, String password, String phoneNumber, Role userRole) { … … 22 21 private List<Reservation> reservations; 23 22 24 @ OneToMany23 @ManyToMany 25 24 private List<Local> favouriteLocals; 26 25 -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/AuthServiceImpl.java
r840887f rbf28e50 39 39 Customer customer = new Customer(firstName, lastName, email, passwordEncoder.encode(password), phoneNumber, Role.ROLE_CUSTOMER); 40 40 customerRepository.save(customer); 41 String jwt = jwtService.generateToken NoClaims(customer);41 String jwt = jwtService.generateToken(customer); 42 42 43 43 return new JWTAuthenticationResponse( … … 55 55 LocalWorker localWorker = new LocalWorker(firstName, lastName, email, passwordEncoder.encode(password), phoneNumber, Role.ROLE_LOCAL_WORKER); 56 56 localWorkerRepository.save(localWorker); 57 String jwt = jwtService.generateToken NoClaims(localWorker);57 String jwt = jwtService.generateToken(localWorker); 58 58 59 59 return new JWTAuthenticationResponse( … … 71 71 LocalManager localManager = new LocalManager(firstName, lastName, email, passwordEncoder.encode(password), phoneNumber, Role.ROLE_LOCAL_MANAGER); 72 72 localManagerRepository.save(localManager); 73 String jwt = jwtService.generateToken NoClaims(localManager);73 String jwt = jwtService.generateToken(localManager); 74 74 75 75 return new JWTAuthenticationResponse( … … 87 87 authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(email, password)); 88 88 User user = userRepository.findByEmail(email).orElseThrow(() -> new EmailNotFoundException(email)); 89 String jwt = jwtService.generateToken NoClaims(user);89 String jwt = jwtService.generateToken(user); 90 90 91 91 return new JWTAuthenticationResponse( -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/impl/JWTServiceImpl.java
r840887f rbf28e50 6 6 import io.jsonwebtoken.io.Decoders; 7 7 import io.jsonwebtoken.security.Keys; 8 import mk.ukim.finki.it.reservengo.model.User; 8 9 import mk.ukim.finki.it.reservengo.service.intf.JWTService; 9 10 import org.springframework.security.core.userdetails.UserDetails; … … 12 13 import java.security.Key; 13 14 import java.util.Date; 14 import java.util.HashMap;15 import java.util.Map;16 15 import java.util.function.Function; 17 16 … … 48 47 49 48 @Override 50 public String generateToken(Map<String, Object> extraClaims, UserDetails userDetails) { 51 52 return Jwts 53 .builder() 54 .setClaims(extraClaims) 55 .setSubject(userDetails.getUsername()) 56 .setIssuedAt(new Date(System.currentTimeMillis())) 49 public String generateToken(User user) { 50 return Jwts.builder().setSubject(user.getUsername()) 51 .claim("name", user.getFirstName()) 52 .claim("role", user.getUserRole()) 53 .claim("id", user.getId()) 54 .setIssuedAt(new Date()) 57 55 .setExpiration(new Date(System.currentTimeMillis() + 1000 * 60 * 60 * 24)) 58 56 .signWith(getSignInKey(), SignatureAlgorithm.HS256) 59 57 .compact(); 60 }61 62 @Override63 public String generateTokenNoClaims(UserDetails userDetails) {64 return generateToken(new HashMap<>(), userDetails);65 58 } 66 59 -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/service/intf/JWTService.java
r840887f rbf28e50 2 2 3 3 import io.jsonwebtoken.Claims; 4 import mk.ukim.finki.it.reservengo.model.User; 4 5 import org.springframework.security.core.userdetails.UserDetails; 5 6 6 7 import java.security.Key; 7 8 import java.util.Date; 8 import java.util.Map;9 9 import java.util.function.Function; 10 10 11 11 public interface JWTService { 12 String generateToken(User user); 13 12 14 String extractUsername(String token); 13 15 … … 18 20 <T> T extractClaim(String token, Function<Claims, T> claimsResolver); 19 21 20 String generateToken(Map<String, Object> extraClaims, UserDetails userDetails);21 22 String generateTokenNoClaims(UserDetails userDetails);23 24 22 boolean isTokenValid(String token, UserDetails userDetails); 25 23 -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/AdminController.java
r840887f rbf28e50 3 3 import mk.ukim.finki.it.reservengo.service.intf.AdminService; 4 4 import org.springframework.http.ResponseEntity; 5 import org.springframework.security.access.prepost.PreAuthorize; 5 6 import org.springframework.web.bind.annotation.*; 6 7 7 8 @RestController 8 9 @RequestMapping("/api/admin") 9 @ CrossOrigin(origins = "*")10 @PreAuthorize("hasRole('ADMIN')") 10 11 public class AdminController { 11 12 … … 19 20 public ResponseEntity<?> addLocal(@RequestParam String name) { 20 21 adminService.addLocal(name); 21 return ResponseEntity.ok().build(); // optional if you want to return something after adding22 return ResponseEntity.ok().build(); 22 23 } 23 24 … … 25 26 public ResponseEntity<?> deleteLocal(@PathVariable Long id) { 26 27 adminService.deleteLocal(id); 27 return ResponseEntity.ok().build(); // optional if you want to return something after deleting28 return ResponseEntity.ok().build(); 28 29 } 29 30 } -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/AuthController.java
r840887f rbf28e50 10 10 @RestController 11 11 @RequestMapping("/api/auth") 12 @CrossOrigin(origins = "*")13 12 public class AuthController { 14 13 private final AuthService authenticationService; -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/CustomerController.java
r840887f rbf28e50 8 8 import mk.ukim.finki.it.reservengo.service.intf.ReservationService; 9 9 import org.springframework.http.ResponseEntity; 10 import org.springframework.security.access.prepost.PreAuthorize; 10 11 import org.springframework.security.core.annotation.AuthenticationPrincipal; 11 12 import org.springframework.web.bind.annotation.*; … … 15 16 @RestController 16 17 @RequestMapping("/api/customer") 17 @ CrossOrigin(origins = "*")18 @PreAuthorize("hasRole('CUSTOMER')") 18 19 public class CustomerController { 19 20 … … 40 41 @GetMapping("/favourite-locals") 41 42 public ResponseEntity<?> listFavouriteLocals(@AuthenticationPrincipal User user) { 42 System.out.println("tuka");43 System.out.println(user);44 43 List<Local> favouriteLocals = customerService.listFavouriteLocals(user.getId()); 45 44 return ResponseEntity.ok(favouriteLocals); -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/LocalController.java
r840887f rbf28e50 8 8 @RestController 9 9 @RequestMapping("/api/locals") 10 @CrossOrigin("*")11 10 public class LocalController { 12 11 -
ReserveNGo-backend/src/main/java/mk/ukim/finki/it/reservengo/web/ReservationController.java
r840887f rbf28e50 9 9 @RestController 10 10 @RequestMapping("/api") 11 @CrossOrigin("*")12 11 public class ReservationController { 13 12 private final ReservationService reservationService;
Note:
See TracChangeset
for help on using the changeset viewer.