1
This commit is contained in:
parent
b81a68c342
commit
a2341f717b
109
server/wheelserver/middleware/jwtauth.go
Normal file
109
server/wheelserver/middleware/jwtauth.go
Normal file
@ -0,0 +1,109 @@
|
|||||||
|
package middleware
|
||||||
|
|
||||||
|
import (
|
||||||
|
"f5"
|
||||||
|
"fmt"
|
||||||
|
"jccommon"
|
||||||
|
"main/mt"
|
||||||
|
"q5"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
)
|
||||||
|
|
||||||
|
func MaybeJwtAuth(c *gin.Context) {
|
||||||
|
internalJwtAuth(c, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
func JwtAuth(c *gin.Context) {
|
||||||
|
internalJwtAuth(c, false)
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
'Authorization Bearer {JwtToken}'
|
||||||
|
*/
|
||||||
|
func internalJwtAuth(c *gin.Context, maybe bool) {
|
||||||
|
tokenHeader := c.Request.Header.Get("Authorization")
|
||||||
|
jwtToken := ""
|
||||||
|
if len(tokenHeader) > 8 {
|
||||||
|
jwtToken = tokenHeader[7:]
|
||||||
|
} else {
|
||||||
|
if maybe {
|
||||||
|
c.Set("open_id", "")
|
||||||
|
c.Set("account_address", "")
|
||||||
|
c.Set("email", "")
|
||||||
|
c.Next()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
internalMetaMaskJwtAuth(c, jwtToken)
|
||||||
|
}
|
||||||
|
|
||||||
|
func internalMetaMaskJwtAuth(c *gin.Context, jwtToken string) {
|
||||||
|
params := map[string]string{
|
||||||
|
"c": "MetaMaskJwt",
|
||||||
|
"a": "verify",
|
||||||
|
}
|
||||||
|
jsonReqObj := &struct {
|
||||||
|
Data string `json:"data"`
|
||||||
|
}{
|
||||||
|
Data: jwtToken,
|
||||||
|
}
|
||||||
|
jsonRspObj := &struct {
|
||||||
|
ErrCode interface{} `json:"errcode"`
|
||||||
|
ErrMsg string `json:"errmsg"`
|
||||||
|
Decoded struct {
|
||||||
|
Id string `json:"id"`
|
||||||
|
OpenId string `json:"openid"`
|
||||||
|
Plat int32 `json:"plat"`
|
||||||
|
Version int32 `json:"version"`
|
||||||
|
Email string `json:"email"`
|
||||||
|
} `json:"decoded"`
|
||||||
|
}{}
|
||||||
|
rspObj := &struct {
|
||||||
|
ErrCode interface{} `json:"errcode"`
|
||||||
|
ErrMsg string `json:"errmsg"`
|
||||||
|
}{}
|
||||||
|
paramsStr := q5.EncodeJson(jsonReqObj)
|
||||||
|
url := fmt.Sprintf("%s/webapp/index.php", mt.Table.Web3ServiceCluster.RandElement().GetUrl())
|
||||||
|
f5.GetHttpCliMgr().SendGoStyleJsonRspPost(
|
||||||
|
url,
|
||||||
|
params,
|
||||||
|
jsonRspObj,
|
||||||
|
q5.HTTP_HEADER_JSON,
|
||||||
|
paramsStr,
|
||||||
|
func(rsp f5.HttpCliResponse) {
|
||||||
|
if rsp.GetErr() != nil ||
|
||||||
|
!rsp.JsonParseOk() {
|
||||||
|
rspObj.ErrCode = 500
|
||||||
|
rspObj.ErrMsg = "server internal error"
|
||||||
|
c.JSON(200, rspObj)
|
||||||
|
c.Abort()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
rspObj.ErrCode = q5.SafeToInt32(jsonRspObj.ErrCode)
|
||||||
|
rspObj.ErrMsg = jsonRspObj.ErrMsg
|
||||||
|
if q5.SafeToInt32(rspObj.ErrCode) != 0 {
|
||||||
|
rspObj.ErrCode = 501
|
||||||
|
rspObj.ErrMsg = "jwt error"
|
||||||
|
c.JSON(200, rspObj)
|
||||||
|
c.Abort()
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if jsonRspObj.Decoded.Plat != jccommon.BC_POLY_POLY_METAKASK {
|
||||||
|
rspObj.ErrCode = 501
|
||||||
|
rspObj.ErrMsg = "not support this platform"
|
||||||
|
c.JSON(200, rspObj)
|
||||||
|
c.Abort()
|
||||||
|
f5.GetSysLog().Info("not support this platform:%s", rsp.GetRawData())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
openId := fmt.Sprintf("%d_2006_%s",
|
||||||
|
jccommon.BC_CHANNEL,
|
||||||
|
strings.ToLower(jsonRspObj.Decoded.OpenId))
|
||||||
|
c.Set("open_id", openId)
|
||||||
|
c.Set("account_address", strings.ToLower(jsonRspObj.Decoded.OpenId))
|
||||||
|
c.Set("email", strings.ToLower(jsonRspObj.Decoded.Email))
|
||||||
|
c.Next()
|
||||||
|
})
|
||||||
|
}
|
19
server/wheelserver/mt/Web3ServiceCluster.go
Normal file
19
server/wheelserver/mt/Web3ServiceCluster.go
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
package mt
|
||||||
|
|
||||||
|
import (
|
||||||
|
"f5"
|
||||||
|
"main/mtb"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Web3ServiceCluster struct {
|
||||||
|
mtb.Web3ServiceCluster
|
||||||
|
}
|
||||||
|
|
||||||
|
type Web3ServiceClusterTable struct {
|
||||||
|
f5.IdMetaTable[Web3ServiceCluster]
|
||||||
|
selfConf *Web3ServiceCluster
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Web3ServiceCluster) Init1() {
|
||||||
|
|
||||||
|
}
|
@ -8,6 +8,7 @@ type table struct {
|
|||||||
WheelServerCluster *WheelServerClusterTable
|
WheelServerCluster *WheelServerClusterTable
|
||||||
//WheelDb *WheelDbTable
|
//WheelDb *WheelDbTable
|
||||||
Config *ConfigTable
|
Config *ConfigTable
|
||||||
|
Web3ServiceCluster *Web3ServiceClusterTable
|
||||||
//Contract *ContractTable
|
//Contract *ContractTable
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -17,6 +18,11 @@ var Table = f5.New(func(this *table) {
|
|||||||
this.PrimKey = "instance_id"
|
this.PrimKey = "instance_id"
|
||||||
})
|
})
|
||||||
|
|
||||||
|
this.Web3ServiceCluster = f5.New(func(this *Web3ServiceClusterTable) {
|
||||||
|
this.FileName = "../config/web3service.cluster.json"
|
||||||
|
this.PrimKey = "instance_id"
|
||||||
|
})
|
||||||
|
|
||||||
/*
|
/*
|
||||||
this.WheelDb = f5.New(func(this *WheelDbTable) {
|
this.WheelDb = f5.New(func(this *WheelDbTable) {
|
||||||
this.FileName = "../config/nftdb.mysql.json"
|
this.FileName = "../config/nftdb.mysql.json"
|
||||||
|
@ -24,6 +24,13 @@ type WheelDb struct {
|
|||||||
_flags2_ uint64
|
_flags2_ uint64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type Web3ServiceCluster struct {
|
||||||
|
url string
|
||||||
|
|
||||||
|
_flags1_ uint64
|
||||||
|
_flags2_ uint64
|
||||||
|
}
|
||||||
|
|
||||||
type Config struct {
|
type Config struct {
|
||||||
|
|
||||||
_flags1_ uint64
|
_flags1_ uint64
|
||||||
@ -94,6 +101,14 @@ func (this *WheelDb) HasDatabase() bool {
|
|||||||
return (this._flags1_ & (uint64(1) << 5)) > 0
|
return (this._flags1_ & (uint64(1) << 5)) > 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *Web3ServiceCluster) GetUrl() string {
|
||||||
|
return this.url
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Web3ServiceCluster) HasUrl() bool {
|
||||||
|
return (this._flags1_ & (uint64(1) << 1)) > 0
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
func (this *WheelServerCluster) LoadFromKv(kv map[string]interface{}) {
|
func (this *WheelServerCluster) LoadFromKv(kv map[string]interface{}) {
|
||||||
f5.ReadMetaTableField(&this.instance_id, "instance_id", &this._flags1_, 1, kv)
|
f5.ReadMetaTableField(&this.instance_id, "instance_id", &this._flags1_, 1, kv)
|
||||||
@ -109,5 +124,9 @@ func (this *WheelDb) LoadFromKv(kv map[string]interface{}) {
|
|||||||
f5.ReadMetaTableField(&this.database, "database", &this._flags1_, 5, kv)
|
f5.ReadMetaTableField(&this.database, "database", &this._flags1_, 5, kv)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *Web3ServiceCluster) LoadFromKv(kv map[string]interface{}) {
|
||||||
|
f5.ReadMetaTableField(&this.url, "url", &this._flags1_, 1, kv)
|
||||||
|
}
|
||||||
|
|
||||||
func (this *Config) LoadFromKv(kv map[string]interface{}) {
|
func (this *Config) LoadFromKv(kv map[string]interface{}) {
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,11 @@ message WheelDb
|
|||||||
optional string database = 5;
|
optional string database = 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message Web3ServiceCluster
|
||||||
|
{
|
||||||
|
optional string url = 1;
|
||||||
|
}
|
||||||
|
|
||||||
message Config
|
message Config
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user