diff --git a/src/main/java/com/security/basic/persistence/model/Privilege.java b/src/main/java/com/security/basic/persistence/model/Privilege.java new file mode 100644 index 0000000..3d1d4be --- /dev/null +++ b/src/main/java/com/security/basic/persistence/model/Privilege.java @@ -0,0 +1,24 @@ +package com.security.basic.persistence.model; + +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.*; +import java.util.Collection; + +@Entity +@Getter +@Setter +@Table(name = "privileges") +public class Privilege { + + @Id + @Column(unique = true, nullable = false) + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + + @ManyToMany(mappedBy = "privileges") + private Collection roles; +} diff --git a/src/main/java/com/security/basic/persistence/model/Role.java b/src/main/java/com/security/basic/persistence/model/Role.java new file mode 100644 index 0000000..d5912d1 --- /dev/null +++ b/src/main/java/com/security/basic/persistence/model/Role.java @@ -0,0 +1,32 @@ +package com.security.basic.persistence.model; + +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.*; +import java.util.Collection; + +@Entity +@Getter +@Setter +@Table(name = "roles") +public class Role { + + @Id + @Column(unique = true, nullable = false) + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + + @ManyToMany(mappedBy = "roles") + private Collection users; + + @ManyToMany + @JoinTable( + name = "roles_privileges", + joinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"), + inverseJoinColumns = @JoinColumn(name = "privilege_id", referencedColumnName = "id") + ) + private Collection privileges; +} diff --git a/src/main/java/com/security/basic/persistence/model/User.java b/src/main/java/com/security/basic/persistence/model/User.java new file mode 100644 index 0000000..863b605 --- /dev/null +++ b/src/main/java/com/security/basic/persistence/model/User.java @@ -0,0 +1,32 @@ +package com.security.basic.persistence.model; + +import lombok.Getter; +import lombok.Setter; + +import javax.persistence.*; +import java.util.Collection; + + +@Entity +@Getter +@Setter +@Table(name = "users") +public class User { + + @Id + @Column(unique = true, nullable = false) + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String email; + + private String password; + + @ManyToMany(fetch = FetchType.EAGER) + @JoinTable( + name = "users_roles", + joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), + inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id") + ) + private Collection roles; +}