44 lines
1.3 KiB
Go
44 lines
1.3 KiB
Go
package auth
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/perfect-panel/ppanel-server/internal/logic/auth"
|
|
"github.com/perfect-panel/ppanel-server/internal/svc"
|
|
"github.com/perfect-panel/ppanel-server/internal/types"
|
|
"github.com/perfect-panel/ppanel-server/pkg/result"
|
|
"github.com/perfect-panel/ppanel-server/pkg/turnstile"
|
|
"github.com/perfect-panel/ppanel-server/pkg/xerr"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
// Reset password
|
|
func ResetPasswordHandler(svcCtx *svc.ServiceContext) func(c *gin.Context) {
|
|
return func(c *gin.Context) {
|
|
var req types.ResetPasswordRequest
|
|
_ = c.ShouldBind(&req)
|
|
validateErr := svcCtx.Validate(&req)
|
|
if validateErr != nil {
|
|
result.ParamErrorResult(c, validateErr)
|
|
return
|
|
}
|
|
// get client ip
|
|
req.IP = c.ClientIP()
|
|
if svcCtx.Config.Verify.ResetPasswordVerify {
|
|
verifyTurns := turnstile.New(turnstile.Config{
|
|
Secret: svcCtx.Config.Verify.TurnstileSecret,
|
|
Timeout: 3 * time.Second,
|
|
})
|
|
if verify, err := verifyTurns.Verify(c, req.CfToken, req.IP); err != nil || !verify {
|
|
err = errors.Wrapf(xerr.NewErrCode(xerr.TooManyRequests), "error: %v, verify: %v", err, verify)
|
|
result.HttpResult(c, nil, err)
|
|
return
|
|
}
|
|
}
|
|
l := auth.NewResetPasswordLogic(c.Request.Context(), svcCtx)
|
|
resp, err := l.ResetPassword(&req)
|
|
result.HttpResult(c, resp, err)
|
|
}
|
|
}
|