From 1e6b97d352983698f4113b706f7e446313a96caf Mon Sep 17 00:00:00 2001 From: Dmitriy Kopylenko Date: Mon, 12 Nov 2018 11:42:29 -0500 Subject: [PATCH] SHIBUI-975: wip --- .../admin/ui/security/model/AdminRole.java | 37 ++++++++++++++++ .../admin/ui/security/model/AdminUser.java | 43 +++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/model/AdminRole.java create mode 100644 backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/model/AdminUser.java diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/model/AdminRole.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/model/AdminRole.java new file mode 100644 index 000000000..67eea5513 --- /dev/null +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/model/AdminRole.java @@ -0,0 +1,37 @@ +package edu.internet2.tier.shibboleth.admin.ui.security.model; + +import edu.internet2.tier.shibboleth.admin.ui.domain.AbstractAuditable; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.ManyToMany; +import java.util.Set; + +/** + * Models a basic administrative role concept in the system. + * + * @author Dmitriy Kopylenko + */ +@Entity +@NoArgsConstructor +@Getter +@Setter +@EqualsAndHashCode(callSuper = true, exclude = "admins") +@ToString(exclude = "admins") +public class AdminRole extends AbstractAuditable { + + @Column(unique = true) + private String name; + + @ManyToMany(cascade = CascadeType.ALL, mappedBy = "roles", fetch = FetchType.EAGER) + private Set admins; + + +} diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/model/AdminUser.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/model/AdminUser.java new file mode 100644 index 000000000..de16be4ca --- /dev/null +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/security/model/AdminUser.java @@ -0,0 +1,43 @@ +package edu.internet2.tier.shibboleth.admin.ui.security.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import edu.internet2.tier.shibboleth.admin.ui.domain.AbstractAuditable; +import lombok.*; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import java.util.Set; + +/** + * Models a basic administrative user in the system. + * + * @author Dmitriy Kopylenko + */ +@Entity +@NoArgsConstructor +@Getter +@Setter +@EqualsAndHashCode(callSuper = true, exclude = "roles") +@ToString(exclude = "roles") +public class AdminUser extends AbstractAuditable { + + @Column(nullable = false, unique = true) + private String username; + + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + @Column(nullable = false) + private String password; + + private String firstName; + + private String lastName; + + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + @ManyToMany(cascade = CascadeType.ALL) + @JoinTable(name = "adminuser_role", joinColumns = @JoinColumn(name = "admin_user_id"), inverseJoinColumns = @JoinColumn(name = "admin_role_id")) + private Set roles; +}