diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/controllers/UserController.java b/java/roomBooking/src/main/java/com/uva/roomBooking/controllers/UserController.java
index bbdfb0873c750bda3f762979876e04f12b3d4665..3a744d5ab396f2d71f0e2452b90c0a3b6c21a673 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/controllers/UserController.java
+++ b/java/roomBooking/src/main/java/com/uva/roomBooking/controllers/UserController.java
@@ -3,10 +3,8 @@ package com.uva.roomBooking.controllers;
 import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
-import java.util.Optional;
 
 import org.springframework.http.HttpStatus;
-import org.springframework.http.HttpStatusCode;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.CrossOrigin;
 import org.springframework.web.bind.annotation.DeleteMapping;
@@ -51,9 +49,7 @@ public class UserController {
 
   @PostMapping
   public User addUser(@RequestBody User user) {
-    // TODO revisar como se desea manejar estado por defecto
     user.setStatus(UserStatus.NO_BOOKINGS);
-    // Aunque se asegure a lo mejor no es la forma de manejo esperada
     return userRepository.save(user);
   }
 
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/models/User.java b/java/roomBooking/src/main/java/com/uva/roomBooking/models/User.java
index afb367bb94a4e9408f24fdad21fe382c293fb7b5..05e1a24cba65aba82738834b8d09ae4fa621234a 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/models/User.java
+++ b/java/roomBooking/src/main/java/com/uva/roomBooking/models/User.java
@@ -1,5 +1,6 @@
 package com.uva.roomBooking.models;
 
+import java.time.LocalDate;
 import java.util.List;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -19,6 +20,7 @@ import jakarta.persistence.Table;
 @Entity
 @Table(name = "users")
 public class User {
+  // TODO extraer a dos clases hijas, una por cada tipo
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   @Basic(optional = false)
@@ -30,9 +32,16 @@ public class User {
   @Basic(optional = false)
   private String email;
 
+  @Basic(optional = false)
+  private String password;
+
   @Basic(optional = false)
   @Enumerated(EnumType.STRING)
-  private UserStatus status = UserStatus.NO_BOOKINGS;
+  private UserRol rol = UserRol.CONSUMER;
+
+  @Basic(optional = false)
+  @Enumerated(EnumType.STRING)
+  private UserStatus status;
 
   @JsonIgnore
   @OneToMany(mappedBy = "userId", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@@ -41,9 +50,12 @@ public class User {
   public User() {
   }
 
-  public User(int id, String name, String email, UserStatus status, List<Booking> bookings) {
+  public User(int id, String name, String email, String password, UserRol rol, UserStatus status,
+      List<Booking> bookings) {
     setId(id);
+    setName(name);
     setEmail(email);
+    setRol(rol);
     setStatus(status);
     setBookings(bookings);
   }
@@ -72,8 +84,28 @@ public class User {
     this.email = email;
   }
 
+  public String getPassword() {
+    return password;
+  }
+
+  public void setPassword(String password) {
+    this.password = password;
+  }
+
+  public UserRol getRol() {
+    return this.rol;
+  }
+
+  public void setRol(UserRol rol) {
+    this.rol = rol;
+  }
+
   public UserStatus getStatus() {
-    return this.status;
+    if (!getBookings().isEmpty())
+      return UserStatus.NO_BOOKINGS;
+    boolean activeBookings = getBookings().stream()
+        .anyMatch(booking -> !booking.getEndDate().isBefore(LocalDate.now())); // reserva >= ahora
+    return activeBookings ? UserStatus.WITH_ACTIVE_BOOKINGS : UserStatus.WITH_INACTIVE_BOOKINGS;
   }
 
   public void setStatus(UserStatus status) {
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/models/UserRol.java b/java/roomBooking/src/main/java/com/uva/roomBooking/models/UserRol.java
new file mode 100644
index 0000000000000000000000000000000000000000..cba769f4362bd1209a1135a8e2624b5b45300c07
--- /dev/null
+++ b/java/roomBooking/src/main/java/com/uva/roomBooking/models/UserRol.java
@@ -0,0 +1,5 @@
+package com.uva.roomBooking.models;
+
+public enum UserRol {
+  HOTEL_ADMIN, CONSUMER
+}