add restore password endpoints

This commit is contained in:
Sergey Chubaryan 2025-02-17 11:24:37 +03:00
parent 8f16fe84f2
commit b4c1004cf2
4 changed files with 48 additions and 25 deletions

View File

@ -0,0 +1,36 @@
package handlers
import (
"backend/cmd/backend/server/middleware"
"backend/internal/core/services"
httpserver "backend/internal/http_server"
"backend/pkg/logger"
"context"
"fmt"
"github.com/gin-gonic/gin"
)
type inputChangePassword struct {
OldPassword string `json:"oldPassword"`
NewPassword string `json:"newPassword"`
}
func NewUserChangePasswordHandler(log logger.Logger, userService services.UserService) gin.HandlerFunc {
return httpserver.WrapGin(log,
func(ctx context.Context, input inputChangePassword) (interface{}, error) {
ginCtx, ok := ctx.(*gin.Context)
if !ok {
return nil, fmt.Errorf("can not cast context")
}
user := middleware.GetUserFromRequest(ginCtx)
err := userService.ChangePassword(ctx, user.Id, input.OldPassword, input.NewPassword)
if err != nil {
return nil, err
}
return nil, nil
},
)
}

View File

@ -1,12 +1,20 @@
package middleware
import (
"backend/internal/core/models"
"backend/internal/core/services"
"fmt"
"github.com/gin-gonic/gin"
)
func GetUserFromRequest(c *gin.Context) *models.UserDTO {
if user, ok := c.Get("user"); ok {
return user.(*models.UserDTO)
}
return nil
}
func NewAuthMiddleware(userService services.UserService) gin.HandlerFunc {
return func(ctx *gin.Context) {
token := ctx.GetHeader("X-Auth")

View File

@ -3,7 +3,6 @@ package server
import (
"backend/cmd/backend/server/handlers"
"backend/cmd/backend/server/middleware"
"backend/cmd/backend/server/utils"
"backend/internal/core/services"
httpserver "backend/internal/http_server"
"backend/internal/integrations"
@ -49,17 +48,11 @@ func NewServer(opts NewServerOpts) *httpserver.Server {
userGroup.POST("/create", handlers.NewUserCreateHandler(opts.Logger, opts.UserService))
userGroup.POST("/login", handlers.NewUserLoginHandler(opts.Logger, opts.UserService))
userGroup.POST("/send-verify", handlers.NewUserSendVerifyEmailHandler(opts.Logger, opts.UserService))
userGroup.POST("/send-restore-password", handlers.NewUserSendRestorePasswordHandler(opts.Logger, opts.UserService))
userGroup.POST("/restore-password", handlers.NewUserRestorePasswordHandler(opts.Logger, opts.UserService))
}
dummyGroup := v1.Group("/dummy")
dummyGroup.Use(middleware.NewAuthMiddleware(opts.UserService))
{
dummyGroup.GET("", handlers.NewDummyHandler())
dummyGroup.POST("/forgot-password", func(c *gin.Context) {
user := utils.GetUserFromRequest(c)
opts.UserService.SendEmailForgotPassword(c, user.Id)
})
userGroup.Use(middleware.NewAuthMiddleware(opts.UserService))
userGroup.POST("/change-password", handlers.NewUserChangePasswordHandler(opts.Logger, opts.UserService))
}
return httpserver.New(

View File

@ -1,14 +0,0 @@
package utils
import (
"backend/internal/core/models"
"github.com/gin-gonic/gin"
)
func GetUserFromRequest(c *gin.Context) *models.UserDTO {
if user, ok := c.Get("user"); ok {
return user.(*models.UserDTO)
}
return nil
}