作者 yangfu

增加:账号无效处理(禁用/删除)

@@ -66,7 +66,7 @@ func Login(header *protocol.RequestHeader, request *protocol.LoginRequest) (rsp @@ -66,7 +66,7 @@ func Login(header *protocol.RequestHeader, request *protocol.LoginRequest) (rsp
66 err = protocol.NewCustomMessage(1, "登录方式不支持!") 66 err = protocol.NewCustomMessage(1, "登录方式不支持!")
67 break 67 break
68 } 68 }
69 - rsp.AuthCode, _ = utils.GenerateToken(partnerInfo.Id, protocol.AuthCodeExpire*time.Second) 69 + rsp.AuthCode, _ = utils.GenerateToken(partnerInfo.Id, request.Phone, protocol.AuthCodeExpire*time.Second)
70 70
71 if err = InitOrUpdateUserIMInfo(partnerInfo, transactionContext); err != nil { 71 if err = InitOrUpdateUserIMInfo(partnerInfo, transactionContext); err != nil {
72 log.Error(err) 72 log.Error(err)
@@ -105,8 +105,8 @@ func AccessToken(request *protocol.AccessTokenRequest) (rsp *protocol.AccessToke @@ -105,8 +105,8 @@ func AccessToken(request *protocol.AccessTokenRequest) (rsp *protocol.AccessToke
105 err = protocol.NewErrWithMessage(1, fmt.Errorf("jwt authCode (%v) valid", request.AuthCode)) 105 err = protocol.NewErrWithMessage(1, fmt.Errorf("jwt authCode (%v) valid", request.AuthCode))
106 return 106 return
107 } 107 }
108 - rsp.AccessToken, _ = utils.GenerateToken(claim.UserId, protocol.TokenExpire*time.Second)  
109 - rsp.RefreshToken, _ = utils.GenerateToken(claim.UserId, protocol.RefreshTokenExipre*time.Second) 108 + rsp.AccessToken, _ = utils.GenerateToken(claim.UserId, claim.Phone, protocol.TokenExpire*time.Second)
  109 + rsp.RefreshToken, _ = utils.GenerateToken(claim.UserId, claim.Phone, protocol.RefreshTokenExipre*time.Second)
110 rsp.ExpiresIn = protocol.TokenExpire 110 rsp.ExpiresIn = protocol.TokenExpire
111 111
112 //auth := userAuth.NewRedisUserAuth(userAuth.WithUserId(claim.UserId), 112 //auth := userAuth.NewRedisUserAuth(userAuth.WithUserId(claim.UserId),
@@ -121,8 +121,22 @@ func AccessToken(request *protocol.AccessTokenRequest) (rsp *protocol.AccessToke @@ -121,8 +121,22 @@ func AccessToken(request *protocol.AccessTokenRequest) (rsp *protocol.AccessToke
121 121
122 func RefreshToken(request *protocol.RefreshTokenRequest) (rsp *protocol.RefreshTokenResponse, err error) { 122 func RefreshToken(request *protocol.RefreshTokenRequest) (rsp *protocol.RefreshTokenResponse, err error) {
123 var ( 123 var (
124 - claim *utils.UserTokenClaims 124 + claim *utils.UserTokenClaims
  125 + transactionContext, _ = factory.CreateTransactionContext(nil)
  126 + PartnerInfoService, _ = factory.CreatePartnerInfoRepositoryIn(transactionContext)
  127 + PartnerSubAccountRepository, _ = factory.CreatePartnerSubAccountRepository(transactionContext)
  128 +
  129 + partnerInfo *domain.PartnerInfo
  130 + partnerSubAccount *domain.PartnerSubAccount
125 ) 131 )
  132 +
  133 + if err = transactionContext.StartTransaction(); err != nil {
  134 + return nil, err
  135 + }
  136 + defer func() {
  137 + transactionContext.RollbackTransaction()
  138 + }()
  139 +
126 rsp = &protocol.RefreshTokenResponse{} 140 rsp = &protocol.RefreshTokenResponse{}
127 if claim, err = utils.ParseJWTToken(request.RefreshToken); err != nil { 141 if claim, err = utils.ParseJWTToken(request.RefreshToken); err != nil {
128 err = protocol.NewErrWithMessage(4140, err) 142 err = protocol.NewErrWithMessage(4140, err)
@@ -132,14 +146,27 @@ func RefreshToken(request *protocol.RefreshTokenRequest) (rsp *protocol.RefreshT @@ -132,14 +146,27 @@ func RefreshToken(request *protocol.RefreshTokenRequest) (rsp *protocol.RefreshT
132 err = protocol.NewErrWithMessage(1, fmt.Errorf("jwt refrshToken (%v) valid", request.RefreshToken)) 146 err = protocol.NewErrWithMessage(1, fmt.Errorf("jwt refrshToken (%v) valid", request.RefreshToken))
133 return 147 return
134 } 148 }
  149 +
  150 + //验证用户有效
  151 + var e error
  152 + if partnerSubAccount, e = PartnerSubAccountRepository.FindOne(map[string]interface{}{"account": claim.Phone}); e == nil {
  153 + partnerInfo, e = PartnerInfoService.FindOne(map[string]interface{}{"id": partnerSubAccount.PartnerId})
  154 + } else {
  155 + partnerInfo, e = PartnerInfoService.FindOne(map[string]interface{}{"account": claim.Phone})
  156 + }
  157 + if e != nil || partnerInfo == nil || !partnerInfo.IsEnable() || partnerInfo.Id != claim.UserId {
  158 + err = protocol.NewErrWithMessage(4140) //账号禁用
  159 + return
  160 + }
  161 +
135 //oldAuth := userAuth.NewRedisUserAuth(userAuth.WithUserId(claim.UserId)) 162 //oldAuth := userAuth.NewRedisUserAuth(userAuth.WithUserId(claim.UserId))
136 //if err = oldAuth.Check(userAuth.NewOptions(userAuth.WithRefreshToken(request.RefreshToken))); err != nil { 163 //if err = oldAuth.Check(userAuth.NewOptions(userAuth.WithRefreshToken(request.RefreshToken))); err != nil {
137 // log.Error(err) 164 // log.Error(err)
138 // err = protocol.NewErrWithMessage(4140, err) 165 // err = protocol.NewErrWithMessage(4140, err)
139 // return 166 // return
140 //} 167 //}
141 - rsp.AccessToken, _ = utils.GenerateToken(claim.UserId, protocol.TokenExpire*time.Second)  
142 - rsp.RefreshToken, _ = utils.GenerateToken(claim.UserId, protocol.RefreshTokenExipre*time.Second) 168 + rsp.AccessToken, _ = utils.GenerateToken(claim.UserId, claim.Phone, protocol.TokenExpire*time.Second)
  169 + rsp.RefreshToken, _ = utils.GenerateToken(claim.UserId, claim.Phone, protocol.RefreshTokenExipre*time.Second)
143 rsp.ExpiresIn = protocol.TokenExpire 170 rsp.ExpiresIn = protocol.TokenExpire
144 171
145 //newAuth := userAuth.NewRedisUserAuth(userAuth.WithUserId(claim.UserId), 172 //newAuth := userAuth.NewRedisUserAuth(userAuth.WithUserId(claim.UserId),
@@ -149,6 +176,7 @@ func RefreshToken(request *protocol.RefreshTokenRequest) (rsp *protocol.RefreshT @@ -149,6 +176,7 @@ func RefreshToken(request *protocol.RefreshTokenRequest) (rsp *protocol.RefreshT
149 // log.Error(err) 176 // log.Error(err)
150 // return 177 // return
151 //} 178 //}
  179 + err = transactionContext.CommitTransaction()
152 return 180 return
153 } 181 }
154 182
@@ -14,8 +14,6 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis @@ -14,8 +14,6 @@ func Statistics(header *protocol.RequestHeader, request *protocol.DividendStatis
14 var ( 14 var (
15 transactionContext, _ = factory.CreateTransactionContext(nil) 15 transactionContext, _ = factory.CreateTransactionContext(nil)
16 OrderBaseResponsitory, _ = factory.CreateOrderBaseRepository(transactionContext) 16 OrderBaseResponsitory, _ = factory.CreateOrderBaseRepository(transactionContext)
17 - //beginTime = time.Unix(request.StartTime/1000, 0)  
18 - //endTime = time.Unix(request.EndTime/1000, 0)  
19 ) 17 )
20 if err = transactionContext.StartTransaction(); err != nil { 18 if err = transactionContext.StartTransaction(); err != nil {
21 return nil, err 19 return nil, err
@@ -6,7 +6,8 @@ import ( @@ -6,7 +6,8 @@ import (
6 ) 6 )
7 7
8 type UserTokenClaims struct { 8 type UserTokenClaims struct {
9 - UserId int64 `json:"userId"` 9 + UserId int64 `json:"userId"`
  10 + Phone string `json:"phone"`
10 jwt.StandardClaims 11 jwt.StandardClaims
11 } 12 }
12 13
@@ -33,11 +34,12 @@ func ParseJWTToken(token string) (*UserTokenClaims, error) { @@ -33,11 +34,12 @@ func ParseJWTToken(token string) (*UserTokenClaims, error) {
33 //@uid 用户变化 34 //@uid 用户变化
34 //@password 密码 35 //@password 密码
35 //@expire 过期时长 36 //@expire 过期时长
36 -func GenerateToken(uid int64, expire time.Duration) (string, error) { 37 +func GenerateToken(uid int64, phone string, expire time.Duration) (string, error) {
37 now := time.Now() 38 now := time.Now()
38 expireTime := now.Add(expire) 39 expireTime := now.Add(expire)
39 claims := UserTokenClaims{ 40 claims := UserTokenClaims{
40 UserId: uid, 41 UserId: uid,
  42 + Phone: phone,
41 StandardClaims: jwt.StandardClaims{ 43 StandardClaims: jwt.StandardClaims{
42 ExpiresAt: expireTime.Unix(), 44 ExpiresAt: expireTime.Unix(),
43 Issuer: "jwt", 45 Issuer: "jwt",
@@ -5,9 +5,9 @@ const ( @@ -5,9 +5,9 @@ const (
5 LoginBySmsCode = "signInCaptcha" 5 LoginBySmsCode = "signInCaptcha"
6 ) 6 )
7 7
8 -const AuthCodeExpire = 60 * 15 8 +const AuthCodeExpire = 60 * 15 //15分钟过期
9 9
10 -const TokenExpire = 60 * 60 * 2 10 +const TokenExpire = 60 * 60 * 2 //两个小时过期
11 const RefreshTokenExipre = 3600 * 24 * 30 * 1 //刷新token 一个月过期 11 const RefreshTokenExipre = 3600 * 24 * 30 * 1 //刷新token 一个月过期
12 12
13 //const TokenExpire = 30 13 //const TokenExpire = 30