diff --git a/api/v1/common/captcha.go b/api/v1/common/captcha.go index cef6a46..fab8ab4 100644 --- a/api/v1/common/captcha.go +++ b/api/v1/common/captcha.go @@ -26,9 +26,10 @@ type CheckCaptchaV2Req struct { } type CaptchaRes struct { - g.Meta `mime:"application/json"` - Key string `json:"key"` - Img string `json:"img"` + g.Meta `mime:"application/json"` + Key string `json:"key"` + Img string `json:"img"` + VerifyStatus int `json:"verifyStatus"` } type CaptchaV2Res struct { diff --git a/api/v1/system/sys_login.go b/api/v1/system/sys_login.go index 3bc7935..91cdc6e 100644 --- a/api/v1/system/sys_login.go +++ b/api/v1/system/sys_login.go @@ -17,7 +17,7 @@ type UserLoginReq struct { g.Meta `path:"/login" tags:"登录" method:"post" summary:"用户登录"` Username string `p:"username" v:"required#用户名不能为空"` Password string `p:"password" v:"required#密码不能为空"` - VerifyCode string `p:"verifyCode" v:"required#验证码不能为空"` + VerifyCode string `p:"verifyCode"` VerifyKey string `p:"verifyKey"` } diff --git a/go.sum b/go.sum index dd9e70a..2797178 100644 --- a/go.sum +++ b/go.sum @@ -14,6 +14,7 @@ github.com/aliyun/aliyun-oss-go-sdk v2.2.8+incompatible h1:6JF1bjhT0WN2srEmijfOF github.com/aliyun/aliyun-oss-go-sdk v2.2.8+incompatible/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= github.com/apache/rocketmq-client-go/v2 v2.1.1 h1:WY/LkOYSQaVyV+HOqdiIgF4LE3beZ/jwdSLKZlzpabw= github.com/apache/rocketmq-client-go/v2 v2.1.1/go.mod h1:GZzExtXY9zpI6FfiVJYAhw2IXQtgnHUuWpULo7nr5lw= +github.com/asaskevich/EventBus v0.0.0-20200907212545-49d423059eef h1:2JGTg6JapxP9/R33ZaagQtAM4EkkSYnIAlOG5EI8gkM= github.com/asaskevich/EventBus v0.0.0-20200907212545-49d423059eef/go.mod h1:JS7hed4L1fj0hXcyEejnW57/7LCetXggd+vwrRnYeII= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= diff --git a/internal/app/common/controller/captcha.go b/internal/app/common/controller/captcha.go index 2747ebc..8fccc8a 100644 --- a/internal/app/common/controller/captcha.go +++ b/internal/app/common/controller/captcha.go @@ -10,6 +10,7 @@ package controller import ( "context" "errors" + "github.com/gogf/gf/v2/frame/g" "github.com/tiger1103/gfast/v3/api/v1/common" "github.com/tiger1103/gfast/v3/internal/app/common/service" "time" @@ -24,8 +25,9 @@ type captchaController struct { func (c *captchaController) Get(ctx context.Context, req *common.CaptchaReq) (res *common.CaptchaRes, err error) { idKeyC, base64stringC, err := service.Captcha().GetVerifyImgString(ctx) res = &common.CaptchaRes{ - Key: idKeyC, - Img: base64stringC, + Key: idKeyC, + Img: base64stringC, + VerifyStatus: g.Cfg().MustGet(ctx, "system.verifyStatus").Int(), } return } diff --git a/internal/app/system/controller/sys_login.go b/internal/app/system/controller/sys_login.go index 6a1efda..04b03c7 100644 --- a/internal/app/system/controller/sys_login.go +++ b/internal/app/system/controller/sys_login.go @@ -13,8 +13,8 @@ import ( "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gctx" + "github.com/gogf/gf/v2/text/gstr" "github.com/gogf/gf/v2/util/gconv" - "github.com/gogf/gf/v2/util/gmode" "github.com/tiger1103/gfast/v3/api/v1/system" commonService "github.com/tiger1103/gfast/v3/internal/app/common/service" "github.com/tiger1103/gfast/v3/internal/app/system/model" @@ -38,20 +38,29 @@ func (c *loginController) Login(ctx context.Context, req *system.UserLoginReq) ( menuList []*model.UserMenus ) //判断验证码是否正确 - debug := gmode.IsDevelop() - if !debug { + verifyStatus := g.Cfg().MustGet(ctx, "system.verifyStatus").Int() + if verifyStatus == 1 { // 验证码v1版 - //if !commonService.Captcha().VerifyString(req.VerifyKey, req.VerifyCode) { - // err = gerror.New("验证码输入错误") - // return - //} - + if gstr.Trim(req.VerifyCode) == "" { + err = gerror.New("验证码输入错误") + return + } + if !commonService.Captcha().VerifyString(req.VerifyKey, req.VerifyCode) { + err = gerror.New("验证码输入错误") + return + } + } else if verifyStatus == 2 { // 验证码v2版 + if gstr.Trim(req.VerifyCode) == "" { + err = gerror.New("人机交互验证失败") + return + } err = commonService.Captcha().CheckCaptchaV2(ctx, req.VerifyKey, req.VerifyCode, true) if err != nil { return } } + ip := libUtils.GetClientIp(ctx) userAgent := libUtils.GetUserAgent(ctx) user, err = service.SysUser().GetAdminUserByUsernamePassword(ctx, req) diff --git a/internal/app/system/logic/toolsGenTable/tools_gen_table.go b/internal/app/system/logic/toolsGenTable/tools_gen_table.go index 3d02c39..3b861d4 100644 --- a/internal/app/system/logic/toolsGenTable/tools_gen_table.go +++ b/internal/app/system/logic/toolsGenTable/tools_gen_table.go @@ -1087,35 +1087,35 @@ func (s *sToolsGenTable) GenCode(ctx context.Context, ids []int) (err error) { for key, code := range genData { switch key { case "api": - path := strings.Join([]string{curDir, "/", apiName, "/", modulePath, "/", extendData.TableName, ".go"}, "") + path := strings.Join([]string{curDir, "/", apiName, "/", modulePath, "/", extendData.BusinessName, ".go"}, "") err = s.createFile(path, code, extendData.Overwrite) liberr.ErrIsNil(ctx, err) case "controller": - path := strings.Join([]string{curDir, "/", packageName, "/controller/", extendData.TableName, ".go"}, "") + path := strings.Join([]string{curDir, "/", packageName, "/controller/", extendData.BusinessName, ".go"}, "") err = s.createFile(path, code, extendData.Overwrite) liberr.ErrIsNil(ctx, err) case "dao": - path := strings.Join([]string{curDir, "/", packageName, "/dao/", extendData.TableName, ".go"}, "") + path := strings.Join([]string{curDir, "/", packageName, "/dao/", extendData.BusinessName, ".go"}, "") err = s.createFile(path, code, extendData.Overwrite) liberr.ErrIsNil(ctx, err) case "dao_internal": - path := strings.Join([]string{curDir, "/", packageName, "/dao/internal/", extendData.TableName, ".go"}, "") + path := strings.Join([]string{curDir, "/", packageName, "/dao/internal/", extendData.BusinessName, ".go"}, "") err = s.createFile(path, code, extendData.Overwrite) liberr.ErrIsNil(ctx, err) case "logic": - path := strings.Join([]string{curDir, "/", packageName, "/logic/", businessName, "/", extendData.TableName, ".go"}, "") + path := strings.Join([]string{curDir, "/", packageName, "/logic/", businessName, "/", extendData.BusinessName, ".go"}, "") err = s.createFile(path, code, extendData.Overwrite) liberr.ErrIsNil(ctx, err) case "model": - path := strings.Join([]string{curDir, "/", packageName, "/model/", extendData.TableName, ".go"}, "") + path := strings.Join([]string{curDir, "/", packageName, "/model/", extendData.BusinessName, ".go"}, "") err = s.createFile(path, code, extendData.Overwrite) liberr.ErrIsNil(ctx, err) case "model_do": - path := strings.Join([]string{curDir, "/", packageName, "/model/do/", extendData.TableName, ".go"}, "") + path := strings.Join([]string{curDir, "/", packageName, "/model/do/", extendData.BusinessName, ".go"}, "") err = s.createFile(path, code, extendData.Overwrite) liberr.ErrIsNil(ctx, err) case "model_entity": - path := strings.Join([]string{curDir, "/", packageName, "/model/entity/", extendData.TableName, ".go"}, "") + path := strings.Join([]string{curDir, "/", packageName, "/model/entity/", extendData.BusinessName, ".go"}, "") err = s.createFile(path, code, extendData.Overwrite) liberr.ErrIsNil(ctx, err) case "router": @@ -1125,15 +1125,15 @@ func (s *sToolsGenTable) GenCode(ctx context.Context, ids []int) (err error) { liberr.ErrIsNil(ctx, err) } case "router_func": - path := strings.Join([]string{curDir, "/", packageName, "/router/", extendData.TableName, ".go"}, "") + path := strings.Join([]string{curDir, "/", packageName, "/router/", extendData.BusinessName, ".go"}, "") err = s.createFile(path, code, extendData.Overwrite) liberr.ErrIsNil(ctx, err) case "service": - path := strings.Join([]string{curDir, "/", packageName, "/service/", extendData.TableName, ".go"}, "") + path := strings.Join([]string{curDir, "/", packageName, "/service/", extendData.BusinessName, ".go"}, "") err = s.createFile(path, code, extendData.Overwrite) liberr.ErrIsNil(ctx, err) case "sql": - path := strings.Join([]string{curDir, "/resource/data/gen_sql/", modulePath, "/", extendData.TableName, ".sql"}, "") + path := strings.Join([]string{curDir, "/resource/data/gen_sql/", modulePath, "/", extendData.BusinessName, ".sql"}, "") hasSql := gfile.Exists(path) err = s.createFile(path, code, extendData.Overwrite) liberr.ErrIsNil(ctx, err)