package com.hithomelabs.cftunnels.Entity; import jakarta.persistence.*; import jakarta.validation.constraints.Size; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import java.util.UUID; /** * JPA Entity representing a user in the system. * *

This entity stores user information synced from the OIDC provider * during authentication. Users are assigned roles that determine their * access levels to the API endpoints.

* *

Database Table: {@code users}

* *

Roles:

* * * @see Request * @see Mapping */ @Entity @Getter @Setter @NoArgsConstructor @AllArgsConstructor @Table(name = "users") public class User { /** * Unique identifier for the user (UUID). * *

This corresponds to the user's ID in the OIDC provider.

*/ @Id @GeneratedValue @Column(columnDefinition = "uuid", insertable = false, updatable = false, nullable = false) private UUID id; /** * User's display name. * *

This is typically the full name from the OIDC provider.

*/ @Column(length = 50, nullable = false) @Size(max = 50) private String name; /** * User's email address. * *

Used as the unique identifier for authentication * and for associating users with their roles.

*/ @Column(length = 50, nullable = false) @Size(max = 50) private String email; }