|
|
@@ -5,13 +5,11 @@ import com.inspur.customer.object.keycloak.KeycloakUserCO;
|
|
|
import com.inspur.customer.object.wechat.Pair;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.dubbo.config.annotation.DubboService;
|
|
|
-import org.keycloak.admin.client.Keycloak;
|
|
|
import org.keycloak.admin.client.resource.RealmResource;
|
|
|
import org.keycloak.admin.client.resource.UserResource;
|
|
|
import org.keycloak.representations.idm.*;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.cache.annotation.Cacheable;
|
|
|
-import org.springframework.util.Assert;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
@@ -25,16 +23,13 @@ import java.util.stream.Collectors;
|
|
|
public class KeycloakServiceImpl implements KeycloakService {
|
|
|
|
|
|
@Resource
|
|
|
- private Keycloak keycloak;
|
|
|
-
|
|
|
- @Value("${keycloak.realm}")
|
|
|
- private String realm;
|
|
|
+ private RealmResource realmResource;
|
|
|
|
|
|
@Override
|
|
|
@Cacheable(value = "smsb:users")
|
|
|
public Map<String, String> getUserMap() {
|
|
|
Map<String, String> userMap = new HashMap<>();
|
|
|
- keycloak.realm(realm).users().list().forEach(user ->{
|
|
|
+ realmResource.users().list().forEach(user ->{
|
|
|
if (user.getFirstName() != null && user.getLastName() != null && !"".equals(user.getLastName())) {
|
|
|
user.setUsername(user.getLastName() + user.getFirstName());
|
|
|
}
|
|
|
@@ -51,7 +46,7 @@ public class KeycloakServiceImpl implements KeycloakService {
|
|
|
@Override
|
|
|
public List<KeycloakUserCO> getUsersInRole(String role) {
|
|
|
List<KeycloakUserCO> keycloakUserCos = new ArrayList<>();
|
|
|
- keycloak.realm(realm).roles().get(role).getRoleUserMembers().forEach(user -> {
|
|
|
+ realmResource.roles().get(role).getRoleUserMembers().forEach(user -> {
|
|
|
log.info("name: {}", user.getUsername());
|
|
|
KeycloakUserCO keycloakUserCo = new KeycloakUserCO();
|
|
|
keycloakUserCo.setId(user.getId());
|
|
|
@@ -78,7 +73,7 @@ public class KeycloakServiceImpl implements KeycloakService {
|
|
|
public List<KeycloakUserCO> getUsersByIds(List<String> userIds) {
|
|
|
List<KeycloakUserCO> keycloakUserCos = new ArrayList<>(userIds.size());
|
|
|
userIds.forEach(id -> {
|
|
|
- UserRepresentation userRepresentation = keycloak.realm(realm).users().get(id).toRepresentation();
|
|
|
+ UserRepresentation userRepresentation = realmResource.users().get(id).toRepresentation();
|
|
|
if (userRepresentation != null) {
|
|
|
KeycloakUserCO keycloakUserCo = new KeycloakUserCO();
|
|
|
keycloakUserCo.setId(userRepresentation.getId());
|
|
|
@@ -99,7 +94,7 @@ public class KeycloakServiceImpl implements KeycloakService {
|
|
|
@Override
|
|
|
public Boolean checkUserRole(String userId, String role) {
|
|
|
AtomicReference<Boolean> result = new AtomicReference<>(false);
|
|
|
- List<RoleRepresentation> roles = keycloak.realm(realm).users().get(userId).roles().getAll().getRealmMappings();
|
|
|
+ List<RoleRepresentation> roles = realmResource.users().get(userId).roles().getAll().getRealmMappings();
|
|
|
log.info("userId:{},roles:{}",userId , roles);
|
|
|
roles.forEach(n ->{
|
|
|
if(n.getName().equalsIgnoreCase(role)){
|
|
|
@@ -112,7 +107,7 @@ public class KeycloakServiceImpl implements KeycloakService {
|
|
|
|
|
|
@Override
|
|
|
public void updateAttribute(String userId ,String property , String value) {
|
|
|
- UserResource user = keycloak.realm(realm).users().get(userId);
|
|
|
+ UserResource user = realmResource.users().get(userId);
|
|
|
UserRepresentation userRepresentation = user.toRepresentation();
|
|
|
if (userRepresentation.getAttributes() == null) {
|
|
|
userRepresentation.setAttributes(new HashMap<>());
|
|
|
@@ -123,7 +118,7 @@ public class KeycloakServiceImpl implements KeycloakService {
|
|
|
|
|
|
@Override
|
|
|
public List<String> getAttrByGroupPath(String groupPath, String key) {
|
|
|
- GroupRepresentation groupRepresentation = keycloak.realm(realm).getGroupByPath(groupPath);
|
|
|
+ GroupRepresentation groupRepresentation = realmResource.getGroupByPath(groupPath);
|
|
|
if (groupRepresentation != null) {
|
|
|
Map<String, List<String>> attributes = groupRepresentation.getAttributes();
|
|
|
return attributes != null ? attributes.get(key) : Collections.emptyList();
|
|
|
@@ -138,7 +133,7 @@ public class KeycloakServiceImpl implements KeycloakService {
|
|
|
|
|
|
@Override
|
|
|
public List<KeycloakUserCO> getSuperAdmin() {
|
|
|
- return keycloak.realm(realm).roles().get("ROLE_SUPER_ADMIN").getRoleUserMembers()
|
|
|
+ return realmResource.roles().get("ROLE_SUPER_ADMIN").getRoleUserMembers()
|
|
|
.stream()
|
|
|
.map(this::transfer)
|
|
|
.collect(Collectors.toList());
|
|
|
@@ -165,17 +160,17 @@ public class KeycloakServiceImpl implements KeycloakService {
|
|
|
.filter(t -> Objects.nonNull(t) && Objects.nonNull(t.getKey()) && Objects.nonNull(t.getValue()))
|
|
|
.map(t -> t.getKey() + ":" + t.getValue())
|
|
|
.collect(Collectors.joining(" "));
|
|
|
- return keycloak.realm(realm).users().searchByAttributes(search).stream().map(this::transfer).collect(Collectors.toList());
|
|
|
+ return realmResource.users().searchByAttributes(search).stream().map(this::transfer).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<String> getUserGroupPathList(String userId) {
|
|
|
- return keycloak.realm(realm).users().get(userId).groups().stream().map(GroupRepresentation::getPath).collect(Collectors.toList());
|
|
|
+ return realmResource.users().get(userId).groups().stream().map(GroupRepresentation::getPath).collect(Collectors.toList());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<String> getUserRealmRoles(String userId) {
|
|
|
- return keycloak.realm(realm)
|
|
|
+ return realmResource
|
|
|
.users()
|
|
|
.get(userId)
|
|
|
.roles()
|
|
|
@@ -189,10 +184,10 @@ public class KeycloakServiceImpl implements KeycloakService {
|
|
|
@Override
|
|
|
public Map<String, List<String>> getUserClientRoles(String userId) {
|
|
|
Map<String, List<String>> resultMap = new HashMap<>();
|
|
|
- List<ClientRepresentation> clientList = keycloak.realm(realm).clients().findAll();
|
|
|
+ List<ClientRepresentation> clientList = realmResource.clients().findAll();
|
|
|
for (ClientRepresentation clientRepresentation : clientList) {
|
|
|
String clientId = clientRepresentation.getClientId();
|
|
|
- List<RoleRepresentation> roleList = keycloak.realm(realm).users().get(userId).roles().clientLevel(clientRepresentation.getId()).listEffective();
|
|
|
+ List<RoleRepresentation> roleList = realmResource.users().get(userId).roles().clientLevel(clientRepresentation.getId()).listEffective();
|
|
|
if (!roleList.isEmpty()) {
|
|
|
resultMap.put(clientId, roleList.stream().map(RoleRepresentation::getName).collect(Collectors.toList()));
|
|
|
}
|
|
|
@@ -205,14 +200,13 @@ public class KeycloakServiceImpl implements KeycloakService {
|
|
|
CredentialRepresentation cr = new CredentialRepresentation();
|
|
|
cr.setType(CredentialRepresentation.PASSWORD);
|
|
|
cr.setValue(newPassword);
|
|
|
- keycloak.realm(realm).users().get(userId).resetPassword(cr);
|
|
|
+ realmResource.users().get(userId).resetPassword(cr);
|
|
|
}
|
|
|
|
|
|
private List<KeycloakUserCO> getUserByRoleAndGroup(String group, String role) {
|
|
|
if (!StringUtils.hasText(group) || !StringUtils.hasText(role)) {
|
|
|
return Collections.emptyList();
|
|
|
}
|
|
|
- RealmResource realmResource = keycloak.realm(this.realm);
|
|
|
List<UserRepresentation> members = realmResource.groups().group(realmResource.getGroupByPath(group).getId()).members();
|
|
|
Set<String> set = realmResource.roles().get(role).getRoleUserMembers().stream().map(UserRepresentation::getId).collect(Collectors.toSet());
|
|
|
return members.stream().filter(t -> set.contains(t.getId())).map(this::transfer).collect(Collectors.toList());
|
|
|
@@ -238,7 +232,7 @@ public class KeycloakServiceImpl implements KeycloakService {
|
|
|
@Cacheable(value = "smsb:userList")
|
|
|
public Map<String, String> getUsersMap() {
|
|
|
Map<String, String> userMap = new HashMap<>();
|
|
|
- keycloak.realm(realm).users().list().forEach(user ->{
|
|
|
+ realmResource.users().list().forEach(user ->{
|
|
|
if (user.getFirstName() != null && user.getLastName() != null && !"".equals(user.getLastName())) {
|
|
|
user.setUsername(user.getLastName() + user.getFirstName());
|
|
|
}
|