drew 5 سال پیش
والد
کامیت
4a6daf4659

+ 2 - 0
src/main/java/com/izouma/awesomeAdmin/security/Authority.java

@@ -1,5 +1,6 @@
 package com.izouma.awesomeAdmin.security;
 
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
@@ -16,6 +17,7 @@ import java.util.Objects;
 @NoArgsConstructor
 @AllArgsConstructor
 @Builder
+@JsonIgnoreProperties(ignoreUnknown = true)
 public class Authority implements Serializable {
     public enum NAMES {
         ROLE_USER, ROLE_DEV, ROLE_ADMIN

+ 51 - 41
src/main/java/com/izouma/awesomeAdmin/service/UserService.java

@@ -8,6 +8,8 @@ import com.izouma.awesomeAdmin.domain.User;
 import com.izouma.awesomeAdmin.exception.BusinessException;
 import com.izouma.awesomeAdmin.repo.UserRepo;
 import com.izouma.awesomeAdmin.security.Authority;
+import com.izouma.awesomeAdmin.security.JwtTokenUtil;
+import com.izouma.awesomeAdmin.security.JwtUserFactory;
 import com.izouma.awesomeAdmin.service.sms.SmsService;
 import com.izouma.awesomeAdmin.service.storage.StorageService;
 import lombok.AllArgsConstructor;
@@ -28,11 +30,12 @@ import java.util.*;
 @Slf4j
 @AllArgsConstructor
 public class UserService {
-    private UserRepo userRepo;
-    private WxMaService wxMaService;
-    private WxMpService wxMpService;
-    private SmsService smsService;
+    private UserRepo       userRepo;
+    private WxMaService    wxMaService;
+    private WxMpService    wxMpService;
+    private SmsService     smsService;
     private StorageService storageService;
+    private JwtTokenUtil   jwtTokenUtil;
 
     public User loginByPhone(String phone) {
         return userRepo.findByPhone(phone);
@@ -44,18 +47,18 @@ public class UserService {
         User user = userRepo.findByOpenId(wxMpUser.getOpenId());
         if (user == null) {
             user = User.builder()
-                       .username(UUID.randomUUID().toString())
-                       .nickname(wxMpUser.getNickname())
-                       .avatar(wxMpUser.getHeadImgUrl())
-                       .sex(wxMpUser.getSexDesc())
-                       .country(wxMpUser.getCountry())
-                       .province(wxMpUser.getProvince())
-                       .city(wxMpUser.getCity())
-                       .openId(wxMpUser.getOpenId())
-                       .language(wxMpUser.getLanguage())
-                       .enabled(true)
-                       .authorities(Collections.singleton(Authority.builder().name("ROLE_USER").build()))
-                       .build();
+                    .username(UUID.randomUUID().toString())
+                    .nickname(wxMpUser.getNickname())
+                    .avatar(wxMpUser.getHeadImgUrl())
+                    .sex(wxMpUser.getSexDesc())
+                    .country(wxMpUser.getCountry())
+                    .province(wxMpUser.getProvince())
+                    .city(wxMpUser.getCity())
+                    .openId(wxMpUser.getOpenId())
+                    .language(wxMpUser.getLanguage())
+                    .enabled(true)
+                    .authorities(Collections.singleton(Authority.builder().name("ROLE_USER").build()))
+                    .build();
             userRepo.save(user);
         }
         return user;
@@ -71,13 +74,13 @@ public class UserService {
                 return userInfo;
             }
             userInfo = User.builder()
-                           .username(UUID.randomUUID().toString())
-                           .nickname("用户" + RandomStringUtils.randomAlphabetic(6))
-                           .openId(openId)
-                           .avatar(Constants.DEFAULT_AVATAR)
-                           .enabled(true)
-                           .authorities(Collections.singleton(Authority.builder().name("ROLE_USER").build()))
-                           .build();
+                    .username(UUID.randomUUID().toString())
+                    .nickname("用户" + RandomStringUtils.randomAlphabetic(6))
+                    .openId(openId)
+                    .avatar(Constants.DEFAULT_AVATAR)
+                    .enabled(true)
+                    .authorities(Collections.singleton(Authority.builder().name("ROLE_USER").build()))
+                    .build();
             userInfo = userRepo.save(userInfo);
             return userInfo;
         } catch (WxErrorException e) {
@@ -111,17 +114,17 @@ public class UserService {
         if (user == null) {
 
             user = User.builder()
-                       .username(UUID.randomUUID().toString())
-                       .nickname(wxUserInfo.getNickName())
-                       .openId(wxUserInfo.getOpenId())
-                       .avatar(avatarUrl)
-                       .sex(wxUserInfo.getGender())
-                       .country(wxUserInfo.getCountry())
-                       .province(wxUserInfo.getProvince())
-                       .city(wxUserInfo.getCity())
-                       .enabled(true)
-                       .authorities(Collections.singleton(Authority.builder().name("ROLE_USER").build()))
-                       .build();
+                    .username(UUID.randomUUID().toString())
+                    .nickname(wxUserInfo.getNickName())
+                    .openId(wxUserInfo.getOpenId())
+                    .avatar(avatarUrl)
+                    .sex(wxUserInfo.getGender())
+                    .country(wxUserInfo.getCountry())
+                    .province(wxUserInfo.getProvince())
+                    .city(wxUserInfo.getCity())
+                    .enabled(true)
+                    .authorities(Collections.singleton(Authority.builder().name("ROLE_USER").build()))
+                    .build();
             user = userRepo.save(user);
 
         } else {
@@ -145,14 +148,21 @@ public class UserService {
             authorities.add(new Authority(Authority.NAMES.ROLE_ADMIN.name()));
             authorities.add(new Authority(Authority.NAMES.ROLE_USER.name()));
             root = User.builder()
-                       .nickname("管理员")
-                       .username("root")
-                       .password(new BCryptPasswordEncoder().encode("123456"))
-                       .avatar(Constants.DEFAULT_AVATAR)
-                       .enabled(true)
-                       .authorities(authorities)
-                       .build();
+                    .nickname("管理员")
+                    .username("root")
+                    .password(new BCryptPasswordEncoder().encode("123456"))
+                    .avatar(Constants.DEFAULT_AVATAR)
+                    .enabled(true)
+                    .authorities(authorities)
+                    .build();
             userRepo.save(root);
         }
     }
+
+    public String setPassword(Long userId, String password) {
+        User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
+        user.setPassword(new BCryptPasswordEncoder().encode(password));
+        user = userRepo.save(user);
+        return jwtTokenUtil.generateToken(JwtUserFactory.create(user));
+    }
 }

+ 5 - 0
src/main/java/com/izouma/awesomeAdmin/web/UserController.java

@@ -87,4 +87,9 @@ public class UserController extends BaseController {
         throw new BusinessException("获取用户信息失败");
     }
 
+    @PreAuthorize("hasRole('ADMIN')")
+    @PostMapping("/setPasswordAdmin")
+    public String setPasswordAdmin(@RequestParam Long userId, @RequestParam String password) {
+        return userService.setPassword(userId, password);
+    }
 }

+ 1 - 1
src/main/vue/src/views/Admin.vue

@@ -42,7 +42,7 @@
                     </el-dropdown-menu>
                 </el-dropdown>
             </el-header>
-            <el-main style="background: #f2f4f5;">
+            <el-main style="background: #f2f4f5;height:100%">
                 <router-view></router-view>
             </el-main>
         </el-container>

+ 12 - 22
src/main/vue/src/views/UserEdit.vue

@@ -156,34 +156,24 @@ export default {
                     console.log(res);
                     if (res.value) {
                         this.$alert('确定重置密码?', '提示', {
-                            showCancelButton: true,
+                            showCancelButton: true
                         })
                             .then(() => {
-                                this.$http
-                                    .post({
-                                        url: 'userInfo/resetPasswordAdmin',
-                                        data: {
-                                            id: this.formData.id,
-                                            password: res.value,
-                                        },
-                                    })
-                                    .then(res => {
-                                        if (res.success) {
-                                            this.$message.success(
-                                                '密码重置成功',
-                                            );
-                                        } else {
-                                            this.$message.error(
-                                                res.error || '重置密码失败',
-                                            );
-                                        }
-                                    });
+                                return this.$http.post('/user/setPasswordAdmin', {
+                                    userId: this.formData.id,
+                                    password: res.value
+                                });
                             })
-                            .catch(() => {});
+                            .then(res => {
+                                this.$message.success('密码重置成功');
+                            })
+                            .catch(() => {
+                                this.$message.error(res.error || '重置密码失败');
+                            });
                     }
                 })
                 .catch(() => {});
-        },
+        }
     },
 };
 </script>