45 lines
1.2 KiB
Go
Executable File
45 lines
1.2 KiB
Go
Executable File
package controller
|
|
|
|
import (
|
|
"atom/modules/system/dto"
|
|
"atom/providers/config"
|
|
"errors"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/mojocn/base64Captcha"
|
|
)
|
|
|
|
type CaptchaController interface {
|
|
Show(*gin.Context) (dto.SysCaptchaResponse, error)
|
|
}
|
|
|
|
type captchaControllerImpl struct {
|
|
conf *config.Config
|
|
}
|
|
|
|
func NewCaptchaController(conf *config.Config) CaptchaController {
|
|
return &captchaControllerImpl{conf: conf}
|
|
}
|
|
|
|
func (c *captchaControllerImpl) Show(ctx *gin.Context) (dto.SysCaptchaResponse, error) {
|
|
// 判断验证码是否开启
|
|
var store = base64Captcha.DefaultMemStore
|
|
|
|
// 字符,公式,验证码配置
|
|
// 生成默认数字的driver
|
|
driver := base64Captcha.NewDriverDigit(c.conf.Captcha.ImgHeight, c.conf.Captcha.ImgWidth, c.conf.Captcha.KeyLong, 0.7, 80)
|
|
// cp := base64Captcha.NewCaptcha(driver, store.UseWithCtx(c)) // v8下使用redis
|
|
cp := base64Captcha.NewCaptcha(driver, store)
|
|
id, b64s, err := cp.Generate()
|
|
if err != nil {
|
|
return dto.SysCaptchaResponse{}, errors.New("验证码获取失败")
|
|
}
|
|
|
|
return dto.SysCaptchaResponse{
|
|
CaptchaId: id,
|
|
PicPath: b64s,
|
|
CaptchaLength: c.conf.Captcha.KeyLong,
|
|
OpenCaptcha: c.conf.Captcha.OpenCaptcha != 0,
|
|
}, nil
|
|
}
|