29 lines
970 B
Go
29 lines
970 B
Go
package middleware
|
|
|
|
import (
|
|
"git.ma-al.com/goc_daniel/b2b/app/delivery/middleware/perms"
|
|
"git.ma-al.com/goc_daniel/b2b/app/utils/localeExtractor"
|
|
"git.ma-al.com/goc_daniel/b2b/app/utils/nullable"
|
|
"git.ma-al.com/goc_daniel/b2b/app/utils/response"
|
|
"git.ma-al.com/goc_daniel/b2b/app/utils/responseErrors"
|
|
"github.com/gofiber/fiber/v3"
|
|
)
|
|
|
|
func Require(p perms.Permission) fiber.Handler {
|
|
return func(c fiber.Ctx) error {
|
|
user, ok := localeExtractor.GetCustomer(c)
|
|
if !ok {
|
|
return c.Status(responseErrors.GetErrorStatus(responseErrors.ErrInvalidBody)).
|
|
JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, responseErrors.ErrInvalidBody)))
|
|
}
|
|
|
|
for _, perm := range user.Role.Permissions {
|
|
if perm.Name == p {
|
|
return c.Next()
|
|
}
|
|
}
|
|
return c.Status(responseErrors.GetErrorStatus(responseErrors.ErrForbidden)).
|
|
JSON(response.Make(nullable.GetNil(""), 0, responseErrors.GetErrorCode(c, responseErrors.ErrForbidden)))
|
|
}
|
|
}
|