package ru.soune.nocopy.adminpanel.entity; import com.fasterxml.jackson.annotation.JsonIgnore; import jakarta.persistence.*; import jakarta.validation.constraints.Size; import lombok.*; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.LastModifiedDate; import org.springframework.data.jpa.domain.support.AuditingEntityListener; import ru.soune.nocopy.adminpanel.permission.AdminPermission; import java.time.LocalDateTime; import java.util.HashSet; import java.util.Set; @Entity @Table(name = "admin_users") @Getter @Setter @NoArgsConstructor @AllArgsConstructor @ToString(exclude = {"password", "permissions"}) @EntityListeners(AuditingEntityListener.class) public class AdminUser { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @Column(name = "full_name") private String fullName; @Size(max = 1024) @Column(name = "email", length = 1024, unique = true) private String email; @Column(nullable = false) @Size(min = 6) @JsonIgnore private String password; @CreatedDate @Column(name = "created_at", updatable = false, nullable = false) private LocalDateTime createdAt; @LastModifiedDate @Column(name = "updated_at") private LocalDateTime updatedAt; @Column(name = "is_active", nullable = false) private Boolean isActive = true; @Column(name = "is_super_admin", nullable = false) private Boolean isSuperAdmin = false; @Column(name = "active_password", nullable = false) private Boolean isActivePassword = false; @Column(name = "permissions", nullable = false) private Long permissions = AdminPermission.DEFAULT_PERMISSIONS; }