fix: user login type error
CI / changes (push) Successful in 38s
CI / ad (push) Successful in 31s
CI / admin (push) Successful in 20s
CI / bff (push) Successful in 17s
CI / chore (push) Successful in 23s
CI / equipment (push) Successful in 17s
CI / express (push) Successful in 18s
CI / factory (push) Successful in 17s
CI / message (push) Successful in 15s
CI / order (push) Successful in 18s
CI / payment (push) Successful in 16s
CI / product (push) Successful in 16s
CI / record (push) Successful in 15s
CI / sale (push) Successful in 17s
CI / support (push) Successful in 17s
CI / task (push) Successful in 17s
CI / user (push) Successful in 18s
CI / wecom (push) Successful in 19s
CI / changes (push) Successful in 38s
CI / ad (push) Successful in 31s
CI / admin (push) Successful in 20s
CI / bff (push) Successful in 17s
CI / chore (push) Successful in 23s
CI / equipment (push) Successful in 17s
CI / express (push) Successful in 18s
CI / factory (push) Successful in 17s
CI / message (push) Successful in 15s
CI / order (push) Successful in 18s
CI / payment (push) Successful in 16s
CI / product (push) Successful in 16s
CI / record (push) Successful in 15s
CI / sale (push) Successful in 17s
CI / support (push) Successful in 17s
CI / task (push) Successful in 17s
CI / user (push) Successful in 18s
CI / wecom (push) Successful in 19s
This commit is contained in:
+2
-2
@@ -90,13 +90,13 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
// Login LoginUser 所有的登录 加上服务名:id
|
||||
// %s 为,admin,user ,...
|
||||
Login = "login:service:%s:token:"
|
||||
LoginKey = "login:service:%s:info:"
|
||||
LoginRefreshKey = "login:service:%s:refresh:"
|
||||
LoginTypeAdmin = "admin"
|
||||
LoginTypeUser = "user"
|
||||
LoginTypeSale = "sale"
|
||||
LoginTypeStore = "store"
|
||||
|
||||
CodeKey = "code:"
|
||||
)
|
||||
|
||||
@@ -236,7 +236,7 @@ func issueLoginToken(ctx context.Context, jwtAuth *config.JWTAuth, saleSvcName s
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if st := setLogin(jwtAuth, ret.AccessToken, ret.RefreshToken, session); st.Code != utils.Ok.Code {
|
||||
if st := setLogin(jwtAuth, ret.AccessToken, ret.RefreshToken, session, client); st.Code != utils.Ok.Code {
|
||||
return nil, errors.New(st.Msg)
|
||||
}
|
||||
return &ret, nil
|
||||
|
||||
@@ -95,27 +95,50 @@ func buildJwtToken(jwtAuth *config.JWTAuth, session dao.UserLoginSession) (dao.T
|
||||
}, nil
|
||||
}
|
||||
|
||||
func setLogin(jwtAuth *config.JWTAuth, accessToken, refreshToken string, session dao.UserLoginSession) utils.Status {
|
||||
func loginCacheType(client *dao.Client) string {
|
||||
if client == nil {
|
||||
return utils.LoginTypeUser
|
||||
}
|
||||
switch client.SubjectType {
|
||||
case dao.SubjectTypeSale:
|
||||
return utils.LoginTypeSale
|
||||
case dao.SubjectTypeStore:
|
||||
return utils.LoginTypeStore
|
||||
case dao.SubjectTypeUser:
|
||||
return utils.LoginTypeUser
|
||||
}
|
||||
switch client.Type {
|
||||
case dao.TypeSale:
|
||||
return utils.LoginTypeSale
|
||||
case dao.TypeStore:
|
||||
return utils.LoginTypeStore
|
||||
default:
|
||||
return utils.LoginTypeUser
|
||||
}
|
||||
}
|
||||
|
||||
func setLogin(jwtAuth *config.JWTAuth, accessToken, refreshToken string, session dao.UserLoginSession, client *dao.Client) utils.Status {
|
||||
accessExpire := time.Duration(jwtAuth.Access.TTL) * time.Second
|
||||
refreshExpire := time.Duration(jwtAuth.Refresh.TTL) * time.Second
|
||||
loginType := loginCacheType(client)
|
||||
|
||||
ctx := context.Background()
|
||||
userStr, _ := jsoniter.Marshal(session)
|
||||
|
||||
redisKey := utils.GetLoginKey(utils.LoginTypeUser, accessToken)
|
||||
redisKey := utils.GetLoginKey(loginType, accessToken)
|
||||
if err := redis.Client.Set(ctx, redisKey, userStr, accessExpire).Err(); err != nil {
|
||||
return utils.Fail
|
||||
}
|
||||
|
||||
redisKeysKey := utils.GetLoginKeysKey(utils.LoginTypeUser, strconv.FormatInt(session.Id, utils.NumberTen))
|
||||
redisKeysKey := utils.GetLoginKeysKey(loginType, strconv.FormatInt(session.Id, utils.NumberTen))
|
||||
var loginInfo utils.LoginRedis
|
||||
if oldAuth, err := redis.Client.Get(ctx, redisKeysKey).Result(); err == nil {
|
||||
_ = jsoniter.Unmarshal([]byte(oldAuth), &loginInfo)
|
||||
if len(loginInfo.Token) > utils.NumberOne {
|
||||
redis.Client.Del(ctx, utils.GetLoginKey(utils.LoginTypeUser, loginInfo.Token))
|
||||
redis.Client.Del(ctx, utils.GetLoginKey(loginType, loginInfo.Token))
|
||||
}
|
||||
if len(loginInfo.Refresh) > utils.NumberOne {
|
||||
redis.Client.Del(ctx, utils.GetLoginRefreshKey(utils.LoginTypeUser, loginInfo.Refresh))
|
||||
redis.Client.Del(ctx, utils.GetLoginRefreshKey(loginType, loginInfo.Refresh))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,7 +149,7 @@ func setLogin(jwtAuth *config.JWTAuth, accessToken, refreshToken string, session
|
||||
if err := redis.Client.Set(ctx, redisKeysKey, newStr, refreshExpire).Err(); err != nil {
|
||||
return utils.Fail
|
||||
}
|
||||
refreshKey := utils.GetLoginRefreshKey(utils.LoginTypeUser, refreshToken)
|
||||
refreshKey := utils.GetLoginRefreshKey(loginType, refreshToken)
|
||||
if err := redis.Client.Set(ctx, refreshKey, strconv.FormatInt(session.Id, utils.NumberTen), refreshExpire).Err(); err != nil {
|
||||
return utils.Fail
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user