package auth import ( "time" "github.com/gin-gonic/gin" "github.com/perfect-panel/server/internal/logic/app/auth" "github.com/perfect-panel/server/internal/svc" "github.com/perfect-panel/server/internal/types" "github.com/perfect-panel/server/pkg/result" "github.com/perfect-panel/server/pkg/turnstile" "github.com/perfect-panel/server/pkg/xerr" "github.com/pkg/errors" ) // Register func RegisterHandler(svcCtx *svc.ServiceContext) func(c *gin.Context) { return func(c *gin.Context) { var req types.AppAuthRequest _ = c.ShouldBind(&req) validateErr := svcCtx.Validate(&req) if validateErr != nil { result.ParamErrorResult(c, validateErr) return } // get client ip if svcCtx.Config.Verify.RegisterVerify { verifyTurns := turnstile.New(turnstile.Config{ Secret: svcCtx.Config.Verify.TurnstileSecret, Timeout: 3 * time.Second, }) if verify, err := verifyTurns.Verify(c, req.CfToken, c.ClientIP()); err != nil || !verify { err = errors.Wrapf(xerr.NewErrCode(xerr.TooManyRequests), "error: %v, verify: %v", err, verify) result.HttpResult(c, nil, err) return } } l := auth.NewRegisterLogic(c, svcCtx) resp, err := l.Register(&req) result.HttpResult(c, resp, err) } }