Toggle navigation
Toggle navigation
This project
Loading...
Sign in
jiujian
/
client-customer-order-api
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
zhuyifan
2025-03-17 14:47:09 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
07222dd961a00a7bf86512e9bce34a1cc27b0cd2
07222dd9
1 parent
4d28714b
fix(security): 修复登录拦截器中的权限验证问题
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
22 additions
and
4 deletions
src/main/java/com/infoloop/tianting/intercepter/LoginInterceptor.java
src/main/java/com/infoloop/tianting/intercepter/LoginInterceptor.java
View file @
07222dd
...
...
@@ -6,13 +6,15 @@ import cn.dev33.satoken.exception.SaTokenException;
import
cn.dev33.satoken.stp.StpUtil
;
import
cn.dev33.satoken.strategy.SaStrategy
;
import
cn.hutool.core.convert.Convert
;
import
com.infoloop.rpc.meizhongyiheservice.HospitalStatus
;
import
com.infoloop.tianting.clientcustomerservice.ClientCustomerHospitalRecordHospitalStatusEnum
;
import
com.infoloop.tianting.constant.CommonConstants
;
import
com.infoloop.tianting.context.LoginContextHolder
;
import
com.infoloop.tianting.enums.LoginSourceEnum
;
import
com.infoloop.tianting.exception.ClientEndExceptions
;
import
com.infoloop.tianting.exception.ErrorCodeEnum
;
import
com.infoloop.tianting.model.common.ResponseResult
;
import
com.infoloop.tianting.service.client.ClientCustomerServiceRpcClient
;
import
com.infoloop.tianting.service.client.MeiZhongYiHeServiceClient
;
import
com.infoloop.tianting.service.client.OperatorServiceRpcClient
;
import
com.infoloop.tianting.service.client.WOperatorServiceRpcClient
;
import
com.infoloop.tianting.utils.ResponseUtil
;
...
...
@@ -34,6 +36,7 @@ import java.io.IOException;
public
class
LoginInterceptor
extends
HandlerInterceptorAdapter
{
private
final
ClientCustomerServiceRpcClient
clientCustomerServiceRpcClient
;
private
final
MeiZhongYiHeServiceClient
meiZhongYiHeServiceClient
;
private
final
OperatorServiceRpcClient
operatorServiceRpcClient
;
private
final
WOperatorServiceRpcClient
wOperatorServiceRpcClient
;
...
...
@@ -73,7 +76,20 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
final
var
customer
=
clientCustomerServiceRpcClient
.
getClientCustomerById
(
enterpriseId
,
loginId
);
if
(
customer
==
null
)
{
response
.
setStatus
(
HttpStatus
.
FORBIDDEN
.
value
());
ResponseUtil
.
write
(
response
,
ResponseResult
.
failed
(
ErrorCodeEnum
.
VALIDATE_FAILED
));
ResponseUtil
.
write
(
response
,
ResponseResult
.
failed
(
ErrorCodeEnum
.
FORBIDDEN
));
return
false
;
}
var
record
=
clientCustomerServiceRpcClient
.
getClientCustomerHospitalRecordsByCustomerId
(
customer
.
getResponse
().
getEnterpriseId
(),
customer
.
getResponse
().
getId
());
if
(!
record
.
hasResponse
()
||
record
.
getResponse
().
getHospitalStatus
()
!=
ClientCustomerHospitalRecordHospitalStatusEnum
.
CURRENT
)
{
response
.
setStatus
(
HttpStatus
.
FORBIDDEN
.
value
());
ResponseUtil
.
write
(
response
,
ResponseResult
.
failed
(
ErrorCodeEnum
.
FORBIDDEN
));
return
false
;
}
//还需要去读取HIS系统最新用户住院信息
final
var
hisCustomerHospitalRecord
=
meiZhongYiHeServiceClient
.
getCustomerDetailById
(
customer
.
getResponse
().
getHISCustomerId
(),
record
.
getResponse
().
getContractNo
()).
getCustomerHospitalRecord
();
if
(
hisCustomerHospitalRecord
.
getHospitalStatus
()
!=
HospitalStatus
.
CURRENT
)
{
response
.
setStatus
(
HttpStatus
.
FORBIDDEN
.
value
());
ResponseUtil
.
write
(
response
,
ResponseResult
.
failed
(
ErrorCodeEnum
.
FORBIDDEN
));
return
false
;
}
builder
.
id
(
loginId
).
enterpriseId
(
enterpriseId
).
name
(
customer
.
getResponse
().
getName
()).
openId
(
openId
).
loginSource
(
LoginSourceEnum
.
CUSTOMER
);
...
...
@@ -83,7 +99,7 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
final
var
opeartor
=
operatorServiceRpcClient
.
getCOperatorById
(
loginId
);
if
(
opeartor
==
null
)
{
response
.
setStatus
(
HttpStatus
.
FORBIDDEN
.
value
());
ResponseUtil
.
write
(
response
,
ResponseResult
.
failed
(
ErrorCodeEnum
.
VALIDATE_FAILED
));
ResponseUtil
.
write
(
response
,
ResponseResult
.
failed
(
ErrorCodeEnum
.
FORBIDDEN
));
return
false
;
}
builder
.
id
(
loginId
).
enterpriseId
(
enterpriseId
).
name
(
opeartor
.
getName
()).
loginSource
(
LoginSourceEnum
.
OPERATOR
);
...
...
@@ -92,7 +108,9 @@ public class LoginInterceptor extends HandlerInterceptorAdapter {
final
var
loginId
=
StpUtil
.
getLoginIdAsInt
();
final
var
operator
=
wOperatorServiceRpcClient
.
getWOperatorById
(
loginId
).
getResponse
();
if
(
operator
.
getId
()
==
0
)
{
throw
ClientEndExceptions
.
AuthenticationFailure
.
build
(
ErrorCodeEnum
.
UNAUTHORIZED
.
name
());
response
.
setStatus
(
HttpStatus
.
FORBIDDEN
.
value
());
ResponseUtil
.
write
(
response
,
ResponseResult
.
failed
(
ErrorCodeEnum
.
FORBIDDEN
));
return
false
;
}
builder
.
id
(
loginId
).
enterpriseId
(
enterpriseId
).
name
(
operator
.
getName
()).
loginSource
(
LoginSourceEnum
.
KDS
);
return
true
;
...
...
Please
register
or
login
to post a comment