28 lines
563 B
Go
28 lines
563 B
Go
package middleware
|
|
|
|
import (
|
|
"backend/internal/core/services"
|
|
"fmt"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func NewAuthMiddleware(userService services.UserService) gin.HandlerFunc {
|
|
return func(ctx *gin.Context) {
|
|
token := ctx.GetHeader("X-Auth")
|
|
if token == "" {
|
|
ctx.AbortWithError(403, fmt.Errorf("authorization required"))
|
|
return
|
|
}
|
|
|
|
user, err := userService.ValidateToken(ctx, token)
|
|
if err == services.ErrUserWrongToken || err == services.ErrUserNotExists {
|
|
ctx.AbortWithError(403, err)
|
|
return
|
|
}
|
|
|
|
ctx.Set("user", user)
|
|
ctx.Next()
|
|
}
|
|
}
|