package captcha import ( "git.noahlan.cn/n-admin/n-admin-server/dal/errx" "git.noahlan.cn/noahlan/ntool-biz/core/captcha" "git.noahlan.cn/noahlan/ntool-biz/core/config" "git.noahlan.cn/noahlan/ntool-biz/core/nstatus" "github.com/mojocn/base64Captcha" "strings" ) type CaptchaMgr struct { Captcha *base64Captcha.Captcha } func NewCaptchaManager(config captcha.Config, redisConf config.RedisConf) *CaptchaMgr { return &CaptchaMgr{ Captcha: captcha.MustNewRedisCaptcha(config, redisConf), } } func (c *CaptchaMgr) Verify(captchaId, captchaStr string, clear bool) error { if captchaId != "" && captchaStr != "" { if ok := c.Captcha.Verify("CAPTCHA_"+captchaId, strings.ToLower(captchaStr), clear); !ok { return nstatus.NewBizErrWithCode(errx.InvalidCaptchaErr) } } return nil } func (c *CaptchaMgr) Generate() (id, b64s string, err error) { id, b64s, err = c.Captcha.Generate() if err != nil { return "", "", nstatus.NewBizErrWithCode(errx.CaptchaGenerateErr) } return id, b64s, nil }