| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package controller
- import (
- "f1-game/internal/code"
- "f1-game/internal/component/sdk"
- sdkFacade "f1-game/internal/component/sdk/define/facade"
- "f1-game/internal/data"
- "f1-game/internal/extend/token"
- nameKey "f1-game/internal/name/key"
- cstring "github.com/cherry-game/cherry/extend/string"
- clog "github.com/cherry-game/cherry/logger"
- cgin "github.com/cherry-game/components/gin"
- )
- type LoginController struct {
- cgin.BaseController
- }
- func (p *LoginController) Init() {
- allowRegister := p.App.Settings().GetBool("allow_register", false)
- if allowRegister {
- p.Any("/login", p.login)
- }
- }
- // login 根据pid获取SdkConfig,与第三方进行帐号登录效验
- // http://127.0.0.1/login?pid=2188001&account=test1&password=test1
- func (p *LoginController) login(c *cgin.Context) {
- pid := c.GetInt32(nameKey.PID, 0, true)
- if pid < 1 {
- clog.Warnf("if pid < 1 {. params=%s", c.GetParams())
- code.JSONResult(c, code.PIDError)
- return
- }
- sdkRow := data.SDK.Get(pid)
- if sdkRow == nil {
- clog.Warnf("if sdkConfig == nil {. params=%s", c.GetParams())
- code.JSONResult(c, code.AccountLoginSDKNotFound)
- return
- }
- sdkInvoke, err := sdk.GetInvoke(sdkRow.SdkID)
- if err != nil {
- clog.Warnf("[pid = %d] get invoke error. params=%s", pid, c.GetParams())
- code.JSONResult(c, code.PIDError)
- return
- }
- paramsMap := c.GetParams(true)
- paramsMap[nameKey.PID] = cstring.ToString(pid)
- // invoke login
- sdkInvoke.Login(sdkRow, paramsMap, func(statusCode int32, paramsMap sdkFacade.ParamsMap, error ...error) {
- if code.IsFail(statusCode) {
- clog.Warnf("login validate fail. code = %d, params = %s", statusCode, c.GetParams())
- if len(error) > 0 {
- clog.Warnf("code = %d, error = %s", statusCode, error[0])
- }
- code.JSONResult(c, statusCode)
- return
- }
- if paramsMap == nil {
- clog.Warnf("callback paramsMap is nil. params= %s", c.GetParams())
- code.JSONResult(c, code.AccountLoginResponseError)
- return
- }
- openID := paramsMap.Get(nameKey.OpenID)
- if cstring.IsBlank(openID) {
- clog.Warnf("callback result map not found `open_id`. paramsMap = %v", paramsMap)
- code.JSONResult(c, code.AccountLoginResponseError)
- return
- }
- base64Token := token.New(pid, openID, sdkRow.Salt).ToBase64()
- code.JSONResult(c, code.OK, base64Token)
- })
- }
|