Skip to content
Snippets Groups Projects
Commit f4a1bb26 authored by hugcubi's avatar hugcubi
Browse files

Corrección Monolito, tanteo de booking remoto

parent 64d82921
No related branches found
No related tags found
2 merge requests!36Develop,!29Refactor/auth user split
Showing
with 109 additions and 142 deletions
package com.uva.authentication.repositories;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import com.uva.authentication.models.remote.HotelManager;
public interface HotelManagerRepository extends JpaRepository<HotelManager, Integer> {
Optional<HotelManager> findByEmail(String email);
}
\ No newline at end of file
package com.uva.authentication.repositories;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;
import com.uva.authentication.models.remote.User;
public interface UserRepository extends JpaRepository<User, Integer> {
Optional<User> findByEmail(String email);
}
\ No newline at end of file
...@@ -9,7 +9,6 @@ import org.springframework.web.client.HttpClientErrorException; ...@@ -9,7 +9,6 @@ import org.springframework.web.client.HttpClientErrorException;
import com.uva.authentication.api.UserAPI; import com.uva.authentication.api.UserAPI;
import com.uva.authentication.models.LoginRequest; import com.uva.authentication.models.LoginRequest;
import com.uva.authentication.models.RegisterRequest; import com.uva.authentication.models.RegisterRequest;
import com.uva.authentication.models.remote.Response;
import com.uva.authentication.models.remote.User; import com.uva.authentication.models.remote.User;
import com.uva.authentication.utils.JwtUtil; import com.uva.authentication.utils.JwtUtil;
import com.uva.authentication.utils.SecurityUtils; import com.uva.authentication.utils.SecurityUtils;
...@@ -23,8 +22,7 @@ public class AuthService { ...@@ -23,8 +22,7 @@ public class AuthService {
@Autowired @Autowired
private UserAPI userAPI; private UserAPI userAPI;
private boolean authenticateUser(LoginRequest request, Response user) { private boolean authenticateUser(LoginRequest request, User user) {
System.err.println(user.getPassword() + " " + request.getPassword());
return (user != null) return (user != null)
? SecurityUtils.checkPassword(request.getPassword(), user.getPassword()) ? SecurityUtils.checkPassword(request.getPassword(), user.getPassword())
: false; : false;
...@@ -38,9 +36,7 @@ public class AuthService { ...@@ -38,9 +36,7 @@ public class AuthService {
* @throws HttpClientErrorException(FORBIDDEN) if the credentials are invalid * @throws HttpClientErrorException(FORBIDDEN) if the credentials are invalid
*/ */
public String login(LoginRequest loginRequest) { public String login(LoginRequest loginRequest) {
Response user = userAPI.getUserByEmail(loginRequest.getEmail()); User user = userAPI.getUserByEmail(loginRequest.getEmail());
System.err.println(user.getName() + ", " + user.getEmail() + ", " +
user.getRol() + ", " + user.getPassword());
if (!authenticateUser(loginRequest, user)) { if (!authenticateUser(loginRequest, user)) {
throw new HttpClientErrorException(HttpStatus.FORBIDDEN, "Invalid credentials"); throw new HttpClientErrorException(HttpStatus.FORBIDDEN, "Invalid credentials");
......
...@@ -7,7 +7,7 @@ import org.springframework.stereotype.Component; ...@@ -7,7 +7,7 @@ import org.springframework.stereotype.Component;
import com.auth0.jwt.JWT; import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm; import com.auth0.jwt.algorithms.Algorithm;
import com.uva.authentication.models.remote.Response; import com.uva.authentication.models.remote.User;
@Component @Component
public class JwtUtil { public class JwtUtil {
...@@ -25,7 +25,7 @@ public class JwtUtil { ...@@ -25,7 +25,7 @@ public class JwtUtil {
return jwtExpiration; return jwtExpiration;
} }
public String generateToken(Response user) { public String generateToken(User user) {
Algorithm algorithm = Algorithm.HMAC256(secretKey); Algorithm algorithm = Algorithm.HMAC256(secretKey);
return JWT return JWT
.create() .create()
......
...@@ -62,6 +62,13 @@ ...@@ -62,6 +62,13 @@
<groupId>jakarta.servlet</groupId> <groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId> <artifactId>jakarta.servlet-api</artifactId>
<scope>provided</scope> <scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.36</version>
<scope>provided</scope>
</dependency> </dependency>
</dependencies> </dependencies>
......
package com.uva.api.apis;
import java.util.List;
import org.springframework.stereotype.Component;
import com.uva.api.models.remote.Booking;
@Component
public class BookingAPI {
public List<Booking> getAllBookingsByUserId(int id) {
return null;
}
}
package com.uva.api.models;
import java.time.LocalDate;
public class Booking {
public LocalDate getEndDate() {
// TODO Auto-generated method stub
throw new UnsupportedOperationException("Unimplemented method 'getEndDate'");
}
}
package com.uva.api.models; package com.uva.api.models;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.uva.api.models.remote.Booking;
import jakarta.persistence.Basic; import jakarta.persistence.Basic;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column; import jakarta.persistence.Column;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.EnumType; import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated; import jakarta.persistence.Enumerated;
import jakarta.persistence.FetchType;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Entity @Entity
@Table(name = "user_client") @Table(name = "user_client")
@NoArgsConstructor
@Getter
@Setter
@Data
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
public class Client extends User { public class Client extends User {
@Basic(optional = false) @Basic(optional = false)
@Column(nullable = false) @Column(nullable = false)
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
private UserStatus status; private UserStatus status = UserStatus.NO_BOOKINGS;
@JsonIgnore
@OneToMany(mappedBy = "userId", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Booking> bookings; private List<Booking> bookings;
public Client() {
super();
bookings = new ArrayList<>();
status = UserStatus.NO_BOOKINGS;
}
public Client(int id, String name, String email, String password, UserStatus status, public Client(int id, String name, String email, String password, UserStatus status,
List<Booking> bookings) { List<Booking> bookings) {
super(id, name, email, password, UserRol.CLIENT); super(id, name, email, password, UserRol.CLIENT);
...@@ -53,12 +53,4 @@ public class Client extends User { ...@@ -53,12 +53,4 @@ public class Client extends User {
public void setStatus(UserStatus status) { public void setStatus(UserStatus status) {
this.status = status; this.status = status;
} }
public List<Booking> getBookings() {
return this.bookings;
}
public void setBookings(List<Booking> bookings) {
this.bookings = bookings;
}
} }
package com.uva.api.models;
public class Hotel {
}
package com.uva.api.models; package com.uva.api.models;
import java.util.ArrayList; import com.fasterxml.jackson.databind.JsonNode;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Entity @Entity
@Table(name = "hotel_manager_user") @Table(name = "hotel_manager_user")
@NoArgsConstructor
@Getter
@Setter
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class HotelManager extends User { public class HotelManager extends User {
@JsonIgnore private JsonNode hotels;
@OneToMany(mappedBy = "hotelManager", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Hotel> hotels;
public HotelManager() {
super();
hotels = new ArrayList<>();
}
public HotelManager(int id, String name, String email, String password, List<Hotel> hotels) { public HotelManager(int id, String name, String email, String password, JsonNode hotels) {
super(id, name, email, password, UserRol.HOTEL_ADMIN); super(id, name, email, password, UserRol.HOTEL_ADMIN);
setHotels(hotels); setHotels(hotels);
} }
public List<Hotel> getHotels() {
return this.hotels;
}
public void setHotels(List<Hotel> hotels) {
this.hotels = hotels;
}
} }
...@@ -13,10 +13,24 @@ import jakarta.persistence.Id; ...@@ -13,10 +13,24 @@ import jakarta.persistence.Id;
import jakarta.persistence.Inheritance; import jakarta.persistence.Inheritance;
import jakarta.persistence.InheritanceType; import jakarta.persistence.InheritanceType;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Entity @Entity
@Inheritance(strategy = InheritanceType.JOINED) @Inheritance(strategy = InheritanceType.JOINED)
@Table(name = "users") @Table(name = "users")
@NoArgsConstructor
@AllArgsConstructor
@Setter
@Getter
@Data
@EqualsAndHashCode
@ToString
public class User { public class User {
@Id @Id
...@@ -33,6 +47,7 @@ public class User { ...@@ -33,6 +47,7 @@ public class User {
@Column(nullable = false, unique = true) @Column(nullable = false, unique = true)
private String email; private String email;
@JsonIgnore
@Basic(optional = false) @Basic(optional = false)
@Column(nullable = false) @Column(nullable = false)
private String password; private String password;
...@@ -41,54 +56,4 @@ public class User { ...@@ -41,54 +56,4 @@ public class User {
@Column(nullable = false) @Column(nullable = false)
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)
private UserRol rol = UserRol.CLIENT; private UserRol rol = UserRol.CLIENT;
public User() {
}
public User(int id, String name, String email, String password, UserRol rol) {
setId(id);
setName(name);
setEmail(email);
setRol(rol);
}
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return this.email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String rawPassword) {
this.password = rawPassword;
}
public UserRol getRol() {
return this.rol;
}
public void setRol(UserRol rol) {
this.rol = rol;
}
} }
\ No newline at end of file
package com.uva.api.models.remote;
import java.time.LocalDate;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Setter
@Getter
@NoArgsConstructor
@AllArgsConstructor
@ToString
@EqualsAndHashCode
public class Booking {
private LocalDate startDate;
private LocalDate endDate;
}
...@@ -10,12 +10,14 @@ import org.springframework.http.HttpStatus; ...@@ -10,12 +10,14 @@ import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.HttpClientErrorException; import org.springframework.web.client.HttpClientErrorException;
import com.uva.api.apis.BookingAPI;
import com.uva.api.models.AuthResponse; import com.uva.api.models.AuthResponse;
import com.uva.api.models.Client; import com.uva.api.models.Client;
import com.uva.api.models.HotelManager; import com.uva.api.models.HotelManager;
import com.uva.api.models.User; import com.uva.api.models.User;
import com.uva.api.models.UserRol; import com.uva.api.models.UserRol;
import com.uva.api.models.UserStatus; import com.uva.api.models.UserStatus;
import com.uva.api.models.remote.Booking;
import com.uva.api.repositories.ClientRepository; import com.uva.api.repositories.ClientRepository;
import com.uva.api.repositories.HotelManagerRepository; import com.uva.api.repositories.HotelManagerRepository;
import com.uva.api.repositories.UserRepository; import com.uva.api.repositories.UserRepository;
...@@ -32,6 +34,9 @@ public class UserService { ...@@ -32,6 +34,9 @@ public class UserService {
@Autowired @Autowired
private HotelManagerRepository hotelManagerRepository; private HotelManagerRepository hotelManagerRepository;
@Autowired
private BookingAPI bookingAPI;
public List<User> getAllUsers() { public List<User> getAllUsers() {
return userRepository.findAll(); return userRepository.findAll();
} }
...@@ -44,6 +49,15 @@ public class UserService { ...@@ -44,6 +49,15 @@ public class UserService {
return assertUser(userRepository.findById(id)); return assertUser(userRepository.findById(id));
} }
public Client getClientById(int id) {
User user = assertUser(clientRepository.findById(id));
Client client = new Client();
BeanUtils.copyProperties(user, client);
List<Booking> bookings = bookingAPI.getAllBookingsByUserId(user.getId());
client.setBookings(bookings);
return client;
}
public AuthResponse getUserByEmail(String email) { public AuthResponse getUserByEmail(String email) {
User u = assertUser(userRepository.findByEmail(email)); User u = assertUser(userRepository.findByEmail(email));
AuthResponse auth = new AuthResponse(); AuthResponse auth = new AuthResponse();
...@@ -68,7 +82,7 @@ public class UserService { ...@@ -68,7 +82,7 @@ public class UserService {
case ADMIN: case ADMIN:
User admin = new User(); User admin = new User();
BeanUtils.copyProperties(registerRequest, admin); BeanUtils.copyProperties(registerRequest, admin);
newUser = admin; // userAPI.save(admin); newUser = userRepository.save(admin);
break; break;
case CLIENT: // Por defecto cliente normal case CLIENT: // Por defecto cliente normal
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment