作者 yangfu

注入token

@@ -4,7 +4,6 @@ import ( @@ -4,7 +4,6 @@ import (
4 "crypto/sha256" 4 "crypto/sha256"
5 "encoding/hex" 5 "encoding/hex"
6 "fmt" 6 "fmt"
7 - "github.com/astaxie/beego"  
8 "strconv" 7 "strconv"
9 "strings" 8 "strings"
10 9
@@ -108,12 +107,11 @@ func FilterComm(ctx *context.Context) { @@ -108,12 +107,11 @@ func FilterComm(ctx *context.Context) {
108 // return 107 // return
109 //} 108 //}
110 //TODO:注入账号,后期移除掉 109 //TODO:注入账号,后期移除掉
111 - if beego.BConfig.RunMode != "prod" || ctx.Input.Header("x-mmm-accesstoken") == "" { 110 + if ctx.Input.Header("x-mmm-accesstoken") == "" {
112 ctx.Request.Header.Set("x-mmm-accesstoken", "6839602f1d8211eabd85000c29ad8d6d") 111 ctx.Request.Header.Set("x-mmm-accesstoken", "6839602f1d8211eabd85000c29ad8d6d")
113 if ctx.Input.Header("x-mmm-accesstoken") == "" { 112 if ctx.Input.Header("x-mmm-accesstoken") == "" {
114 ctx.Request.Header.Add("x-mmm-accesstoken", "6839602f1d8211eabd85000c29ad8d6d") 113 ctx.Request.Header.Add("x-mmm-accesstoken", "6839602f1d8211eabd85000c29ad8d6d")
115 } 114 }
116 - //return  
117 } else { 115 } else {
118 //1.检查签名 116 //1.检查签名
119 if !CheckSign(ctx) { 117 if !CheckSign(ctx) {
@@ -11,13 +11,14 @@ import ( @@ -11,13 +11,14 @@ import (
11 ) 11 )
12 12
13 type Company struct { 13 type Company struct {
14 - Id int64 `orm:"column(id);auto"`  
15 - Name string `orm:"column(name);size(40)" description:"公司名称"`  
16 - Logo string `orm:"column(logo);size(255)" description:"公司log地址"`  
17 - AdminId int64 `orm:"column(admin_id)" description:"管理员用户id"`  
18 - CreateAt time.Time `orm:"column(create_at);type(timestamp);auto_now" description:"创建时间"`  
19 - UpdateAt time.Time `orm:"column(update_at);type(timestamp)" description:"更新时间"`  
20 - DeleteAt time.Time `orm:"column(delete_at);type(timestamp)" description:"删除时间"` 14 + Id int64 `orm:"column(id);auto"`
  15 + Name string `orm:"column(name);size(40)" description:"公司名称"`
  16 + Logo string `orm:"column(logo);size(255)" description:"公司log地址"`
  17 + AdminId int64 `orm:"column(admin_id)" description:"管理员用户id"`
  18 + CreateAt time.Time `orm:"column(create_at);type(timestamp);auto_now" description:"创建时间"`
  19 + UpdateAt time.Time `orm:"column(update_at);type(timestamp)" description:"更新时间"`
  20 + DeleteAt time.Time `orm:"column(delete_at);type(timestamp)" description:"删除时间"`
  21 + UserCenterId int64 `orm:"column(user_center_id)" description:"统一用户中心企业id"`
21 } 22 }
22 23
23 func (t *Company) TableName() string { 24 func (t *Company) TableName() string {
@@ -31,7 +31,8 @@ type RequestHeader struct { @@ -31,7 +31,8 @@ type RequestHeader struct {
31 31
32 /*Login */ 32 /*Login */
33 type LoginRequest struct { 33 type LoginRequest struct {
34 - Uid int64 `json:"uid" valid:"Required;"` 34 + Uid int64 `json:"uid" valid:"Required;"`
  35 + Token string `json:"token" valid:"Required;"`
35 } 36 }
36 type LoginResponse struct { 37 type LoginResponse struct {
37 AuthCode string `json:"authCode"` 38 AuthCode string `json:"authCode"`
@@ -6,10 +6,11 @@ const ( @@ -6,10 +6,11 @@ const (
6 ) 6 )
7 7
8 const ( 8 const (
9 - MethodLogin = "/auth/login"  
10 - MethodGetUser = "/users/"  
11 - MethodPutUser = "/users/"  
12 - MethodUserExists = "/users/isExist" 9 + MethodLogin = "/auth/login"
  10 + MethodGetUser = "/users/"
  11 + MethodPutUser = "/users/"
  12 + MethodUserExists = "/users/isExist"
  13 + MethodServerLogin = "/auth/serverLogin"
13 ) 14 )
14 15
15 /*UCenterLogin */ 16 /*UCenterLogin */
@@ -19,6 +20,11 @@ type UCenterLoginRequest struct { @@ -19,6 +20,11 @@ type UCenterLoginRequest struct {
19 Code string `json:"code"` 20 Code string `json:"code"`
20 GrantType string `json:"grantType" valid:"Required"` 21 GrantType string `json:"grantType" valid:"Required"`
21 //ClientId string `json:"clientId" valid:"Required"` 22 //ClientId string `json:"clientId" valid:"Required"`
  23 +
  24 + Type int `json:"typoe"` //1为密码登录,管理后台登录,2为token登录,app登录
  25 +
  26 + Uid int64 `json:"uid"` // type2
  27 + //CompanyId int64 `json:"companyId"` // type2
22 } 28 }
23 type UCenterLoginResponse struct { 29 type UCenterLoginResponse struct {
24 Uid int64 `json:"uid"` //统一用户中心用户编号,作为登录凭证 30 Uid int64 `json:"uid"` //统一用户中心用户编号,作为登录凭证
@@ -39,9 +45,9 @@ type UCenterGetUserResponse struct { @@ -39,9 +45,9 @@ type UCenterGetUserResponse struct {
39 Phone string `json:"phone"` 45 Phone string `json:"phone"`
40 NickName string `json:"nickname"` 46 NickName string `json:"nickname"`
41 Avatar string `json:"avatar"` 47 Avatar string `json:"avatar"`
42 - Token string `json:"token"`  
43 - Accid string `json:"accid"`  
44 - CustomerAccount string `json:"customerAccount"` 48 + ImToken string `json:"imtoken"`
  49 + Accid int64 `json:"accid"`
  50 + CustomerAccount int64 `json:"customerAccount"`
45 } 51 }
46 52
47 /*修改用户信息 UCenterPutUser */ 53 /*修改用户信息 UCenterPutUser */
@@ -53,3 +59,14 @@ type UCenterPutUserRequest struct { @@ -53,3 +59,14 @@ type UCenterPutUserRequest struct {
53 } 59 }
54 type UCenterPutUserResponse struct { 60 type UCenterPutUserResponse struct {
55 } 61 }
  62 +
  63 +/*服务端登录*/
  64 +type UCenterServerLoginRequest struct {
  65 + Token string `json:"token"`
  66 + Uid int64 `json:"uid"`
  67 + CompanyId int64 `json:"company_id"`
  68 + Type int `json:"type"` //1为密码登录,管理后台登录,2为token登录,app登录
  69 +}
  70 +
  71 +//type UCenterServerLoginResponse struct {
  72 +//}
@@ -9,7 +9,6 @@ import ( @@ -9,7 +9,6 @@ import (
9 "net/http" 9 "net/http"
10 "opp/internal/utils" 10 "opp/internal/utils"
11 "opp/services/agg" 11 "opp/services/agg"
12 - "strconv"  
13 "time" 12 "time"
14 13
15 "gitlab.fjmaimaimai.com/mmm-go/gocomm/identity/uid" 14 "gitlab.fjmaimaimai.com/mmm-go/gocomm/identity/uid"
@@ -35,11 +34,16 @@ var ( @@ -35,11 +34,16 @@ var (
35 //登录 34 //登录
36 func Login(header *protocol.RequestHeader, request *protocol.LoginRequest) (rsp *protocol.LoginResponse, err error) { 35 func Login(header *protocol.RequestHeader, request *protocol.LoginRequest) (rsp *protocol.LoginResponse, err error) {
37 var ( 36 var (
38 - user *models.User  
39 - userAuth *models.UserAuth  
40 - getUserRequest *protocol.UCenterGetUserRequest = &protocol.UCenterGetUserRequest{} 37 + user *models.User
  38 + userAuth *models.UserAuth
  39 + getUserRequest *protocol.UCenterServerLoginRequest = &protocol.UCenterServerLoginRequest{
  40 + Uid: request.Uid,
  41 + Token: request.Token,
  42 + Type: 2,
  43 + }
41 getUserResponse *protocol.UCenterGetUserResponse 44 getUserResponse *protocol.UCenterGetUserResponse
42 message *protocol.Message 45 message *protocol.Message
  46 + company *models.Company
43 ) 47 )
44 user, err = models.GetUserByUcenterId(request.Uid) 48 user, err = models.GetUserByUcenterId(request.Uid)
45 if err != nil { 49 if err != nil {
@@ -47,10 +51,15 @@ func Login(header *protocol.RequestHeader, request *protocol.LoginRequest) (rsp @@ -47,10 +51,15 @@ func Login(header *protocol.RequestHeader, request *protocol.LoginRequest) (rsp
47 err = protocol.NewErrWithMessage(2002, err) //账号不存在 51 err = protocol.NewErrWithMessage(2002, err) //账号不存在
48 return 52 return
49 } 53 }
  54 + if userAuth, err = models.GetUserAuthByUserId(user.Id, protocol.DeviceType); err == nil {
  55 + if company, err = models.GetCompanyById(userAuth.CurrentCompanyId); err == nil {
  56 + getUserRequest.CompanyId = company.UserCenterId
  57 + }
  58 + }
50 //TODO:验证模块权限 59 //TODO:验证模块权限
51 60
52 //从用户中心获取用户信息 61 //从用户中心获取用户信息
53 - if _, err = agg.RequestUserCenter(fmt.Sprintf("%v%v", protocol.MethodGetUser, request.Uid), http.MethodGet, getUserRequest, &message); err != nil { 62 + if _, err = agg.RequestUserCenter(protocol.MethodServerLogin, http.MethodPost, getUserRequest, &message); err != nil {
54 log.Error(err) 63 log.Error(err)
55 return 64 return
56 } 65 }
@@ -70,9 +79,12 @@ func Login(header *protocol.RequestHeader, request *protocol.LoginRequest) (rsp @@ -70,9 +79,12 @@ func Login(header *protocol.RequestHeader, request *protocol.LoginRequest) (rsp
70 case 2002: 79 case 2002:
71 err = protocol.NewErrWithMessage(2002, err) //账号不存在 80 err = protocol.NewErrWithMessage(2002, err) //账号不存在
72 return 81 return
  82 + case 10001:
  83 + err = protocol.NewErrWithMessage(2002, err) //账号不存在
  84 + return
73 default: 85 default:
74 err = fmt.Errorf("error_no:%v msg:%v", message.Errno, message.Errmsg) 86 err = fmt.Errorf("error_no:%v msg:%v", message.Errno, message.Errmsg)
75 - break 87 + return
76 } 88 }
77 89
78 Success: 90 Success:
@@ -93,11 +105,11 @@ Success: @@ -93,11 +105,11 @@ Success:
93 userAuth.AuthCode = uid.NewV1().StringNoDash() 105 userAuth.AuthCode = uid.NewV1().StringNoDash()
94 106
95 /*更新用户信息*/ 107 /*更新用户信息*/
96 - user.CsAccount, _ = strconv.ParseInt(getUserResponse.CustomerAccount, 10, 64)  
97 - user.ImToken = getUserResponse.Token 108 + user.CsAccount = getUserResponse.CustomerAccount
  109 + user.ImToken = getUserResponse.ImToken
98 user.Icon = getUserResponse.Avatar 110 user.Icon = getUserResponse.Avatar
99 user.NickName = getUserResponse.NickName 111 user.NickName = getUserResponse.NickName
100 - user.Accid, _ = strconv.ParseInt(getUserResponse.Accid, 10, 64) 112 + user.Accid = getUserResponse.Accid
101 user.UserCenterId = getUserResponse.Id 113 user.UserCenterId = getUserResponse.Id
102 if err = repository.User.UpdateUserInfo(user); err != nil { 114 if err = repository.User.UpdateUserInfo(user); err != nil {
103 log.Error(err) 115 log.Error(err)