Может ли кто-нибудь объяснить этот код в роли и разрешении, метод получения в обоих файлах, я не знаю, какова цель, а также перечисление в файле разрешений, каждый атрибут имеет аргумент, почему это аргумент, если они уже РОЛЬ?
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;
`
Роль.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
permissions;
public List getAuthorities() {
var authorities = getPermissions()
.stream()
.map(authority -> new SimpleGrantedAuthority(authority.getPermission()))
.collect(Collectors.toList());
authorities.add(new SimpleGrantedAuthority("ROLE_" + this.name()));
return authorities;
}
}
Пользователь.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
Подробнее здесь: https://stackoverflow.com/questions/784 ... and-method