Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
X
xyqb-user2
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
head_group
xyqb-user2
Commits
07cb37a7
Commit
07cb37a7
authored
Jul 06, 2023
by
王亮
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update password logic.
parent
0d3ac973
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
63 additions
and
12 deletions
+63
-12
LoginReq.java
...n/java/cn/quantgroup/xyqb/controller/req/v2/LoginReq.java
+3
-0
LoginBean.java
src/main/java/cn/quantgroup/xyqb/model/LoginBean.java
+2
-0
LoginContext.java
...main/java/cn/quantgroup/xyqb/service/v2/LoginContext.java
+40
-1
PhonePasswordLoginStrategy.java
...uantgroup/xyqb/service/v2/PhonePasswordLoginStrategy.java
+18
-11
No files found.
src/main/java/cn/quantgroup/xyqb/controller/req/v2/LoginReq.java
View file @
07cb37a7
...
...
@@ -10,4 +10,7 @@ public class LoginReq {
@NotNull
(
message
=
"登录类型必填"
)
private
Integer
type
;
private
JSONObject
data
;
//是否需要用户资料
private
boolean
attachInfo
;
}
src/main/java/cn/quantgroup/xyqb/model/LoginBean.java
View file @
07cb37a7
...
...
@@ -10,4 +10,6 @@ public class LoginBean extends AuthBean{
private
String
openId
;
private
String
unionId
;
private
UserInfo
info
;
private
Integer
tenantId
;
}
src/main/java/cn/quantgroup/xyqb/service/v2/LoginContext.java
View file @
07cb37a7
package
cn
.
quantgroup
.
xyqb
.
service
.
v2
;
import
cn.quantgroup.xyqb.controller.req.v2.LoginReq
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.UserInfoEntity
;
import
cn.quantgroup.xyqb.entity.UserTag
;
import
cn.quantgroup.xyqb.entity.WechatUserInfo
;
import
cn.quantgroup.xyqb.event.UserLoginEvent
;
import
cn.quantgroup.xyqb.model.LoginBean
;
import
cn.quantgroup.xyqb.model.UserInfo
;
import
cn.quantgroup.xyqb.model.session.SessionStruct
;
import
cn.quantgroup.xyqb.model.v2.login.BaseLoginParam
;
import
cn.quantgroup.xyqb.repository.IUserInfoRepository
;
import
cn.quantgroup.xyqb.repository.IUserRepository
;
import
cn.quantgroup.xyqb.service.wechat.IWechatService
;
import
cn.quantgroup.xyqb.session.XyqbSessionContextHolder
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.context.ApplicationEventPublisher
;
import
org.springframework.stereotype.Service
;
...
...
@@ -19,9 +27,17 @@ import java.util.Map;
public
class
LoginContext
{
private
final
Map
<
Integer
,
LoginStrategy
>
loginStrategyMap
=
new
HashMap
<>();
private
final
ApplicationEventPublisher
applicationEventPublisher
;
private
final
IWechatService
wechatService
;
public
LoginContext
(
List
<
LoginStrategy
>
loginStrategies
,
ApplicationEventPublisher
applicationEventPublisher
)
{
private
final
IUserRepository
userRepository
;
private
final
IUserInfoRepository
userInfoRepository
;
public
LoginContext
(
List
<
LoginStrategy
>
loginStrategies
,
ApplicationEventPublisher
applicationEventPublisher
,
IWechatService
wechatService
,
IUserRepository
userRepository
,
IUserInfoRepository
userInfoRepository
)
{
this
.
applicationEventPublisher
=
applicationEventPublisher
;
this
.
wechatService
=
wechatService
;
this
.
userRepository
=
userRepository
;
this
.
userInfoRepository
=
userInfoRepository
;
loginStrategies
.
forEach
(
i
->
loginStrategyMap
.
put
(
i
.
getType
(),
i
));
}
...
...
@@ -34,6 +50,7 @@ public class LoginContext {
//第二步、执行登录操作
LoginBean
loginBean
=
loginStrategy
.
login
(
loginParam
);
//第三步、发送登录成功消息
SessionStruct
sessionStruct
=
XyqbSessionContextHolder
.
getXSession
();
...
...
@@ -46,6 +63,28 @@ public class LoginContext {
UserLoginEvent
userLoginEvent
=
new
UserLoginEvent
(
this
,
userTag
,
geetestId
);
applicationEventPublisher
.
publishEvent
(
userLoginEvent
);
//第四步,补充相关信息
if
(
loginBean
.
getUserId
()
!=
null
)
{
User
user
=
userRepository
.
findByIdAndTenantId
(
loginBean
.
getUserId
(),
loginBean
.
getTenantId
());
if
(
StringUtils
.
isEmpty
(
loginBean
.
getOpenId
()))
{
List
<
WechatUserInfo
>
wechatUserInfos
=
wechatService
.
queryListByUserId
(
user
.
getId
(),
user
.
getTenantId
());
if
(
CollectionUtils
.
isNotEmpty
(
wechatUserInfos
))
{
wechatUserInfos
.
stream
().
filter
(
i
->
sessionStruct
.
getRegisteredFrom
().
equals
(
i
.
getRegisteredFrom
())).
forEach
(
i
->
{
loginBean
.
setOpenId
(
i
.
getOpenId
());
loginBean
.
setUnionId
(
i
.
getUnionId
());
});
}
}
if
(
loginReq
.
isAttachInfo
())
{
UserInfoEntity
userInfoEntity
=
userInfoRepository
.
findByUserIdAndTenantId
(
loginBean
.
getUserId
(),
loginBean
.
getTenantId
());
loginBean
.
setInfo
(
new
UserInfo
(
user
,
userInfoEntity
));
}
}
return
loginBean
;
}
}
src/main/java/cn/quantgroup/xyqb/service/v2/PhonePasswordLoginStrategy.java
View file @
07cb37a7
...
...
@@ -3,6 +3,7 @@ package cn.quantgroup.xyqb.service.v2;
import
cn.quantgroup.xyqb.constant.enums.LoginType
;
import
cn.quantgroup.xyqb.controller.req.v2.LoginReq
;
import
cn.quantgroup.xyqb.entity.User
;
import
cn.quantgroup.xyqb.entity.WechatUserInfo
;
import
cn.quantgroup.xyqb.exception.BizException
;
import
cn.quantgroup.xyqb.exception.BizExceptionEnum
;
import
cn.quantgroup.xyqb.model.AuthBean
;
...
...
@@ -11,17 +12,20 @@ import cn.quantgroup.xyqb.model.LoginProperties;
import
cn.quantgroup.xyqb.model.session.SessionStruct
;
import
cn.quantgroup.xyqb.model.v2.login.BaseLoginParam
;
import
cn.quantgroup.xyqb.model.v2.login.PhonePasswordLoginParam
;
import
cn.quantgroup.xyqb.repository.IGeetestLogRepository
;
import
cn.quantgroup.xyqb.repository.IUserRepository
;
import
cn.quantgroup.xyqb.service.captcha.IGeetestLogService
;
import
cn.quantgroup.xyqb.service.session.ISessionService
;
import
cn.quantgroup.xyqb.service.user.ILockIpv4Service
;
import
cn.quantgroup.xyqb.service.wechat.IWechatService
;
import
cn.quantgroup.xyqb.session.XyqbSessionContextHolder
;
import
cn.quantgroup.xyqb.util.BctyptPasswordUtil
;
import
cn.quantgroup.xyqb.util.PasswordUtil
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang.StringUtils
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
/**
* 账号密码登录
*/
...
...
@@ -32,13 +36,13 @@ public class PhonePasswordLoginStrategy implements LoginStrategy {
private
final
ILockIpv4Service
lockIpv4Service
;
private
final
ISessionService
sessionService
;
private
final
IGeetestLogService
geetestLogService
;
public
PhonePasswordLoginStrategy
(
IUserRepository
userRepository
,
ILockIpv4Service
lockIpv4Service
,
ISessionService
sessionService
,
IGeetestLogService
geetestLogService
)
{
public
PhonePasswordLoginStrategy
(
IUserRepository
userRepository
,
ILockIpv4Service
lockIpv4Service
,
ISessionService
sessionService
)
{
this
.
userRepository
=
userRepository
;
this
.
lockIpv4Service
=
lockIpv4Service
;
this
.
sessionService
=
sessionService
;
this
.
geetestLogService
=
geetestLogService
;
}
@Override
...
...
@@ -90,17 +94,20 @@ public class PhonePasswordLoginStrategy implements LoginStrategy {
//尝试解锁
lockIpv4Service
.
unLockPhone
(
phonePasswordLoginParam
.
getPhone
());
LoginProperties
loginProperties
=
new
LoginProperties
(
1
,
Long
.
valueOf
(
sessionStruct
.
getRegisteredFrom
()
),
sessionStruct
.
getTenantId
());
LoginProperties
loginProperties
=
new
LoginProperties
(
1
,
sessionStruct
.
getRegisteredFrom
(
),
sessionStruct
.
getTenantId
());
AuthBean
authBean
=
sessionService
.
createSession
(
user
,
loginProperties
,
LoginType
.
ACCOUNTPASSWORD
.
ordinal
(),
sessionStruct
.
getTenantId
());
LoginBean
loginBean
=
new
LoginBean
();
if
(
authBean
!=
null
)
{
authBean
.
setRegister
(
false
);
loginBean
.
setToken
(
authBean
.
getToken
());
loginBean
.
setPhoneNo
(
authBean
.
getPhoneNo
());
loginBean
.
setUuid
(
authBean
.
getUuid
());
loginBean
.
setHasPassword
(
authBean
.
isHasPassword
());
loginBean
.
setRegister
(
authBean
.
getRegister
());
loginBean
.
setUserId
(
user
.
getId
());
loginBean
.
setTenantId
(
user
.
getTenantId
());
}
//TODO:统一处理行为验证逻辑
// if (geetestLogId != null) {
// geetestLogService.updateByUidGeetestLog(geetestLogId, user.getId());
// }
return
null
;
return
loginBean
;
}
@Override
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment