于俊龙 2 weeks ago
parent
commit
8666981f09
16 changed files with 404 additions and 33 deletions
  1. 7 0
      farm-common-biz/src/main/java/jp/yamoto/farm/common/biz/domain/bo/VerifyCodeParamBo.java
  2. 62 0
      farm-common-biz/src/main/java/jp/yamoto/farm/common/biz/domain/entity/BssUserAuthCode.java
  3. 37 0
      farm-common-biz/src/main/java/jp/yamoto/farm/common/biz/domain/vo/UserInfoVo.java
  4. 15 0
      farm-common-biz/src/main/java/jp/yamoto/farm/common/biz/mapper/BssUserAuthCodeMapper.java
  5. 11 0
      farm-common-biz/src/main/java/jp/yamoto/farm/common/biz/service/IBssUserAuthCodeService.java
  6. 4 4
      farm-common/src/main/java/jp/yamoto/farm/common/config/SecurityConfig.java
  7. 1 1
      farm-common/src/main/java/jp/yamoto/farm/common/constant/Constants.java
  8. 1 1
      farm-common/src/main/java/jp/yamoto/farm/common/core/domain/AjaxResult.java
  9. 1 1
      farm-common/src/main/java/jp/yamoto/farm/common/exception/user/UserNotExistsException.java
  10. 1 1
      farm-common/src/main/java/jp/yamoto/farm/common/exception/user/UserPasswordNotMatchException.java
  11. 1 1
      farm-common/src/main/java/jp/yamoto/farm/common/exception/user/UserPasswordRetryLimitExceedException.java
  12. 194 0
      farm-common/src/main/java/jp/yamoto/farm/common/utils/ValueUtils.java
  13. 59 19
      farm-crm/src/main/java/jp/yamoto/farm/crm/web/controller/system/SysLoginController.java
  14. 1 1
      farm-sankin-biz/src/main/java/jp/yamoto/farm/sankin/biz/auth/AuthLoginService.java
  15. 1 1
      farm-sankin-biz/src/main/java/jp/yamoto/farm/sankin/biz/auth/UserDetailsServiceImpl.java
  16. 8 3
      farm-sankin/src/main/java/jp/yamoto/farm/sankin/web/controller/AuthController.java

+ 7 - 0
farm-common-biz/src/main/java/jp/yamoto/farm/common/biz/domain/bo/VerifyCodeParamBo.java

@@ -0,0 +1,7 @@
+package jp.yamoto.farm.common.biz.domain.bo;
+
+/**
+ * ユーザー認証
+ */
+public class VerifyCodeParamBo {
+}

+ 62 - 0
farm-common-biz/src/main/java/jp/yamoto/farm/common/biz/domain/entity/BssUserAuthCode.java

@@ -0,0 +1,62 @@
+package jp.yamoto.farm.common.biz.domain.entity;
+
+import jp.yamoto.farm.common.core.domain.BaseEntity;
+import lombok.Data;
+
+/**
+ * ユーザー認証情報
+ *
+ * @author nextosd
+ */
+@Data
+public class BssUserAuthCode extends BaseEntity {
+
+    /**
+     * ID
+     */
+    private String id;
+    /**
+     * 認証方法:0:SMS 1:メール
+     */
+    private Integer ninshoFlg;
+    /**
+     * メールアドレス
+     */
+    private String mailAddress;
+    /**
+     * 電話番号
+     */
+    private String tenwabango;
+    /**
+     * 農家ID
+     */
+    private String nokaCd;
+    /**
+     * 種類:0:CRM 1:農家
+     */
+    private Integer shurui;
+    /**
+     * 開始時間
+     */
+    private String kaishiJikan;
+    /**
+     * 終了時間
+     */
+    private String shuryoJikan;
+    /**
+     * 認証コード
+     */
+    private String ninshoCode;
+    /**
+     * パスワード
+     */
+    private String userPwd;
+    /**
+     * 廃止フラグ: 1:廃止 0:有効
+     */
+    private String haisiFlg;
+    /**
+     * Version
+     */
+    private Integer version;
+}

+ 37 - 0
farm-common-biz/src/main/java/jp/yamoto/farm/common/biz/domain/vo/UserInfoVo.java

@@ -0,0 +1,37 @@
+package jp.yamoto.farm.common.biz.domain.vo;
+
+import lombok.Data;
+
+import java.util.Set;
+
+/**
+ * ログインユーザー
+ */
+@Data
+public class UserInfoVo {
+
+    /**
+     * ユーザID
+     */
+    private String userId;
+
+    /**
+     * ユーザ名
+     */
+    private String userName;
+
+    /**
+     * 初回ログイン
+     */
+    private boolean isFirstLogin;
+
+    /**
+     * Role Id
+     */
+    private String role;
+
+    /**
+     * 権限List
+     */
+    private Set<String> permissions;
+}

+ 15 - 0
farm-common-biz/src/main/java/jp/yamoto/farm/common/biz/mapper/BssUserAuthCodeMapper.java

@@ -0,0 +1,15 @@
+package jp.yamoto.farm.common.biz.mapper;
+
+import jp.yamoto.farm.common.biz.domain.entity.BssUserAuthCode;
+
+/**
+ * ユーザー認証情報
+ */
+public interface BssUserAuthCodeMapper {
+
+    /**
+     * ユーザー認証情報の追加
+     * @param bssUserAuthCode
+     */
+     void insert(BssUserAuthCode bssUserAuthCode);
+}

+ 11 - 0
farm-common-biz/src/main/java/jp/yamoto/farm/common/biz/service/IBssUserAuthCodeService.java

@@ -0,0 +1,11 @@
+package jp.yamoto.farm.common.biz.service;
+
+import jp.yamoto.farm.common.biz.domain.entity.BssUserAuthCode;
+
+/**
+ * ユーザー認証情報サービス
+ */
+public interface IBssUserAuthCodeService {
+
+    void insert(BssUserAuthCode bssUserAuthCode);
+}

+ 4 - 4
farm-common/src/main/java/jp/yamoto/farm/common/config/SecurityConfig.java

@@ -112,9 +112,9 @@ public class SecurityConfig {
 
                     // ログイン、登録、キャプチャ画像には匿名アクセスを許可
                     List<String> whiteUrlList = AppConfig.getWhiteUrlList();
-                    whiteUrlList.add("/login");
-                    whiteUrlList.add("/register");
-                    whiteUrlList.add("/captchaImage");
+                    whiteUrlList.add("/api/auth/login");
+                    whiteUrlList.add("/api/auth/register");
+                    whiteUrlList.add("/api/auth/captchaImage");
                     whiteUrlList.forEach(url -> requests.requestMatchers(url).permitAll());
 
                     // 静的リソースには匿名アクセスを許可
@@ -123,7 +123,7 @@ public class SecurityConfig {
                             .anyRequest().authenticated();
                 })
                 // ログアウトフィルターを追加
-                .logout(logout -> logout.logoutUrl("/logout").logoutSuccessHandler(logoutSuccessHandler))
+                .logout(logout -> logout.logoutUrl("/api/auth/logout").logoutSuccessHandler(logoutSuccessHandler))
                 // JWTフィルターを追加
                 .addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class)
                 // CORSフィルターを追加

+ 1 - 1
farm-common/src/main/java/jp/yamoto/farm/common/constant/Constants.java

@@ -98,7 +98,7 @@ public class Constants
     /**
      * トークン
      */
-    public static final String TOKEN = "token";
+    public static final String TOKEN = "accessToken";
 
     /**
      * トークン接頭辞

+ 1 - 1
farm-common/src/main/java/jp/yamoto/farm/common/core/domain/AjaxResult.java

@@ -18,7 +18,7 @@ public class AjaxResult extends HashMap<String, Object> {
     /**
      * 戻り内容
      */
-    public static final String MSG_TAG = "msg";
+    public static final String MSG_TAG = "message";
     /**
      * データオブジェクト
      */

+ 1 - 1
farm-common/src/main/java/jp/yamoto/farm/common/exception/user/UserNotExistsException.java

@@ -11,6 +11,6 @@ public class UserNotExistsException extends UserException
 
     public UserNotExistsException()
     {
-        super("user.not.exists", null);
+        super("E0050", null);
     }
 }

+ 1 - 1
farm-common/src/main/java/jp/yamoto/farm/common/exception/user/UserPasswordNotMatchException.java

@@ -11,6 +11,6 @@ public class UserPasswordNotMatchException extends UserException
 
     public UserPasswordNotMatchException()
     {
-        super("user.password.not.match", null);
+        super("E0004", null);
     }
 }

+ 1 - 1
farm-common/src/main/java/jp/yamoto/farm/common/exception/user/UserPasswordRetryLimitExceedException.java

@@ -11,6 +11,6 @@ public class UserPasswordRetryLimitExceedException extends UserException
 
     public UserPasswordRetryLimitExceedException(int retryLimitCount, int lockTime)
     {
-        super("user.password.retry.limit.exceed", new Object[] { retryLimitCount, lockTime });
+        super("E0053", new Object[] { retryLimitCount, lockTime });
     }
 }

+ 194 - 0
farm-common/src/main/java/jp/yamoto/farm/common/utils/ValueUtils.java

@@ -0,0 +1,194 @@
+package jp.yamoto.farm.common.utils;
+
+import java.util.*;
+
+public class ValueUtils {
+
+    public static boolean isEmpty(Object data) {
+        if (data == null) {
+            return true;
+
+        } else if (data instanceof String || data instanceof StringBuffer) {
+            String str = data.toString().trim();
+            return str.isEmpty() || str.equalsIgnoreCase("null");
+
+        } else if (data instanceof Object[]) {
+            return ((Object[]) data).length == 0;
+
+        } else if (data instanceof Collection<?>) {
+            return ((Collection<?>) data).isEmpty();
+
+        } else if (data instanceof Map<?, ?>) {
+            return ((Map<?, ?>) data).isEmpty();
+        }
+
+        return false;
+    }
+
+    public static boolean isNotEmpty(Object data) {
+        return !isEmpty(data);
+    }
+
+    public static boolean isEqual(Object a, Object b) {
+        if (a == null && b == null) {
+            return true;
+
+        } else if (a == null || b == null) {
+            return false;
+
+        } else if (a.equals(b)) {
+            return true;
+
+        } else if (a instanceof List && b instanceof List) {
+            List<Object> aList = (List<Object>) a;
+            List<Object> bList = (List<Object>) b;
+
+            if (aList.isEmpty() && bList.isEmpty()) {
+                return true;
+            } else if (aList.size() != bList.size()) {
+                return false;
+            }
+
+            int i = 0;
+            for (Object aObj : aList) {
+                if (isNotEqual(aObj, bList.get(i++))) {
+                    return false;
+                }
+            }
+
+            return true;
+        }
+
+        return false;
+    }
+
+    public static boolean isNotEqual(Object a, Object b) {
+        return !isEqual(a, b);
+    }
+
+    public static boolean isInclude(Object value, Object... checkValues) {
+        for (Object checkValue : checkValues) {
+            if (isEqual(value, checkValue)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    public static boolean isInclude(Object value, String... checkValues) {
+        for (Object checkValue : checkValues) {
+            if (isEqual(value, checkValue)) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    public static Map<String, String> newStringMap(String keys, String... values) {
+        Map<String, String> map = new HashMap<String, String>(values == null ? 3 : values.length);
+
+        if (!isEmpty(keys) && !isEmpty(values)) {
+            String[] keyArr = keys.split(",");
+
+            if (keyArr.length != values.length) {
+                throw new IllegalArgumentException("keys count and values count mismatch!");
+            }
+
+            for (int i = 0; i < keyArr.length; i++) {
+                map.put(keyArr[i], values[i]);
+            }
+        }
+
+        return map;
+    }
+
+    public static Map<String, Object> merge(Map<String, Object> a, Map<String, Object> b) {
+        if (a == null && b == null) {
+            return null;
+        } else if (a == null && b != null) {
+            return b;
+        } else if (a != null && b == null) {
+            return a;
+        } else {
+            a.putAll(b);
+            return a;
+        }
+    }
+
+    public static Map<String, Object> newMap(String keys, Object... values) {
+        Map<String, Object> map = new HashMap<String, Object>(values == null ? 3 : values.length);
+
+        if (!isEmpty(keys) && !isEmpty(values)) {
+            String[] keyArr = keys.split(",");
+
+            if (keyArr.length != values.length) {
+                throw new IllegalArgumentException("keys count and values count mismatch!");
+            }
+
+            for (int i = 0; i < keyArr.length; i++) {
+                map.put(keyArr[i], values[i]);
+            }
+        }
+
+        return map;
+    }
+
+    /**
+     * List  values
+     *
+     * @param values
+     * @return
+     */
+    public static List<Object> newList(Object... values) {
+        List<Object> list = new ArrayList<Object>(values == null ? 3 : values.length);
+        for (Object value : values) {
+            list.add(value);
+        }
+
+        return list;
+    }
+
+    /**
+     * List  values
+     *
+     * @param values
+     * @return
+     */
+    public static List<String> newStringList(String... values) {
+        List<String> list = new ArrayList<String>(values == null ? 3 : values.length);
+        for (String value : values) {
+            list.add(value);
+        }
+
+        return list;
+    }
+
+    public static String listToString(List<String> list) {
+        return listToString(list, ",");
+    }
+
+    public static String listToString(List<String> list, String delimiter) {
+        return listToString(list, delimiter, false);
+    }
+
+
+    public static String listToString(List<String> list, String delimiter, boolean removeDuplication) {
+        StringJoiner value = new StringJoiner(delimiter);
+
+        if (removeDuplication) {
+            Set<String> set = new HashSet<String>();
+            for (String str : list)
+                set.add(str);
+
+            for (String str : set)
+                value.add(str);
+        } else {
+            for (String str : list)
+                value.add(str);
+        }
+
+        return value.toString();
+    }
+}

+ 59 - 19
farm-crm/src/main/java/jp/yamoto/farm/crm/web/controller/system/SysLoginController.java

@@ -3,6 +3,7 @@ package jp.yamoto.farm.crm.web.controller.system;
 import java.util.List;
 import java.util.Set;
 
+import jp.yamoto.farm.common.biz.domain.vo.UserInfoVo;
 import jp.yamoto.farm.common.constant.Constants;
 import jp.yamoto.farm.common.core.domain.AjaxResult;
 import jp.yamoto.farm.common.core.domain.entity.SysMenu;
@@ -12,13 +13,11 @@ import jp.yamoto.farm.common.core.domain.model.LoginUser;
 import jp.yamoto.farm.common.core.service.TokenService;
 import jp.yamoto.farm.common.utils.ConvertUtils;
 import jp.yamoto.farm.common.utils.SecurityUtils;
+import jp.yamoto.farm.common.utils.ValueUtils;
 import jp.yamoto.farm.crm.biz.sys.security.SysLoginService;
 import jp.yamoto.farm.crm.biz.sys.security.SysPermissionService;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import jp.yamoto.farm.crm.biz.sys.service.ISysMenuService;
 
 /**
@@ -27,6 +26,7 @@ import jp.yamoto.farm.crm.biz.sys.service.ISysMenuService;
  * @author nextosd
  */
 @RestController
+@RequestMapping("/api/auth")
 public class SysLoginController
 {
     @Autowired
@@ -50,11 +50,9 @@ public class SysLoginController
     @PostMapping("/login")
     public AjaxResult login(@RequestBody LoginBody loginBody)
     {
-        AjaxResult ajax = AjaxResult.success();
         // Token
         String token = loginService.login(loginBody.getUsername(), loginBody.getPassword());
-        ajax.put(Constants.TOKEN, token);
-        return ajax;
+        return AjaxResult.success(ValueUtils.newMap(Constants.TOKEN, token));
     }
 
     /**
@@ -62,31 +60,73 @@ public class SysLoginController
      *
      * @return ユーザー情報
      */
-    @GetMapping("getUserInfo")
+    @GetMapping("/userInfo")
     public AjaxResult getInfo() {
         LoginUser<SysUser> loginUser = SecurityUtils.getLoginUser();
         SysUser user = loginUser.getUser();
         // ロール集合
-        Set<String> roles = permissionService.getRolePermission(user);
+       // Set<String> roles = permissionService.getRolePermission(user);
         // 権限集合
-        Set<String> permissions = permissionService.getMenuPermission(user);
-        if (!loginUser.getPermissions().equals(permissions)) {
-            loginUser.setPermissions(permissions);
-            tokenService.refreshToken(loginUser);
-        }
-        AjaxResult ajax = AjaxResult.success();
-        ajax.put("user", user);
-        ajax.put("roles", roles);
-        ajax.put("permissions", permissions);
+       // Set<String> permissions = permissionService.getMenuPermission(user);
+       // if (!loginUser.getPermissions().equals(permissions)) {
+       //     loginUser.setPermissions(permissions);
+       //     tokenService.refreshToken(loginUser);
+       // }
+
+        UserInfoVo userInfoVo = new UserInfoVo();
+        userInfoVo.setUserName(user.getNickName());
+        userInfoVo.setUserId(user.getUserName());
+        userInfoVo.setRole("SUPER_ADMIN");
+        AjaxResult ajax = AjaxResult.success(userInfoVo);
+
         return ajax;
     }
 
     /**
+     * ユーザー情報を取得
+     *
+     * @return ユーザー情報
+     */
+    @PutMapping("/profile")
+    public AjaxResult updateInfo(SysUser user) {
+
+
+        UserInfoVo userInfoVo = new UserInfoVo();
+        userInfoVo.setUserName(user.getNickName());
+        userInfoVo.setUserId(user.getUserName());
+
+        AjaxResult ajax = AjaxResult.success(userInfoVo);
+
+        return ajax;
+    }
+
+    /**
+     * ルーティング情報の取得
+     *
+     * @return ルーティング情報
+     */
+    @GetMapping("/permissions")
+    public AjaxResult getPermissions()
+    {
+        LoginUser<SysUser> loginUser = SecurityUtils.getLoginUser();
+        SysUser user = loginUser.getUser();
+        // ロール集合
+        // Set<String> roles = permissionService.getRolePermission(user);
+        // 権限集合
+         Set<String> permissions = permissionService.getMenuPermission(user);
+        // if (!loginUser.getPermissions().equals(permissions)) {
+        //     loginUser.setPermissions(permissions);
+        //     tokenService.refreshToken(loginUser);
+        // }
+       return AjaxResult.success(permissions);
+    }
+
+    /**
      * ルーティング情報の取得
      * 
      * @return ルーティング情報
      */
-    @GetMapping("getRouters")
+    @GetMapping("/route")
     public AjaxResult getRouters()
     {
         Long userId = SecurityUtils.getUserId();

+ 1 - 1
farm-sankin-biz/src/main/java/jp/yamoto/farm/sankin/biz/auth/AuthLoginService.java

@@ -1,4 +1,4 @@
-package jp.yamoto.farm.sankin.biz.auth;
+package jp.yamoto.farm.sankin.biz.auth.service;
 
 import jakarta.annotation.Resource;
 import jp.yamoto.farm.common.config.AppConfig;

+ 1 - 1
farm-sankin-biz/src/main/java/jp/yamoto/farm/sankin/biz/auth/UserDetailsServiceImpl.java

@@ -1,4 +1,4 @@
-package jp.yamoto.farm.sankin.biz.auth;
+package jp.yamoto.farm.sankin.biz.auth.service;
 
 import jp.yamoto.farm.common.core.domain.entity.MastNokaLoginInfo;
 import jp.yamoto.farm.common.core.domain.model.LoginUser;

+ 8 - 3
farm-sankin/src/main/java/jp/yamoto/farm/sankin/web/controller/AuthController.java

@@ -1,12 +1,13 @@
 package jp.yamoto.farm.sankin.web.controller;
 
+import jp.yamoto.farm.common.biz.domain.vo.UserInfoVo;
 import jp.yamoto.farm.common.constant.Constants;
 import jp.yamoto.farm.common.core.domain.AjaxResult;
 import jp.yamoto.farm.common.core.domain.entity.MastNokaLoginInfo;
 import jp.yamoto.farm.common.core.domain.model.LoginBody;
 import jp.yamoto.farm.common.core.domain.model.LoginUser;
 import jp.yamoto.farm.common.utils.SecurityUtils;
-import jp.yamoto.farm.sankin.biz.auth.AuthLoginService;
+import jp.yamoto.farm.sankin.biz.auth.service.AuthLoginService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -58,8 +59,12 @@ public class AuthController
         LoginUser<MastNokaLoginInfo> loginUser = SecurityUtils.getLoginUser();
         MastNokaLoginInfo user = loginUser.getUser();
 
-        AjaxResult ajax = AjaxResult.success();
-        ajax.put("user", user);
+        UserInfoVo userInfoVo = new UserInfoVo();
+        userInfoVo.setUserName(user.getNokaMei());
+        userInfoVo.setUserId(user.getNokaCd());
+
+        AjaxResult ajax = AjaxResult.success(userInfoVo);
+
         return ajax;
     }