Cześć ! Chcę dodać role i rights do zmiennej authorities, nie umiem korzystać z streamów zbytnio, dlatego potrzebowałbym trochę pomocy
import lombok.Data;
import java.util.List;
@Data
public class Access {
private Role role;
private String companyId;
private List<AccessRight> rights;
}
@Data
class AccessRight {
private List<String> assetTemplateIds;
private List<String> taskTemplatesIds;
}
Klasa implementująca UserDetails
@Data
@Builder
public class UserDetailsImpl implements UserDetails {
private String id;
private String username;
private String email;
private String password;
private Collection<? extends GrantedAuthority> authorities;
public UserDetailsImpl(String id, String username, String email, String password,
Collection<? extends GrantedAuthority> authorities) {
this.id = id;
this.username = username;
this.email = email;
this.password = password;
this.authorities = authorities;
}
public static UserDetailsImpl build(User user) {
. // tu jest wporządku, pobieramy nazwy ról z ENUM
List<GrantedAuthority> authorities = user.getAccesses()
.stream().map(access -> new SimpleGrantedAuthority(access.getRole().name()))
.collect(Collectors.toList());
// w następnych linijkach chcę dodać wartości z assetTemplateIds i taskTemplatesIds, lecz nie jestem pewien jak to zrobić.
authorities.add() user.getAccesses()
.stream().map(role -> new SimpleGrantedAuthority(role.getRights().getAssetTemplateIds()))
.collect(Collectors.toList());
authorities.add() user.getAccesses()
.stream().map(role -> new SimpleGrantedAuthority(role.getRights().getTaskTemplatesIds()))
.collect(Collectors.toList());
return new UserDetailsImpl(
user.getId(),
user.getUsername(),
user.getEmail(),
user.getPassword(),
authorities);
}
...
...
...