From 9ced74ed4c953ced2d87e80cb8c30a89f75c1a55 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期二, 30 一月 2024 14:16:29 +0800
Subject: [PATCH] #

---
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/result/LoginResult.java       |   24 ++++++++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java |    3 
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/param/LoginParam.java         |   21 +++++++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/AuthController.java           |   59 +++++++++++++++++++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/UserServiceImpl.java        |   12 ++++
 zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/UserService.java                 |    4 +
 6 files changed, 121 insertions(+), 2 deletions(-)

diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java
index df659e0..8409a3b 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/common/security/JwtAuthenticationFilter.java
@@ -93,8 +93,7 @@
                         String token = JwtUtil.buildToken(jwtSubject, configProperties.getTokenExpireTime(),
                                 configProperties.getTokenKey());
                         response.addHeader(Constants.TOKEN_HEADER_NAME, token);
-                        userLoginService.saveAsync(user.getId(), UserLogin.TYPE_REFRESH, null,
-                                user.getHostId(), request);
+                        userLoginService.saveAsync(user.getId(), UserLogin.TYPE_REFRESH, null, user.getHostId(), request);
                     }
                 }
             } catch (ExpiredJwtException e) {
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/AuthController.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/AuthController.java
new file mode 100644
index 0000000..cac933e
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/AuthController.java
@@ -0,0 +1,59 @@
+package com.zy.asrs.wcs.sys.controller;
+
+import com.zy.asrs.common.web.BaseController;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.wcs.common.config.ConfigProperties;
+import com.zy.asrs.wcs.common.security.JwtSubject;
+import com.zy.asrs.wcs.sys.controller.param.LoginParam;
+import com.zy.asrs.wcs.sys.controller.result.LoginResult;
+import com.zy.asrs.wcs.sys.entity.User;
+import com.zy.asrs.wcs.sys.entity.UserLogin;
+import com.zy.asrs.wcs.sys.service.UserLoginService;
+import com.zy.asrs.wcs.sys.service.UserService;
+import com.zy.asrs.wcs.utils.JwtUtil;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 璁よ瘉鎺у埗鍣�
+ *
+ * Created by vincent on 1/30/2024
+ */
+@RestController
+@RequestMapping("/api")
+public class AuthController extends BaseController {
+
+    @Resource
+    private ConfigProperties configProperties;
+    @Resource
+    private UserService userService;
+    @Resource
+    private UserLoginService userLoginService;
+
+    @PostMapping("/login")
+    public R login(@RequestBody LoginParam param, HttpServletRequest request) {
+        String username = param.getUsername();
+        Long hostId = param.getHostId();
+        User user = userService.getByUsername(username, hostId);
+        if (user == null) {
+            return R.error("璐﹀彿涓嶅瓨鍦�");
+        }
+        if (!user.getStatus().equals(1)) {
+            return R.error("璐﹀彿琚喕缁�");
+        }
+        if (!userService.comparePassword(user.getPassword(), param.getPassword())) {
+            return R.error("瀵嗙爜閿欒");
+        }
+        userLoginService.saveAsync(user.getId(), UserLogin.TYPE_LOGIN, null, hostId, request);
+        String accessToken = JwtUtil.buildToken(new JwtSubject(username, hostId),
+                configProperties.getTokenExpireTime(), configProperties.getTokenKey());
+        return R.ok("鐧诲綍鎴愬姛").add(new LoginResult(accessToken, user));
+    }
+
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/param/LoginParam.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/param/LoginParam.java
new file mode 100644
index 0000000..8384a69
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/param/LoginParam.java
@@ -0,0 +1,21 @@
+package com.zy.asrs.wcs.sys.controller.param;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Created by vincent on 1/30/2024
+ */
+@Data
+public class LoginParam implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String username;
+
+    private String password;
+
+    private Long hostId;
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/result/LoginResult.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/result/LoginResult.java
new file mode 100644
index 0000000..9a9b5f0
--- /dev/null
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/controller/result/LoginResult.java
@@ -0,0 +1,24 @@
+package com.zy.asrs.wcs.sys.controller.result;
+
+import com.zy.asrs.wcs.sys.entity.User;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+/**
+ * Created by vincent on 1/30/2024
+ */
+@Data
+@NoArgsConstructor
+@AllArgsConstructor
+public class LoginResult implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String accessToken;
+
+    private User user;
+
+}
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/UserService.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/UserService.java
index a2c0c52..b4b2a55 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/UserService.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/UserService.java
@@ -7,4 +7,8 @@
 
     User getByUsername(String username, Long hostId);
 
+    boolean comparePassword(String dbPassword, String inputPassword);
+
+    String encodePassword(String password);
+
 }
diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/UserServiceImpl.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/UserServiceImpl.java
index e1f9937..af82439 100644
--- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/UserServiceImpl.java
+++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/sys/service/impl/UserServiceImpl.java
@@ -7,6 +7,7 @@
 import com.zy.asrs.wcs.sys.service.RoleMenuService;
 import com.zy.asrs.wcs.sys.service.UserRoleService;
 import com.zy.asrs.wcs.sys.service.UserService;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
@@ -18,6 +19,8 @@
     private UserRoleService userRoleService;
     @Resource
     private RoleMenuService roleMenuService;
+    @Resource
+    private BCryptPasswordEncoder bCryptPasswordEncoder;
 
     @Override
     public User getByUsername(String username, Long hostId) {
@@ -32,5 +35,14 @@
         return user;
     }
 
+    @Override
+    public boolean comparePassword(String dbPassword, String inputPassword) {
+        return bCryptPasswordEncoder.matches(inputPassword, dbPassword);
+    }
+
+    @Override
+    public String encodePassword(String password) {
+        return password == null ? null : bCryptPasswordEncoder.encode(password);
+    }
 
 }

--
Gitblit v1.9.1