From 9bf9746397fc6ce88cb75deed24641c4db35fcfd Mon Sep 17 00:00:00 2001 From: tjq Date: Sun, 16 Apr 2023 16:40:52 +0800 Subject: [PATCH] feat: [auth] finished dingtalk login --- .gitignore | 5 ++++- .../auth/jwt/impl/DefaultSecretProvider.java | 2 +- .../server/auth/jwt/impl/JwtServiceImpl.java | 8 +++---- .../login/impl/DingTalkBizLoginService.java | 17 ++++++++++----- .../auth/service/PowerJobAuthServiceImpl.java | 21 ++++++++++++------- 5 files changed, 34 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index af404450..0a4f554c 100644 --- a/.gitignore +++ b/.gitignore @@ -42,4 +42,7 @@ build/ */.phd */.txt */.trc -powerjob-data/ \ No newline at end of file +powerjob-data/ + +### local test ### +application-local.properties \ No newline at end of file diff --git a/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/jwt/impl/DefaultSecretProvider.java b/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/jwt/impl/DefaultSecretProvider.java index d3faf327..0a26a557 100644 --- a/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/jwt/impl/DefaultSecretProvider.java +++ b/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/jwt/impl/DefaultSecretProvider.java @@ -13,6 +13,6 @@ import tech.powerjob.server.auth.jwt.SecretProvider; public class DefaultSecretProvider implements SecretProvider { @Override public String fetchSecretKey() { - return "ZQQ"; + return "ZQQZJ"; } } diff --git a/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/jwt/impl/JwtServiceImpl.java b/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/jwt/impl/JwtServiceImpl.java index c344276a..6c7f1f38 100644 --- a/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/jwt/impl/JwtServiceImpl.java +++ b/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/jwt/impl/JwtServiceImpl.java @@ -37,10 +37,10 @@ public class JwtServiceImpl implements JwtService { * GoodSong */ private static final String BASE_SECURITY = - "死去元知万事空" + - "但悲不见九州同" + - "王师北定中原日" + - "家祭无忘告乃翁" + "CengMengXiangZhangJianZouTianYa" + + "KanYiKanShiJieDeFanHua" + + "NianShaoDeXinZongYouXieQingKuang" + + "RuJinWoSiHaiWeiJia" ; @Override diff --git a/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/login/impl/DingTalkBizLoginService.java b/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/login/impl/DingTalkBizLoginService.java index d8ff7752..36b31b46 100644 --- a/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/login/impl/DingTalkBizLoginService.java +++ b/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/login/impl/DingTalkBizLoginService.java @@ -32,22 +32,29 @@ import java.nio.charset.StandardCharsets; @Service public class DingTalkBizLoginService implements BizLoginService { + /* + 配置示例 + oms.auth.dingtalk.appkey=dinggzqqzqqzqqzqq + oms.auth.dingtalk.appSecret=iY-FS8mzqqzqq_xEizqqzqqzqqzqqzqqzqqYEbkZOal + oms.auth.dingtalk.callbackUrl=http://localhost:7700/auth/loginCallback + */ + /** * 钉钉应用 AppKey */ - @Value("${oms.auth.dingtalk.appkey}") + @Value("${oms.auth.dingtalk.appkey:#{null}}") private String dingTalkAppKey; /** * 钉钉应用 AppSecret */ - @Value("${oms.auth.dingtalk.appSecret}") + @Value("${oms.auth.dingtalk.appSecret:#{null}}") private String dingTalkAppSecret; /** * 回调地址,powerjob-server 地址 + /user/auth - * 比如本地调试时为 LocalDemoCallbackUrl - * 部署后则为 demoCallBackUrl + * 比如本地调试时为 LocalDemoCallbackUrl + * 部署后则为 demoCallBackUrl */ - @Value("${oms.auth.dingtalk.callbackUrl}") + @Value("${oms.auth.dingtalk.callbackUrl:#{null}}") private String dingTalkCallbackUrl; private static final String DING_TALK = "DingTalk"; diff --git a/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/service/PowerJobAuthServiceImpl.java b/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/service/PowerJobAuthServiceImpl.java index 6f2b97a8..0460fefa 100644 --- a/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/service/PowerJobAuthServiceImpl.java +++ b/powerjob-server/powerjob-server-auth/src/main/java/tech/powerjob/server/auth/service/PowerJobAuthServiceImpl.java @@ -71,19 +71,24 @@ public class PowerJobAuthServiceImpl implements PowerJobAuthService { final BizUser bizUser = loginService.login(loginContext); String dbUserName = String.format("%s_%s", loginType, bizUser.getUsername()); - final Optional powerJobUserOpt = userInfoRepository.findByUsername(dbUserName); + Optional powerJobUserOpt = userInfoRepository.findByUsername(dbUserName); - PowerJobUser ret = new PowerJobUser(); - // 存在则响应 PowerJob 用户,否则同步在 PowerJob 用户库创建该用户 - if (powerJobUserOpt.isPresent()) { - final UserInfoDO dbUser = powerJobUserOpt.get(); - BeanUtils.copyProperties(dbUser, ret); - ret.setUsername(dbUserName); - } else { + // 如果不存在用户,先同步创建用户 + if (!powerJobUserOpt.isPresent()) { UserInfoDO newUser = new UserInfoDO(); newUser.setUsername(dbUserName); Loggers.WEB.info("[PowerJobLoginService] sync user to PowerJobUserSystem: {}", dbUserName); userInfoRepository.saveAndFlush(newUser); + + powerJobUserOpt = userInfoRepository.findByUsername(dbUserName); + } + + PowerJobUser ret = new PowerJobUser(); + + // 理论上 100% 存在 + if (powerJobUserOpt.isPresent()) { + final UserInfoDO dbUser = powerJobUserOpt.get(); + BeanUtils.copyProperties(dbUser, ret); ret.setUsername(dbUserName); }