package jnpf.dmsPermission;
|
|
import jnpf.base.UserInfo;
|
import jnpf.dmsEntity.permission.model.DmsSubjectSet;
|
import jnpf.permission.OrganizeApi;
|
import lombok.RequiredArgsConstructor;
|
import org.springframework.stereotype.Component;
|
|
import java.util.Collections;
|
import java.util.List;
|
|
@Component
|
@RequiredArgsConstructor
|
public class DmsSubjectResolver {
|
private final OrganizeApi organizeApi;
|
|
public DmsSubjectSet resolve(UserInfo user) {
|
DmsSubjectSet subjects = new DmsSubjectSet();
|
subjects.setUserId(user.getUserId());
|
subjects.getDirectOrgIds().addAll(orEmpty(user.getOrganizeIds()));
|
subjects.getPositionIds().addAll(orEmpty(user.getPositionIds()));
|
subjects.getRoleIds().addAll(orEmpty(user.getRoleIds()));
|
subjects.getPlatformGroupIds().addAll(orEmpty(user.getGroupIds()));
|
subjects.getAncestorOrgIds().addAll(subjects.getDirectOrgIds());
|
for (String orgId : subjects.getDirectOrgIds()) {
|
List<String> ancestors = organizeApi.upWardRecursion(orgId);
|
if (ancestors != null) {
|
subjects.getAncestorOrgIds().addAll(ancestors);
|
}
|
}
|
return subjects;
|
}
|
|
private List<String> orEmpty(List<String> values) {
|
return values == null ? Collections.<String>emptyList() : values;
|
}
|
}
|