remove role from hierarchy
This commit is contained in:
parent
8892b7bc65
commit
697c349f29
|
@ -7,11 +7,9 @@ import javax.annotation.PostConstruct;
|
||||||
|
|
||||||
import org.baeldung.persistence.dao.OrganizationRepository;
|
import org.baeldung.persistence.dao.OrganizationRepository;
|
||||||
import org.baeldung.persistence.dao.PrivilegeRepository;
|
import org.baeldung.persistence.dao.PrivilegeRepository;
|
||||||
import org.baeldung.persistence.dao.RoleRepository;
|
|
||||||
import org.baeldung.persistence.dao.UserRepository;
|
import org.baeldung.persistence.dao.UserRepository;
|
||||||
import org.baeldung.persistence.model.Organization;
|
import org.baeldung.persistence.model.Organization;
|
||||||
import org.baeldung.persistence.model.Privilege;
|
import org.baeldung.persistence.model.Privilege;
|
||||||
import org.baeldung.persistence.model.Role;
|
|
||||||
import org.baeldung.persistence.model.User;
|
import org.baeldung.persistence.model.User;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
@ -21,9 +19,6 @@ public class SetupData {
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserRepository userRepository;
|
private UserRepository userRepository;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private RoleRepository roleRepository;
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private PrivilegeRepository privilegeRepository;
|
private PrivilegeRepository privilegeRepository;
|
||||||
|
|
||||||
|
@ -33,26 +28,25 @@ public class SetupData {
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
initPrivileges();
|
initPrivileges();
|
||||||
initRoles();
|
|
||||||
initOrganizations();
|
initOrganizations();
|
||||||
initUsers();
|
initUsers();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initUsers() {
|
private void initUsers() {
|
||||||
final Role role1 = roleRepository.findByName("USER_ROLE");
|
final Privilege privilege1 = privilegeRepository.findByName("FOO_READ_PRIVILEGE");
|
||||||
final Role role2 = roleRepository.findByName("ADMIN_ROLE");
|
final Privilege privilege2 = privilegeRepository.findByName("FOO_WRITE_PRIVILEGE");
|
||||||
//
|
//
|
||||||
final User user1 = new User();
|
final User user1 = new User();
|
||||||
user1.setUsername("john");
|
user1.setUsername("john");
|
||||||
user1.setPassword("123");
|
user1.setPassword("123");
|
||||||
user1.setRoles(new HashSet<Role>(Arrays.asList(role1)));
|
user1.setPrivileges(new HashSet<Privilege>(Arrays.asList(privilege1)));
|
||||||
user1.setOrganization(organizationRepository.findByName("FirstOrg"));
|
user1.setOrganization(organizationRepository.findByName("FirstOrg"));
|
||||||
userRepository.save(user1);
|
userRepository.save(user1);
|
||||||
//
|
//
|
||||||
final User user2 = new User();
|
final User user2 = new User();
|
||||||
user2.setUsername("tom");
|
user2.setUsername("tom");
|
||||||
user2.setPassword("111");
|
user2.setPassword("111");
|
||||||
user2.setRoles(new HashSet<Role>(Arrays.asList(role2)));
|
user2.setPrivileges(new HashSet<Privilege>(Arrays.asList(privilege1, privilege2)));
|
||||||
user2.setOrganization(organizationRepository.findByName("SecondOrg"));
|
user2.setOrganization(organizationRepository.findByName("SecondOrg"));
|
||||||
userRepository.save(user2);
|
userRepository.save(user2);
|
||||||
}
|
}
|
||||||
|
@ -66,19 +60,6 @@ public class SetupData {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initRoles() {
|
|
||||||
final Privilege privilege1 = privilegeRepository.findByName("FOO_READ_PRIVILEGE");
|
|
||||||
final Privilege privilege2 = privilegeRepository.findByName("FOO_WRITE_PRIVILEGE");
|
|
||||||
//
|
|
||||||
final Role role1 = new Role("USER_ROLE");
|
|
||||||
role1.setPrivileges(new HashSet<Privilege>(Arrays.asList(privilege1)));
|
|
||||||
roleRepository.save(role1);
|
|
||||||
//
|
|
||||||
final Role role2 = new Role("ADMIN_ROLE");
|
|
||||||
role2.setPrivileges(new HashSet<Privilege>(Arrays.asList(privilege1, privilege2)));
|
|
||||||
roleRepository.save(role2);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initPrivileges() {
|
private void initPrivileges() {
|
||||||
final Privilege privilege1 = new Privilege("FOO_READ_PRIVILEGE");
|
final Privilege privilege1 = new Privilege("FOO_READ_PRIVILEGE");
|
||||||
privilegeRepository.save(privilege1);
|
privilegeRepository.save(privilege1);
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
package org.baeldung.persistence.dao;
|
|
||||||
|
|
||||||
import org.baeldung.persistence.model.Role;
|
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
|
||||||
|
|
||||||
public interface RoleRepository extends JpaRepository<Role, Long> {
|
|
||||||
public Role findByName(String name);
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,121 +0,0 @@
|
||||||
package org.baeldung.persistence.model;
|
|
||||||
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
import javax.persistence.Column;
|
|
||||||
import javax.persistence.Entity;
|
|
||||||
import javax.persistence.FetchType;
|
|
||||||
import javax.persistence.GeneratedValue;
|
|
||||||
import javax.persistence.GenerationType;
|
|
||||||
import javax.persistence.Id;
|
|
||||||
import javax.persistence.JoinColumn;
|
|
||||||
import javax.persistence.JoinTable;
|
|
||||||
import javax.persistence.ManyToMany;
|
|
||||||
|
|
||||||
@Entity
|
|
||||||
public class Role {
|
|
||||||
|
|
||||||
@Id
|
|
||||||
@GeneratedValue(strategy = GenerationType.AUTO)
|
|
||||||
private Long id;
|
|
||||||
|
|
||||||
@Column(nullable = false, unique = true)
|
|
||||||
private String name;
|
|
||||||
|
|
||||||
@ManyToMany(fetch = FetchType.EAGER)
|
|
||||||
@JoinTable(name = "roles_privileges", joinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "privilege_id", referencedColumnName = "id"))
|
|
||||||
private Set<Privilege> privileges;
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
public Role() {
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Role(String name) {
|
|
||||||
super();
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
public Long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(Long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Set<Privilege> getPrivileges() {
|
|
||||||
return privileges;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPrivileges(Set<Privilege> privileges) {
|
|
||||||
this.privileges = privileges;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
final StringBuilder builder = new StringBuilder();
|
|
||||||
builder.append("Role [id=").append(id).append(", name=").append(name).append(", privileges=").append(privileges).append("]");
|
|
||||||
return builder.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
final int prime = 31;
|
|
||||||
int result = 1;
|
|
||||||
result = (prime * result) + ((id == null) ? 0 : id.hashCode());
|
|
||||||
result = (prime * result) + ((name == null) ? 0 : name.hashCode());
|
|
||||||
result = (prime * result) + ((privileges == null) ? 0 : privileges.hashCode());
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object obj) {
|
|
||||||
if (this == obj) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (obj == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (getClass() != obj.getClass()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
final Role other = (Role) obj;
|
|
||||||
if (id == null) {
|
|
||||||
if (other.id != null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else if (!id.equals(other.id)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (name == null) {
|
|
||||||
if (other.name != null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else if (!name.equals(other.name)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (privileges == null) {
|
|
||||||
if (other.privileges != null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
} else if (!privileges.equals(other.privileges)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -35,8 +35,8 @@ public class User implements UserDetails {
|
||||||
private String password;
|
private String password;
|
||||||
|
|
||||||
@ManyToMany(fetch = FetchType.EAGER)
|
@ManyToMany(fetch = FetchType.EAGER)
|
||||||
@JoinTable(name = "users_roles", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "role_id", referencedColumnName = "id"))
|
@JoinTable(name = "users_privileges", joinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "privilege_id", referencedColumnName = "id"))
|
||||||
private Set<Role> roles;
|
private Set<Privilege> privileges;
|
||||||
|
|
||||||
@ManyToOne(fetch = FetchType.EAGER)
|
@ManyToOne(fetch = FetchType.EAGER)
|
||||||
@JoinColumn(name = "organization_id", referencedColumnName = "id")
|
@JoinColumn(name = "organization_id", referencedColumnName = "id")
|
||||||
|
@ -75,12 +75,12 @@ public class User implements UserDetails {
|
||||||
this.password = password;
|
this.password = password;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<Role> getRoles() {
|
public Set<Privilege> getPrivileges() {
|
||||||
return roles;
|
return privileges;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRoles(Set<Role> roles) {
|
public void setPrivileges(Set<Privilege> privileges) {
|
||||||
this.roles = roles;
|
this.privileges = privileges;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Organization getOrganization() {
|
public Organization getOrganization() {
|
||||||
|
@ -93,10 +93,41 @@ public class User implements UserDetails {
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<? extends GrantedAuthority> getAuthorities() {
|
||||||
|
final List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
|
||||||
|
for (final Privilege privilege : this.getPrivileges()) {
|
||||||
|
authorities.add(new SimpleGrantedAuthority(privilege.getName()));
|
||||||
|
}
|
||||||
|
return authorities;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isAccountNonExpired() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isAccountNonLocked() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCredentialsNonExpired() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
final StringBuilder builder = new StringBuilder();
|
final StringBuilder builder = new StringBuilder();
|
||||||
builder.append("User [id=").append(id).append(", username=").append(username).append(", password=").append(password).append(", roles=").append(roles).append(", organization=").append(organization).append("]");
|
builder.append("User [id=").append(id).append(", username=").append(username).append(", password=").append(password).append(", privileges=").append(privileges).append(", organization=").append(organization).append("]");
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,7 +138,7 @@ public class User implements UserDetails {
|
||||||
result = (prime * result) + ((id == null) ? 0 : id.hashCode());
|
result = (prime * result) + ((id == null) ? 0 : id.hashCode());
|
||||||
result = (prime * result) + ((organization == null) ? 0 : organization.hashCode());
|
result = (prime * result) + ((organization == null) ? 0 : organization.hashCode());
|
||||||
result = (prime * result) + ((password == null) ? 0 : password.hashCode());
|
result = (prime * result) + ((password == null) ? 0 : password.hashCode());
|
||||||
result = (prime * result) + ((roles == null) ? 0 : roles.hashCode());
|
result = (prime * result) + ((privileges == null) ? 0 : privileges.hashCode());
|
||||||
result = (prime * result) + ((username == null) ? 0 : username.hashCode());
|
result = (prime * result) + ((username == null) ? 0 : username.hashCode());
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -145,11 +176,11 @@ public class User implements UserDetails {
|
||||||
} else if (!password.equals(other.password)) {
|
} else if (!password.equals(other.password)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (roles == null) {
|
if (privileges == null) {
|
||||||
if (other.roles != null) {
|
if (other.privileges != null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (!roles.equals(other.roles)) {
|
} else if (!privileges.equals(other.privileges)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (username == null) {
|
if (username == null) {
|
||||||
|
@ -161,38 +192,4 @@ public class User implements UserDetails {
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Collection<? extends GrantedAuthority> getAuthorities() {
|
|
||||||
final List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
|
|
||||||
for (final Role role : this.getRoles()) {
|
|
||||||
for (final Privilege privilege : role.getPrivileges()) {
|
|
||||||
authorities.add(new SimpleGrantedAuthority(privilege.getName()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return authorities;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isAccountNonExpired() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isAccountNonLocked() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isCredentialsNonExpired() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isEnabled() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue