1
This commit is contained in:
parent
0d18be75d2
commit
a685c53dfc
@ -34,6 +34,39 @@ module.exports = class {
|
|||||||
new common.RspHead(),
|
new common.RspHead(),
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
'method': 'GET',
|
||||||
|
'name': 'api/v1/user/getNonce',
|
||||||
|
'desc': '获取nonce',
|
||||||
|
'group': 'User',
|
||||||
|
'url': 'api/v1/user/getNonce',
|
||||||
|
'uri_params': [
|
||||||
|
['account', '', 'account'],
|
||||||
|
],
|
||||||
|
'response': [
|
||||||
|
new common.RspHead(),
|
||||||
|
['data', '', 'nonce']
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'method': 'POST',
|
||||||
|
'name': 'metamask_login',
|
||||||
|
'desc': 'metamask用户登录',
|
||||||
|
'group': 'User',
|
||||||
|
'url': 'api/v1/user/metamask_login',
|
||||||
|
'header': [
|
||||||
|
],
|
||||||
|
'is_json_params': true,
|
||||||
|
'params': [
|
||||||
|
['account', '', 'account'],
|
||||||
|
['nonce', '', 'nonce'],
|
||||||
|
['signature', '', 'signature'],
|
||||||
|
['tips', '', 'tips'],
|
||||||
|
],
|
||||||
|
'response': [
|
||||||
|
new common.RspHead(),
|
||||||
|
]
|
||||||
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
package system
|
package system
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"q5"
|
||||||
"f5"
|
"f5"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"main/constant"
|
"mt"
|
||||||
. "main/global"
|
. "main/global"
|
||||||
"main/model/system"
|
"main/model/system"
|
||||||
"net/http"
|
"net/http"
|
||||||
@ -15,50 +16,11 @@ type UserApi struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *UserApi) Login(c *gin.Context) {
|
func (this *UserApi) Login(c *gin.Context) {
|
||||||
//username := c.PostForm("username")
|
|
||||||
//password := c.PostForm("password")
|
|
||||||
//if username == "" || password == "" {
|
|
||||||
// c.JSON(http.StatusOK, gin.H{
|
|
||||||
// "errcode": 1,
|
|
||||||
// "errmsg": "请求参数不正确",
|
|
||||||
// })
|
|
||||||
// return
|
|
||||||
//}
|
|
||||||
type loginForm struct {
|
|
||||||
Username string `binding:"required" json:"username"`
|
|
||||||
Password string `binding:"required" json:"password"`
|
|
||||||
}
|
|
||||||
reqJson := loginForm{}
|
|
||||||
if err := c.ShouldBindJSON(&reqJson); err != nil {
|
|
||||||
c.JSON(http.StatusOK, gin.H{
|
|
||||||
"code": 1,
|
|
||||||
"message": err.Error(),
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
user := system.SysUser{}
|
|
||||||
//err := f5.GetApp().GetOrmDb(constant.ADMIN_DB).Where("username = ?", username).Where("password = ?", password).First(&user).Error
|
|
||||||
err := f5.GetApp().GetOrmDb(constant.ADMIN_DB).Where("username = ?", reqJson.Username).Where("password = ?", reqJson.Password).First(&user).Error
|
|
||||||
if err != nil {
|
|
||||||
c.JSON(http.StatusOK, gin.H{
|
|
||||||
"code": 1,
|
|
||||||
"message": "用户名或密码错误",
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
//token := GetApp().AddSession(username)
|
|
||||||
token := GetApp().AddSession(reqJson.Username)
|
|
||||||
c.JSON(http.StatusOK, gin.H{
|
|
||||||
"code": 0,
|
|
||||||
"message": "登录成功",
|
|
||||||
"data": user,
|
|
||||||
"token": token,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *UserApi) Info(c *gin.Context) {
|
func (this *UserApi) Info(c *gin.Context) {
|
||||||
token := c.Request.Header.Get("Authorization")
|
//token := c.Request.Header.Get("Authorization")
|
||||||
strArr := strings.Split(token, "|")
|
//strArr := strings.Split(token, "|")
|
||||||
//username := c.Query("username")
|
//username := c.Query("username")
|
||||||
//if username == "" {
|
//if username == "" {
|
||||||
// c.JSON(http.StatusOK, gin.H{
|
// c.JSON(http.StatusOK, gin.H{
|
||||||
@ -68,6 +30,19 @@ func (this *UserApi) Info(c *gin.Context) {
|
|||||||
// return
|
// return
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
user := new(system.SysUser)
|
||||||
|
user.Idx = 1000
|
||||||
|
user.Username = ""
|
||||||
|
user.Password = ""
|
||||||
|
q5.NewSlice(&user.Roles, 0, 10)
|
||||||
|
q5.AppendSlice(&user.Roles, "admin")
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"code": 0,
|
||||||
|
"message": "success",
|
||||||
|
"data": user,
|
||||||
|
})
|
||||||
|
|
||||||
|
/*
|
||||||
user := system.SysUser{}
|
user := system.SysUser{}
|
||||||
err := f5.GetApp().GetOrmDb(constant.ADMIN_DB).Where("username = ?", strArr[0]).First(&user).Error
|
err := f5.GetApp().GetOrmDb(constant.ADMIN_DB).Where("username = ?", strArr[0]).First(&user).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -83,7 +58,7 @@ func (this *UserApi) Info(c *gin.Context) {
|
|||||||
"code": 0,
|
"code": 0,
|
||||||
"message": "success",
|
"message": "success",
|
||||||
"data": user,
|
"data": user,
|
||||||
})
|
})*/
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *UserApi) Logout(c *gin.Context) {
|
func (this *UserApi) Logout(c *gin.Context) {
|
||||||
@ -95,3 +70,54 @@ func (this *UserApi) Logout(c *gin.Context) {
|
|||||||
"message": "success",
|
"message": "success",
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *UserApi) MetaMaskLogin(c *gin.Context) {
|
||||||
|
reqJson := struct {
|
||||||
|
AccountAddress string `json:"account"`
|
||||||
|
Nonce string `json:"nonce"`
|
||||||
|
Signature string `json:"signature"`
|
||||||
|
Tips string `json:"tips"`
|
||||||
|
}{}
|
||||||
|
if err := c.ShouldBindJSON(&reqJson); err != nil {
|
||||||
|
f5.RspErr2(c, 1, err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if len(reqJson.Nonce) > 1024 || len(reqJson.Signature) > 1024 || len(reqJson.Tips) > 1024 {
|
||||||
|
f5.RspErr2(c, 2, "param error")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
f5.GetHttpCliMgr().SendGoStyleRequest(
|
||||||
|
mt.Table.Web3ServiceCluster.RandElement().GetUrl() + "/webapp/index.php",
|
||||||
|
map[string]string {
|
||||||
|
"c": "BcService",
|
||||||
|
"a": "authVerifySignature",
|
||||||
|
"tips": reqJson.Tips,
|
||||||
|
"nonce": reqJson.Nonce,
|
||||||
|
"signature": reqJson.Signature,
|
||||||
|
},
|
||||||
|
func (rsp f5.HttpCliResponse) {
|
||||||
|
if rsp.GetErr() != nil {
|
||||||
|
f5.RspErr2(c, 500, rsp.GetErr().Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
rspJson := struct {
|
||||||
|
ErrCode int32 `json:"errcode"`
|
||||||
|
ErrMsg string `json:"errmsg"`
|
||||||
|
Recovered string `json:"recovered"`
|
||||||
|
}{}
|
||||||
|
if q5.DecodeJson(rsp.GetRawData(), &rspJson) != nil {
|
||||||
|
f5.RspErr2(c, 500, "server internal error")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if strings.ToLower(rspJson.Recovered) != strings.ToLower(reqJson.AccountAddress) {
|
||||||
|
f5.RspErr2(c, 500, "server internal error")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.JSON(http.StatusOK, gin.H{
|
||||||
|
"code": 0,
|
||||||
|
"message": "success",
|
||||||
|
"token": "312424",
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
@ -1,24 +1,20 @@
|
|||||||
package app
|
package app
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"crypto/md5"
|
//"crypto/md5"
|
||||||
"encoding/hex"
|
//"encoding/hex"
|
||||||
"f5"
|
"f5"
|
||||||
"fmt"
|
//"fmt"
|
||||||
"main/constant"
|
"main/constant"
|
||||||
"main/task"
|
"main/task"
|
||||||
"math/rand"
|
|
||||||
"mt"
|
"mt"
|
||||||
"sync"
|
//"sync"
|
||||||
"time"
|
//"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
type app struct {
|
type app struct {
|
||||||
initCb func()
|
initCb func()
|
||||||
unInitCb func()
|
unInitCb func()
|
||||||
sessionLock sync.Mutex
|
|
||||||
sessionHash map[string]string
|
|
||||||
accountIdHash map[string]string
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *app) GetPkgName() string {
|
func (this *app) GetPkgName() string {
|
||||||
@ -38,8 +34,6 @@ func (this *app) Run(initCb func(), unInitCb func()) {
|
|||||||
func (this *app) Init() {
|
func (this *app) Init() {
|
||||||
f5.LoadMetaTable(mt.Table)
|
f5.LoadMetaTable(mt.Table)
|
||||||
this.registerDataSources()
|
this.registerDataSources()
|
||||||
this.sessionHash = make(map[string]string)
|
|
||||||
this.accountIdHash = make(map[string]string)
|
|
||||||
task.TaskMgr.Init()
|
task.TaskMgr.Init()
|
||||||
this.initCb()
|
this.initCb()
|
||||||
}
|
}
|
||||||
@ -130,6 +124,7 @@ func (this *app) registerDataSources() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *app) AddSession(accountId string) string {
|
func (this *app) AddSession(accountId string) string {
|
||||||
|
/*
|
||||||
this.sessionLock.Lock()
|
this.sessionLock.Lock()
|
||||||
defer this.sessionLock.Unlock()
|
defer this.sessionLock.Unlock()
|
||||||
uuid := f5.GetApp().NewGlobalUuid()
|
uuid := f5.GetApp().NewGlobalUuid()
|
||||||
@ -141,34 +136,8 @@ func (this *app) AddSession(accountId string) string {
|
|||||||
token := accountId + "|" + md5String
|
token := accountId + "|" + md5String
|
||||||
this.sessionHash[accountId] = token
|
this.sessionHash[accountId] = token
|
||||||
return token
|
return token
|
||||||
}
|
*/
|
||||||
|
return ""
|
||||||
const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
||||||
|
|
||||||
func randStringBytes(n int) string {
|
|
||||||
b := make([]byte, n)
|
|
||||||
for i := range b {
|
|
||||||
b[i] = letterBytes[rand.Intn(len(letterBytes))]
|
|
||||||
}
|
|
||||||
return string(b)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *app) GetSessionAccountId(accountId string) string {
|
|
||||||
this.sessionLock.Lock()
|
|
||||||
defer this.sessionLock.Unlock()
|
|
||||||
if session, ok := this.sessionHash[accountId]; ok {
|
|
||||||
return session
|
|
||||||
} else {
|
|
||||||
return "nil"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *app) RemoveSession(accountId string) {
|
|
||||||
this.sessionLock.Lock()
|
|
||||||
defer this.sessionLock.Unlock()
|
|
||||||
if _, ok := this.sessionHash[accountId]; ok {
|
|
||||||
delete(this.sessionHash, accountId)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *app) HasTask() bool {
|
func (this *app) HasTask() bool {
|
||||||
|
@ -2,13 +2,14 @@ package middleware
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
. "main/global"
|
//. "main/global"
|
||||||
"net/http"
|
//"net/http"
|
||||||
"strings"
|
//"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Auth() gin.HandlerFunc {
|
func Auth() gin.HandlerFunc {
|
||||||
return func(c *gin.Context) {
|
return func(c *gin.Context) {
|
||||||
|
/*
|
||||||
token := c.Request.Header.Get("Authorization")
|
token := c.Request.Header.Get("Authorization")
|
||||||
strArr := strings.Split(token, "|")
|
strArr := strings.Split(token, "|")
|
||||||
authToken := GetApp().GetSessionAccountId(strArr[0])
|
authToken := GetApp().GetSessionAccountId(strArr[0])
|
||||||
@ -17,11 +18,10 @@ func Auth() gin.HandlerFunc {
|
|||||||
"code": 50014,
|
"code": 50014,
|
||||||
"message": "未登录或非法访问",
|
"message": "未登录或非法访问",
|
||||||
})
|
})
|
||||||
/*
|
response.FailWithDetailed(gin.H{"reload": true}, "未登录或非法访问", c)
|
||||||
response.FailWithDetailed(gin.H{"reload": true}, "未登录或非法访问", c)*/
|
|
||||||
c.Abort()
|
c.Abort()
|
||||||
return
|
return
|
||||||
}
|
}*/
|
||||||
c.Next()
|
c.Next()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,7 @@ func (this *UserRouter) InitUserRouter(priRouter *gin.RouterGroup,
|
|||||||
{
|
{
|
||||||
pubUserRouter.POST("login", userApi.Login)
|
pubUserRouter.POST("login", userApi.Login)
|
||||||
pubUserRouter.GET("getNonce", userApi.GetNonce)
|
pubUserRouter.GET("getNonce", userApi.GetNonce)
|
||||||
|
pubUserRouter.POST("metamask_login", userApi.MetaMaskLogin)
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
priUserRouter.GET("info", userApi.Info)
|
priUserRouter.GET("info", userApi.Info)
|
||||||
|
2
third_party/f5
vendored
2
third_party/f5
vendored
@ -1 +1 @@
|
|||||||
Subproject commit ac6d1f71f5281b1a10c7fadce50ef65e48a9f41f
|
Subproject commit 5610bc1f758e6b7b7738e4ac4ee492206b26b3e3
|
Loading…
x
Reference in New Issue
Block a user