20251209
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"bbs-go/internal/controllers/render"
|
||||
|
||||
"github.com/dchest/captcha"
|
||||
"github.com/kataras/iris/v12"
|
||||
"github.com/mlogclub/simple/web"
|
||||
|
||||
"bbs-go/internal/pkg/errs"
|
||||
"bbs-go/internal/services"
|
||||
)
|
||||
|
||||
type LoginController struct {
|
||||
Ctx iris.Context
|
||||
}
|
||||
|
||||
// 注册
|
||||
func (c *LoginController) PostSignup() *web.JsonResult {
|
||||
var (
|
||||
captchaId = c.Ctx.PostValueTrim("captchaId")
|
||||
captchaCode = c.Ctx.PostValueTrim("captchaCode")
|
||||
email = c.Ctx.PostValueTrim("email")
|
||||
username = c.Ctx.PostValueTrim("username")
|
||||
password = c.Ctx.PostValueTrim("password")
|
||||
rePassword = c.Ctx.PostValueTrim("rePassword")
|
||||
nickname = c.Ctx.PostValueTrim("nickname")
|
||||
redirect = c.Ctx.FormValue("redirect")
|
||||
)
|
||||
loginMethod := services.SysConfigService.GetLoginMethod()
|
||||
if !loginMethod.Password {
|
||||
return web.JsonErrorMsg("账号密码登录/注册已禁用")
|
||||
}
|
||||
if !captcha.VerifyString(captchaId, captchaCode) {
|
||||
return web.JsonError(errs.CaptchaError)
|
||||
}
|
||||
user, err := services.UserService.SignUp(username, email, nickname, password, rePassword)
|
||||
if err != nil {
|
||||
return web.JsonError(err)
|
||||
}
|
||||
return render.BuildLoginSuccess(c.Ctx, user, redirect)
|
||||
}
|
||||
|
||||
// 用户名密码登录
|
||||
func (c *LoginController) PostSignin() *web.JsonResult {
|
||||
var (
|
||||
captchaId = c.Ctx.PostValueTrim("captchaId")
|
||||
captchaCode = c.Ctx.PostValueTrim("captchaCode")
|
||||
username = c.Ctx.PostValueTrim("username")
|
||||
password = c.Ctx.PostValueTrim("password")
|
||||
redirect = c.Ctx.FormValue("redirect")
|
||||
)
|
||||
loginMethod := services.SysConfigService.GetLoginMethod()
|
||||
if !loginMethod.Password {
|
||||
return web.JsonErrorMsg("账号密码登录/注册已禁用")
|
||||
}
|
||||
|
||||
if !captcha.VerifyString(captchaId, captchaCode) {
|
||||
return web.JsonError(errs.CaptchaError)
|
||||
}
|
||||
user, err := services.UserService.SignIn(username, password)
|
||||
if err != nil {
|
||||
return web.JsonError(err)
|
||||
}
|
||||
return render.BuildLoginSuccess(c.Ctx, user, redirect)
|
||||
}
|
||||
|
||||
// 退出登录
|
||||
func (c *LoginController) GetSignout() *web.JsonResult {
|
||||
err := services.UserTokenService.Signout(c.Ctx)
|
||||
if err != nil {
|
||||
return web.JsonError(err)
|
||||
}
|
||||
return web.JsonSuccess()
|
||||
}
|
||||
Reference in New Issue
Block a user