can somoene explain this code in the Role and Permission, the getter in both files I dont know what is the purpose and also the enum in Permission file each attribute has an argument why theirs an argument if theirs already a ROLE ?
Permission.java
`package com.crackit.SpringSecurityJWT.user;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public enum Permission {
ADMIN_READ("admin:read"),
ADMIN_CREATE("admin:create"),
MEMBER_READ("management:read"),
MEMBER_CREATE("management:create"),
;
@Getter
private final String permission;
}
`
Role.java
package com.crackit.SpringSecurityJWT.user;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import static com.crackit.SpringSecurityJWT.user.Permission.*;
@RequiredArgsConstructor
public enum Role {
ADMIN(
Set.of(
ADMIN_READ,
ADMIN_CREATE,
MEMBER_READ,
MEMBER_CREATE
)
),
MEMBER(
Set.of(
MEMBER_READ,
MEMBER_CREATE
)
)
;
@Getter
private final Set<Permission> permissions;
public List<SimpleGrantedAuthority> getAuthorities() {
var authorities = getPermissions()
.stream()
.map(authority -> new SimpleGrantedAuthority(authority.getPermission()))
.collect(Collectors.toList());
authorities.add(new SimpleGrantedAuthority("ROLE_" + this.name()));
return authorities;
}
}
User.java
package com.crackit.SpringSecurityJWT.user;
import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
import java.util.Collection;
import java.util.List;
@Entity
@Table(name = "_user")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class User implements UserDetails {
@Id
@GeneratedValue
private Integer id;
private String firstName;
private String lastName;
private String email;
private String password;
@Enumerated(EnumType.STRING)
private Role role;
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return role.getAuthorities();
}
@Override
public String getUsername() {
return email;
}
@Override
public boolean isAccountNonExpired() {
return true;
}
@Override
public boolean isAccountNonLocked() {
return true;
}
@Override
public boolean isCredentialsNonExpired() {
return true;
}
@Override
public boolean isEnabled() {
return true;
}
}
New contributor
mouse is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.