forked from Hithomelabs/CFTunnels
68 lines
1.7 KiB
Java
68 lines
1.7 KiB
Java
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.
|
|
*
|
|
* <p>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.</p>
|
|
*
|
|
* <p><b>Database Table:</b> {@code users}</p>
|
|
*
|
|
* <p><b>Roles:</b></p>
|
|
* <ul>
|
|
* <li>USER - Basic access to view tunnels</li>
|
|
* <li>DEVELOPER - Can create/modify mappings</li>
|
|
* <li>APPROVER - Can approve/reject requests</li>
|
|
* <li>ADMIN - Full access including tunnel configuration</li>
|
|
* </ul>
|
|
*
|
|
* @see Request
|
|
* @see Mapping
|
|
*/
|
|
@Entity
|
|
@Getter
|
|
@Setter
|
|
@NoArgsConstructor
|
|
@AllArgsConstructor
|
|
@Table(name = "users")
|
|
public class User {
|
|
|
|
/**
|
|
* Unique identifier for the user (UUID).
|
|
*
|
|
* <p>This corresponds to the user's ID in the OIDC provider.</p>
|
|
*/
|
|
@Id
|
|
@GeneratedValue
|
|
@Column(columnDefinition = "uuid", insertable = false, updatable = false, nullable = false)
|
|
private UUID id;
|
|
|
|
/**
|
|
* User's display name.
|
|
*
|
|
* <p>This is typically the full name from the OIDC provider.</p>
|
|
*/
|
|
@Column(length = 50, nullable = false)
|
|
@Size(max = 50)
|
|
private String name;
|
|
|
|
/**
|
|
* User's email address.
|
|
*
|
|
* <p>Used as the unique identifier for authentication
|
|
* and for associating users with their roles.</p>
|
|
*/
|
|
@Column(length = 50, nullable = false)
|
|
@Size(max = 50)
|
|
private String email;
|
|
} |