From 0ece3ba8c92df0438af52b8de6b9225d8ada4103 Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期四, 30 十一月 2023 08:46:34 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes

---
 springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java |  103 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 103 insertions(+), 0 deletions(-)

diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java
new file mode 100644
index 0000000..76d6d6a
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/DefaultController.java
@@ -0,0 +1,103 @@
+package com.example.springboot.controller;
+
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.example.springboot.security.util.JwtUtil;
+import com.example.springboot.security.util.SecurityUtil;
+import com.example.springboot.entity.User;
+import com.example.springboot.entity.vo.Result;
+import com.example.springboot.entity.vo.UserVo;
+import com.example.springboot.security.constant.SystemConstant;
+import com.example.springboot.service.UserService;
+import com.example.springboot.util.ValidatorUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authc.DisabledAccountException;
+import org.apache.shiro.authc.ExcessiveAttemptsException;
+import org.apache.shiro.authc.ExpiredCredentialsException;
+import org.apache.shiro.authc.IncorrectCredentialsException;
+import org.apache.shiro.authc.LockedAccountException;
+import org.apache.shiro.authc.UnknownAccountException;
+import org.apache.shiro.authc.UsernamePasswordToken;
+import org.apache.shiro.authz.UnauthorizedException;
+import org.apache.shiro.crypto.hash.SimpleHash;
+import org.apache.shiro.util.ByteSource;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.HashMap;
+
+@RestController
+
+@Slf4j
+@Api(tags = "鐧诲綍鍜屾敞鍐�")
+public class DefaultController {
+    @Autowired
+    private UserService userService;
+
+    @ApiOperation(value = "娉ㄥ唽鐢ㄦ埛")
+    @PostMapping("/register")
+    public Result register(@RequestBody User user) {
+        // 鏍¢獙鍙傛暟
+        if (StringUtils.isNotEmpty(user.getEmail())) {
+            ValidatorUtil.validateEntity(user);
+        }
+
+        Integer integer = userService.countByUsername(user.getUsername());
+        if (integer > 0) return Result.fail("鐢ㄦ埛鍚嶅凡缁忓瓨鍦�");
+        // 閫氳繃shiro榛樿鐨勫姞瀵嗗伐鍏风被涓烘敞鍐岀敤鎴风殑瀵嗙爜杩涜鍔犲瘑
+        Object salt = ByteSource.Util.bytes(SystemConstant.JWT_SECRET_KEY);
+        String md5 = new SimpleHash("MD5", user.getPassword(), salt, 1024).toHex();
+        user.setPassword(md5);
+        userService.saveOrUpdate(user);
+        return Result.success();
+    }
+
+    @ApiOperation(value = "鐧诲綍")
+
+    @PostMapping("/login")
+    public Result login(@RequestBody UserVo userVO) {
+        ValidatorUtil.validateEntity(userVO);
+        if (!SecurityUtils.getSubject().isAuthenticated()) {
+            UsernamePasswordToken usernamePasswordToken = new UsernamePasswordToken(userVO.getUsername(), userVO.getPassword(), true);
+            try {
+                // shiro楠岃瘉鐢ㄦ埛鍚嶅瘑鐮�
+                SecurityUtils.getSubject().login(usernamePasswordToken);
+                // 鐢熸垚token
+                String token = JwtUtil.createToken(userVO.getUsername(), false);
+                // 灏嗙敤鎴锋埛鍚嶅拰token杩斿洖
+                HashMap<String, String> map = new HashMap<>();
+                map.put("username", userVO.getUsername());
+                map.put("Authorization", token);
+                map.put("role_id", SecurityUtil.getCurrentUser().getRoleId().toString());
+                return Result.success(map);
+            } catch (IncorrectCredentialsException e) {
+                return Result.fail("鐧诲綍瀵嗙爜閿欒");
+            } catch (ExcessiveAttemptsException e) {
+                return Result.fail("鐧诲綍澶辫触娆℃暟杩囧");
+            } catch (LockedAccountException e) {
+                return Result.fail("甯愬彿宸茶閿佸畾");
+            } catch (DisabledAccountException e) {
+                return Result.fail("甯愬彿宸茶绂佺敤");
+            } catch (ExpiredCredentialsException e) {
+                return Result.fail("璇烽噸鏂扮櫥褰�");
+
+            } catch (UnknownAccountException e) {
+                return Result.fail("甯愬彿涓嶅瓨鍦�");
+            } catch (UnauthorizedException e) {
+                return Result.fail("鎮ㄦ病鏈夊緱鍒扮浉搴旂殑鎺堟潈");
+            } catch (Exception e) {
+                e.printStackTrace();
+                return Result.fail("鐧诲綍澶辫触锛侊紒锛�");
+            }
+        }
+        return Result.fail("浣犲凡缁忕櫥褰曚簡");
+    }
+
+    @ApiOperation(value = "娉ㄥ唽鏃舵牎楠岀敤鎴峰悕鏄惁瀛樺湪")
+    @GetMapping("/countUsername")
+    public Result countUsername(String username) {
+        return Result.success(userService.countByUsername(username));
+    }
+}

--
Gitblit v1.8.0