正在显示
8 个修改的文件
包含
111 行增加
和
69 行删除
| @@ -69,6 +69,8 @@ var AuthToken = func(ctx *context.Context) { | @@ -69,6 +69,8 @@ var AuthToken = func(ctx *context.Context) { | ||
| 69 | redisdata.RefreshLoginTokenExpires(mtoken.UID, mtoken.CompanyID) | 69 | redisdata.RefreshLoginTokenExpires(mtoken.UID, mtoken.CompanyID) |
| 70 | ctx.Input.SetData(protocol.HeaderCompanyid, mtoken.CompanyID) | 70 | ctx.Input.SetData(protocol.HeaderCompanyid, mtoken.CompanyID) |
| 71 | ctx.Input.SetData(protocol.HeaderUserid, mtoken.UID) | 71 | ctx.Input.SetData(protocol.HeaderUserid, mtoken.UID) |
| 72 | + ctx.Input.SetData(protocol.HeaderUCompanyid, mtoken.UserCompanyId) | ||
| 73 | + log.Info("c=%d,u=%d,cu=%d", mtoken.CompanyID, mtoken.UID, mtoken.UserCompanyId) | ||
| 72 | return | 74 | return |
| 73 | } | 75 | } |
| 74 | if ok := serveauth.IsJwtErrorExpired(err); ok { | 76 | if ok := serveauth.IsJwtErrorExpired(err); ok { |
| @@ -91,6 +91,7 @@ func UpdateCompanyById(m *Company, col []string, om ...orm.Ormer) (err error) { | @@ -91,6 +91,7 @@ func UpdateCompanyById(m *Company, col []string, om ...orm.Ormer) (err error) { | ||
| 91 | } | 91 | } |
| 92 | var num int64 | 92 | var num int64 |
| 93 | m.UpdateAt = time.Now() | 93 | m.UpdateAt = time.Now() |
| 94 | + col = append(col, "UpdateAt") | ||
| 94 | if num, err = o.Update(m, col...); err == nil { | 95 | if num, err = o.Update(m, col...); err == nil { |
| 95 | fmt.Println("Number of records updated in database:", num) | 96 | fmt.Println("Number of records updated in database:", num) |
| 96 | } | 97 | } |
| 1 | package models | 1 | package models |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | - "errors" | ||
| 5 | "fmt" | 4 | "fmt" |
| 6 | "oppmg/common/log" | 5 | "oppmg/common/log" |
| 7 | "time" | 6 | "time" |
| @@ -94,19 +93,16 @@ func UpdateUserCompanyById(m *UserCompany, col []string, om ...orm.Ormer) (err e | @@ -94,19 +93,16 @@ func UpdateUserCompanyById(m *UserCompany, col []string, om ...orm.Ormer) (err e | ||
| 94 | 93 | ||
| 95 | func GetUserCompanyBy(userid int64, companyId int64) (*UserCompany, error) { | 94 | func GetUserCompanyBy(userid int64, companyId int64) (*UserCompany, error) { |
| 96 | o := orm.NewOrm() | 95 | o := orm.NewOrm() |
| 97 | - var data []*UserCompany | ||
| 98 | - _, err := o.QueryTable(&UserCompany{}). | 96 | + var data UserCompany |
| 97 | + err := o.QueryTable(&UserCompany{}). | ||
| 99 | Filter("user_id", userid). | 98 | Filter("user_id", userid). |
| 100 | Filter("company_id", companyId). | 99 | Filter("company_id", companyId). |
| 101 | Filter("delete_at", 0). | 100 | Filter("delete_at", 0). |
| 102 | - All(&data) | 101 | + One(&data) |
| 103 | if err != nil { | 102 | if err != nil { |
| 104 | return nil, err | 103 | return nil, err |
| 105 | } | 104 | } |
| 106 | - if len(data) == 0 { | ||
| 107 | - return nil, errors.New("UserCompany not found") | ||
| 108 | - } | ||
| 109 | - return data[0], nil | 105 | + return &data, nil |
| 110 | } | 106 | } |
| 111 | 107 | ||
| 112 | func ExistUserCompany(userid int64, companyId int64) bool { | 108 | func ExistUserCompany(userid int64, companyId int64) bool { |
| @@ -9,8 +9,9 @@ const ( | @@ -9,8 +9,9 @@ const ( | ||
| 9 | 9 | ||
| 10 | //用来存储从token中解析出来的内容对应的键名 | 10 | //用来存储从token中解析出来的内容对应的键名 |
| 11 | const ( | 11 | const ( |
| 12 | - HeaderCompanyid string = "header_companyid" | ||
| 13 | - HeaderUserid string = "header_userid" | 12 | + HeaderCompanyid string = "header_companyid" |
| 13 | + HeaderUserid string = "header_userid" | ||
| 14 | + HeaderUCompanyid string = "header_ucompanyid" | ||
| 14 | ) | 15 | ) |
| 15 | 16 | ||
| 16 | //BaseHeader 请求的header数据 | 17 | //BaseHeader 请求的header数据 |
| @@ -436,6 +436,7 @@ func TemplateOperateCategory(uid, companyId int64, request *protocol.TemplateOpe | @@ -436,6 +436,7 @@ func TemplateOperateCategory(uid, companyId int64, request *protocol.TemplateOpe | ||
| 436 | if chanceType.CompanyId != int(companyId) { | 436 | if chanceType.CompanyId != int(companyId) { |
| 437 | err = protocol.NewErrWithMessage("10027") | 437 | err = protocol.NewErrWithMessage("10027") |
| 438 | log.Error("template_id:%v companyId:%v want:%v not equal.", request.Id, companyId, chanceType.CompanyId) | 438 | log.Error("template_id:%v companyId:%v want:%v not equal.", request.Id, companyId, chanceType.CompanyId) |
| 439 | + return | ||
| 439 | } | 440 | } |
| 440 | if err = utils.UpdateTableByMap(chanceType, map[string]interface{}{"Name": request.Name, "Icon": request.Icon, "SortNum": chanceType.SortNum, "UpdateAt": time.Now()}); err != nil { | 441 | if err = utils.UpdateTableByMap(chanceType, map[string]interface{}{"Name": request.Name, "Icon": request.Icon, "SortNum": chanceType.SortNum, "UpdateAt": time.Now()}); err != nil { |
| 441 | log.Error(err.Error()) | 442 | log.Error(err.Error()) |
| @@ -134,7 +134,7 @@ func ChangeLoginToken(userid, companyid int64) (protocol.LoginAuthToken, error) | @@ -134,7 +134,7 @@ func ChangeLoginToken(userid, companyid int64) (protocol.LoginAuthToken, error) | ||
| 134 | log.Debug("无效公司") | 134 | log.Debug("无效公司") |
| 135 | return logintoken, protocol.NewErrWithMessage("10027") | 135 | return logintoken, protocol.NewErrWithMessage("10027") |
| 136 | } | 136 | } |
| 137 | - logintoken, err = GenerateAuthToken(userid, companydata.Id) | 137 | + logintoken, err = GenerateAuthToken(userid, companydata.Id, usercompany.Id) |
| 138 | if err != nil { | 138 | if err != nil { |
| 139 | log.Error("GenerateAuthToken err:%s", err) | 139 | log.Error("GenerateAuthToken err:%s", err) |
| 140 | return logintoken, protocol.NewErrWithMessage("1") | 140 | return logintoken, protocol.NewErrWithMessage("1") |
| @@ -142,38 +142,38 @@ func ChangeLoginToken(userid, companyid int64) (protocol.LoginAuthToken, error) | @@ -142,38 +142,38 @@ func ChangeLoginToken(userid, companyid int64) (protocol.LoginAuthToken, error) | ||
| 142 | return logintoken, nil | 142 | return logintoken, nil |
| 143 | } | 143 | } |
| 144 | 144 | ||
| 145 | -func RefreshLoginToken(refreshtoken string) (protocol.LoginAuthToken, error) { | ||
| 146 | - var ( | ||
| 147 | - logintoken protocol.LoginAuthToken | ||
| 148 | - mtoken *MyToken | ||
| 149 | - err error | ||
| 150 | - storetoken redisdata.RedisLoginToken | ||
| 151 | - ) | ||
| 152 | - mtoken, err = ValidJWTToken(refreshtoken) | ||
| 153 | - if err != nil { | ||
| 154 | - log.Debug("token失效 err:%s", err) | ||
| 155 | - return logintoken, protocol.NewErrWithMessage("10024") | ||
| 156 | - } | ||
| 157 | - storetoken, err = redisdata.GetLoginToken(mtoken.UID, mtoken.CompanyID) | ||
| 158 | - if err != nil { | ||
| 159 | - log.Error("redis err:%s", err) | ||
| 160 | - return logintoken, protocol.NewErrWithMessage("10024") | ||
| 161 | - } | ||
| 162 | - if storetoken.RefreshToken != refreshtoken { | ||
| 163 | - return logintoken, protocol.NewErrWithMessage("10024") | ||
| 164 | - } | ||
| 165 | - logintoken, _ = GenerateAuthToken(mtoken.UID, mtoken.CompanyID) | ||
| 166 | - return logintoken, nil | ||
| 167 | -} | 145 | +// func RefreshLoginToken(refreshtoken string) (protocol.LoginAuthToken, error) { |
| 146 | +// var ( | ||
| 147 | +// logintoken protocol.LoginAuthToken | ||
| 148 | +// mtoken *MyToken | ||
| 149 | +// err error | ||
| 150 | +// storetoken redisdata.RedisLoginToken | ||
| 151 | +// ) | ||
| 152 | +// mtoken, err = ValidJWTToken(refreshtoken) | ||
| 153 | +// if err != nil { | ||
| 154 | +// log.Debug("token失效 err:%s", err) | ||
| 155 | +// return logintoken, protocol.NewErrWithMessage("10024") | ||
| 156 | +// } | ||
| 157 | +// storetoken, err = redisdata.GetLoginToken(mtoken.UID, mtoken.CompanyID) | ||
| 158 | +// if err != nil { | ||
| 159 | +// log.Error("redis err:%s", err) | ||
| 160 | +// return logintoken, protocol.NewErrWithMessage("10024") | ||
| 161 | +// } | ||
| 162 | +// if storetoken.RefreshToken != refreshtoken { | ||
| 163 | +// return logintoken, protocol.NewErrWithMessage("10024") | ||
| 164 | +// } | ||
| 165 | +// logintoken, _ = GenerateAuthToken(mtoken.UID, mtoken.CompanyID) | ||
| 166 | +// return logintoken, nil | ||
| 167 | +// } | ||
| 168 | 168 | ||
| 169 | func LoginAuthByUCenter(account, password string) (protocol.LoginAuthToken, error) { | 169 | func LoginAuthByUCenter(account, password string) (protocol.LoginAuthToken, error) { |
| 170 | var ( | 170 | var ( |
| 171 | - err error | ||
| 172 | - logintoken protocol.LoginAuthToken | ||
| 173 | - | ||
| 174 | - companys []companybase | ||
| 175 | - companyid int64 | ||
| 176 | - userdata *models.User | 171 | + err error |
| 172 | + logintoken protocol.LoginAuthToken | ||
| 173 | + usercompanyid int64 | ||
| 174 | + companys []companybase | ||
| 175 | + companyid int64 | ||
| 176 | + userdata *models.User | ||
| 177 | ) | 177 | ) |
| 178 | var uclientReturn *ucenter.ResponseLogin | 178 | var uclientReturn *ucenter.ResponseLogin |
| 179 | uclientReturn, err = ucenter.RequestUCenterLogin(account, password) | 179 | uclientReturn, err = ucenter.RequestUCenterLogin(account, password) |
| @@ -204,11 +204,28 @@ func LoginAuthByUCenter(account, password string) (protocol.LoginAuthToken, erro | @@ -204,11 +204,28 @@ func LoginAuthByUCenter(account, password string) (protocol.LoginAuthToken, erro | ||
| 204 | //获取上一次登录的公司 | 204 | //获取上一次登录的公司 |
| 205 | uAuth, err := models.GetUserAuthByUser(userdata.Id) | 205 | uAuth, err := models.GetUserAuthByUser(userdata.Id) |
| 206 | if err == nil { | 206 | if err == nil { |
| 207 | - companyid = uAuth.CurrentCompanyId | 207 | + has := false |
| 208 | + for _, v := range companys { | ||
| 209 | + if v.Id == uAuth.CurrentCompanyId { | ||
| 210 | + companyid = uAuth.CurrentCompanyId | ||
| 211 | + has = true | ||
| 212 | + break | ||
| 213 | + } | ||
| 214 | + } | ||
| 215 | + if !has { | ||
| 216 | + companyid = companys[0].Id | ||
| 217 | + } | ||
| 218 | + | ||
| 208 | } else { | 219 | } else { |
| 209 | companyid = companys[0].Id | 220 | companyid = companys[0].Id |
| 210 | } | 221 | } |
| 211 | - | 222 | + ucompany, err := models.GetUserCompanyBy(userdata.Id, companyid) |
| 223 | + if err != nil { | ||
| 224 | + log.Error("获取user_company失败;%s", err) | ||
| 225 | + return logintoken, protocol.NewErrWithMessage("1") | ||
| 226 | + } | ||
| 227 | + usercompanyid = ucompany.Id | ||
| 228 | + logintoken, _ = GenerateAuthToken(userdata.Id, companyid, usercompanyid) | ||
| 212 | //更新用户数据 | 229 | //更新用户数据 |
| 213 | userdata.Accid = uclientReturn.Data.Accid | 230 | userdata.Accid = uclientReturn.Data.Accid |
| 214 | userdata.Icon = uclientReturn.Data.Avatar | 231 | userdata.Icon = uclientReturn.Data.Avatar |
| @@ -220,7 +237,6 @@ func LoginAuthByUCenter(account, password string) (protocol.LoginAuthToken, erro | @@ -220,7 +237,6 @@ func LoginAuthByUCenter(account, password string) (protocol.LoginAuthToken, erro | ||
| 220 | if err != nil { | 237 | if err != nil { |
| 221 | log.Error("更新用户数据失败:%s", err) | 238 | log.Error("更新用户数据失败:%s", err) |
| 222 | } | 239 | } |
| 223 | - logintoken, _ = GenerateAuthToken(userdata.Id, companyid) | ||
| 224 | return logintoken, err | 240 | return logintoken, err |
| 225 | } | 241 | } |
| 226 | 242 | ||
| @@ -329,11 +345,12 @@ func GetUserHasMenu(userid, companyid int64) ([]protocol.PermissionItem, error) | @@ -329,11 +345,12 @@ func GetUserHasMenu(userid, companyid int64) ([]protocol.PermissionItem, error) | ||
| 329 | 345 | ||
| 330 | func LoginAuthBySmsCode(phone string, code string) (protocol.LoginAuthToken, error) { | 346 | func LoginAuthBySmsCode(phone string, code string) (protocol.LoginAuthToken, error) { |
| 331 | var ( | 347 | var ( |
| 332 | - err error | ||
| 333 | - logintoken protocol.LoginAuthToken | ||
| 334 | - companys []companybase | ||
| 335 | - companyid int64 | ||
| 336 | - userdata *models.User | 348 | + err error |
| 349 | + logintoken protocol.LoginAuthToken | ||
| 350 | + companys []companybase | ||
| 351 | + companyid int64 | ||
| 352 | + usercompanyid int64 | ||
| 353 | + userdata *models.User | ||
| 337 | ) | 354 | ) |
| 338 | var uclientReturn *ucenter.ResponseLoginSms | 355 | var uclientReturn *ucenter.ResponseLoginSms |
| 339 | uclientReturn, err = ucenter.RequestUCenterLoginSms(phone, code) | 356 | uclientReturn, err = ucenter.RequestUCenterLoginSms(phone, code) |
| @@ -364,11 +381,27 @@ func LoginAuthBySmsCode(phone string, code string) (protocol.LoginAuthToken, err | @@ -364,11 +381,27 @@ func LoginAuthBySmsCode(phone string, code string) (protocol.LoginAuthToken, err | ||
| 364 | //获取上一次登录的公司 | 381 | //获取上一次登录的公司 |
| 365 | uAuth, err := models.GetUserAuthByUser(userdata.Id) | 382 | uAuth, err := models.GetUserAuthByUser(userdata.Id) |
| 366 | if err == nil { | 383 | if err == nil { |
| 367 | - companyid = uAuth.CurrentCompanyId | 384 | + has := false |
| 385 | + for _, v := range companys { | ||
| 386 | + if v.Id == uAuth.CurrentCompanyId { | ||
| 387 | + companyid = uAuth.CurrentCompanyId | ||
| 388 | + has = true | ||
| 389 | + break | ||
| 390 | + } | ||
| 391 | + } | ||
| 392 | + if !has { | ||
| 393 | + companyid = companys[0].Id | ||
| 394 | + } | ||
| 368 | } else { | 395 | } else { |
| 369 | companyid = companys[0].Id | 396 | companyid = companys[0].Id |
| 370 | } | 397 | } |
| 371 | - | 398 | + ucompany, err := models.GetUserCompanyBy(userdata.Id, companyid) |
| 399 | + if err != nil { | ||
| 400 | + log.Error("获取user_company失败;%s", err) | ||
| 401 | + return logintoken, protocol.NewErrWithMessage("1") | ||
| 402 | + } | ||
| 403 | + usercompanyid = ucompany.Id | ||
| 404 | + logintoken, _ = GenerateAuthToken(userdata.Id, companyid, usercompanyid) | ||
| 372 | //更新用户数据 | 405 | //更新用户数据 |
| 373 | userdata.Accid = uclientReturn.Data.CsAccountID | 406 | userdata.Accid = uclientReturn.Data.CsAccountID |
| 374 | userdata.Icon = uclientReturn.Data.Image.Path | 407 | userdata.Icon = uclientReturn.Data.Image.Path |
| @@ -379,7 +412,6 @@ func LoginAuthBySmsCode(phone string, code string) (protocol.LoginAuthToken, err | @@ -379,7 +412,6 @@ func LoginAuthBySmsCode(phone string, code string) (protocol.LoginAuthToken, err | ||
| 379 | if err != nil { | 412 | if err != nil { |
| 380 | log.Error("更新用户数据失败:%s", err) | 413 | log.Error("更新用户数据失败:%s", err) |
| 381 | } | 414 | } |
| 382 | - logintoken, _ = GenerateAuthToken(userdata.Id, companyid) | ||
| 383 | return logintoken, err | 415 | return logintoken, err |
| 384 | } | 416 | } |
| 385 | 417 |
| @@ -15,12 +15,13 @@ var ( | @@ -15,12 +15,13 @@ var ( | ||
| 15 | //MyToken ... | 15 | //MyToken ... |
| 16 | type MyToken struct { | 16 | type MyToken struct { |
| 17 | jwt.StandardClaims | 17 | jwt.StandardClaims |
| 18 | - UID int64 `json:"uid"` | ||
| 19 | - CompanyID int64 `json:"company_id"` | 18 | + UID int64 `json:"uid"` |
| 19 | + CompanyID int64 `json:"company_id"` | ||
| 20 | + UserCompanyId int64 `json:"user_company_id"` | ||
| 20 | } | 21 | } |
| 21 | 22 | ||
| 22 | //CreateJWTToken ... | 23 | //CreateJWTToken ... |
| 23 | -func CreateJWTToken(uid int64, companyid int64, expires int64) (string, error) { | 24 | +func CreateJWTToken(uid int64, companyid int64, userCompanyId int64, expires int64) (string, error) { |
| 24 | nowTime := time.Now().Unix() | 25 | nowTime := time.Now().Unix() |
| 25 | claims := MyToken{ | 26 | claims := MyToken{ |
| 26 | StandardClaims: jwt.StandardClaims{ | 27 | StandardClaims: jwt.StandardClaims{ |
| @@ -29,8 +30,9 @@ func CreateJWTToken(uid int64, companyid int64, expires int64) (string, error) { | @@ -29,8 +30,9 @@ func CreateJWTToken(uid int64, companyid int64, expires int64) (string, error) { | ||
| 29 | ExpiresAt: expires, //过期时间 | 30 | ExpiresAt: expires, //过期时间 |
| 30 | Issuer: "mmm_oppmg", | 31 | Issuer: "mmm_oppmg", |
| 31 | }, | 32 | }, |
| 32 | - UID: uid, | ||
| 33 | - CompanyID: companyid, | 33 | + UID: uid, |
| 34 | + CompanyID: companyid, | ||
| 35 | + UserCompanyId: userCompanyId, | ||
| 34 | } | 36 | } |
| 35 | 37 | ||
| 36 | token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) | 38 | token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) |
| @@ -64,27 +66,19 @@ func IsJwtErrorExpired(err error) bool { | @@ -64,27 +66,19 @@ func IsJwtErrorExpired(err error) bool { | ||
| 64 | return false | 66 | return false |
| 65 | } | 67 | } |
| 66 | 68 | ||
| 67 | -func GenerateAuthToken(uid int64, companyid int64) (protocol.LoginAuthToken, error) { | 69 | +func GenerateAuthToken(uid int64, companyid int64, usercompanyid int64) (protocol.LoginAuthToken, error) { |
| 68 | var ( | 70 | var ( |
| 69 | authToken protocol.LoginAuthToken | 71 | authToken protocol.LoginAuthToken |
| 70 | accesstoken string //主token,请求用 | 72 | accesstoken string //主token,请求用 |
| 71 | expiresIn int64 = 60 * 60 * 6 //主token过期时间,6小时 | 73 | expiresIn int64 = 60 * 60 * 6 //主token过期时间,6小时 |
| 72 | - // refreshtoken string //副token,刷新主token用 | ||
| 73 | - // refreshExpires int64 = 60 * 60 * 2 //副token 过期时间 ,60分钟 | ||
| 74 | - err error | ||
| 75 | - nowtime = time.Now() | 74 | + err error |
| 75 | + nowtime = time.Now() | ||
| 76 | ) | 76 | ) |
| 77 | - accesstoken, err = CreateJWTToken(uid, companyid, nowtime.Unix()+expiresIn+2) | 77 | + accesstoken, err = CreateJWTToken(uid, companyid, usercompanyid, nowtime.Unix()+expiresIn+1) |
| 78 | if err != nil { | 78 | if err != nil { |
| 79 | return authToken, err | 79 | return authToken, err |
| 80 | } | 80 | } |
| 81 | - // refreshtoken, err = CreateJWTToken(uid, companyid, nowtime.Unix()+refreshExpires+2) | ||
| 82 | - // if err != nil { | ||
| 83 | - // return authToken, err | ||
| 84 | - // } | ||
| 85 | authToken.AccessToken = accesstoken | 81 | authToken.AccessToken = accesstoken |
| 86 | authToken.ExpiresIn = nowtime.Unix() + expiresIn | 82 | authToken.ExpiresIn = nowtime.Unix() + expiresIn |
| 87 | - // authToken.RefreshToken = refreshtoken | ||
| 88 | - // authToken.RefreshExpires = nowtime.Unix() + refreshExpires | ||
| 89 | return authToken, err | 83 | return authToken, err |
| 90 | } | 84 | } |
| @@ -197,7 +197,22 @@ func addNewUser(name string, phone string, ucenterId int64, avatar string, accid | @@ -197,7 +197,22 @@ func addNewUser(name string, phone string, ucenterId int64, avatar string, accid | ||
| 197 | return usrData.Id, nil | 197 | return usrData.Id, nil |
| 198 | } | 198 | } |
| 199 | if err == nil { | 199 | if err == nil { |
| 200 | - // 用户存在, | 200 | + usr := &models.User{ |
| 201 | + Id: usrData.Id, | ||
| 202 | + Phone: phone, | ||
| 203 | + NickName: name, | ||
| 204 | + Icon: avatar, | ||
| 205 | + Accid: accid, | ||
| 206 | + CsAccount: customerAccout, | ||
| 207 | + UserCenterId: ucenterId, | ||
| 208 | + } | ||
| 209 | + // 用户存在,更新用户 | ||
| 210 | + err = models.UpdateUserById(usr, | ||
| 211 | + []string{"Phone", "NickName", "Icon", "Accid", "CsAccount", "UserCenterId"}, | ||
| 212 | + o) | ||
| 213 | + if err != nil { | ||
| 214 | + log.Error("更新用户失败;%s", err) | ||
| 215 | + } | ||
| 201 | return usrData.Id, nil | 216 | return usrData.Id, nil |
| 202 | } | 217 | } |
| 203 | return 0, err | 218 | return 0, err |
-
请 注册 或 登录 后发表评论