Преглед изворни кода

Merge branch '84-integrate' into 'develop'

feat: 增加修改密码接口



See merge request !13

zengweijie пре 3 година
родитељ
комит
58ee0ab605

+ 16 - 7
smsb-customer-manager-adapter/src/main/java/com/inspur/customer/web/controller/keyclaok/KeycloakController.java

@@ -39,21 +39,30 @@ public class KeycloakController {
         if(StringUtils.isEmpty(subscribe.getUserId())){
             return Response.buildFailure("404","userId不能为空!");
         }
-        keycloakService.updateAttribute(subscribe.getUserId(), "wechat" , subscribe.getOppenId());
+        keycloakService.updateAttribute(subscribe.getUserId(), "wechat", subscribe.getOppenId());
         return Response.buildSuccess();
     }
 
     @GetMapping("query/ticket/{userId}")
-    public SingleResponse getTicket(@PathVariable("userId") String userId ,
-                                    @RequestHeader("Authorization") String authorization){
-        return SingleResponse.of(iWeChatService.queryTicket(appKey , userId, authorization));
+    public SingleResponse getTicket(@PathVariable("userId") String userId,
+                                    @RequestHeader("Authorization") String authorization) {
+        return SingleResponse.of(iWeChatService.queryTicket(appKey, userId, authorization));
+    }
+
+    @PutMapping("changePassword")
+    public Response changePassword(@RequestHeader("userId") String userId, String newPassword) {
+        if (StringUtils.isEmpty(userId)) {
+            return Response.buildFailure("400", "密码不能为空");
+        }
+        keycloakService.changePassword(userId, newPassword);
+        return Response.buildSuccess();
     }
 
     @Scheduled(cron = "0/10 * * * * ?")
-    public void askUserOppenId(){
-        for(String userId : keycloakService.getUsersMap().keySet()){
+    public void askUserOppenId() {
+        for (String userId : keycloakService.getUsersMap().keySet()) {
             String oppenId = iWeChatService.askUser(userId);
-            if(!StringUtils.isEmpty(oppenId)){
+            if (!StringUtils.isEmpty(oppenId)) {
                 SubscribeDto dto = new SubscribeDto();
                 dto.setUserId(userId);
                 dto.setOppenId(oppenId);

+ 10 - 4
smsb-customer-manager-app/src/main/java/com/inspur/customer/service/keycloak/KeycloakServiceImpl.java

@@ -8,12 +8,10 @@ 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.ClientRepresentation;
-import org.keycloak.representations.idm.GroupRepresentation;
-import org.keycloak.representations.idm.RoleRepresentation;
-import org.keycloak.representations.idm.UserRepresentation;
+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;
 
@@ -202,6 +200,14 @@ public class KeycloakServiceImpl implements KeycloakService {
         return resultMap;
     }
 
+    @Override
+    public void changePassword(String userId, String newPassword) {
+        CredentialRepresentation cr = new CredentialRepresentation();
+        cr.setType(CredentialRepresentation.PASSWORD);
+        cr.setValue(newPassword);
+        keycloak.realm(realm).users().get(userId).resetPassword(cr);
+    }
+
     private List<KeycloakUserCO> getUserByRoleAndGroup(String group, String role) {
         if (!StringUtils.hasText(group) || !StringUtils.hasText(role)) {
             return Collections.emptyList();

+ 3 - 0
smsb-customer-manager-client/src/main/java/com/inspur/customer/client/keycloak/KeycloakService.java

@@ -70,6 +70,9 @@ public interface KeycloakService {
     List<String> getUserRealmRoles(String userId);
 
     Map<String, List<String>> getUserClientRoles(String userId);
+
+    void changePassword(String userId, String newPassword);
+
     /**
      * 获取当前releam下用户Map<id,name>
      *