Merge branch 'main' of ssh://git.ma-al.com:8822/goc_daniel/b2b into storage
This commit is contained in:
@@ -79,7 +79,7 @@ func AuthMiddleware() fiber.Handler {
|
||||
}
|
||||
|
||||
// We now populate the target user
|
||||
if user.Role != model.RoleAdmin {
|
||||
if model.CustomerRole(user.Role.Name) != model.RoleAdmin {
|
||||
return c.Status(fiber.StatusForbidden).JSON(fiber.Map{
|
||||
"error": "admin access required",
|
||||
})
|
||||
|
||||
28
app/delivery/middleware/permissions.go
Normal file
28
app/delivery/middleware/permissions.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"git.ma-al.com/goc_daniel/b2b/app/delivery/middleware/perms"
|
||||
"git.ma-al.com/goc_daniel/b2b/app/model"
|
||||
"github.com/gofiber/fiber/v3"
|
||||
)
|
||||
|
||||
func Require(p perms.Permission) fiber.Handler {
|
||||
return func(c fiber.Ctx) error {
|
||||
u := c.Locals("user")
|
||||
if u == nil {
|
||||
return c.SendStatus(fiber.StatusUnauthorized)
|
||||
}
|
||||
|
||||
user, ok := u.(*model.UserSession)
|
||||
if !ok {
|
||||
return c.SendStatus(fiber.StatusInternalServerError)
|
||||
}
|
||||
|
||||
for _, perm := range user.Permissions {
|
||||
if perm == p {
|
||||
return c.Next()
|
||||
}
|
||||
}
|
||||
return c.SendStatus(fiber.StatusForbidden)
|
||||
}
|
||||
}
|
||||
10
app/delivery/middleware/perms/permissions.go
Normal file
10
app/delivery/middleware/perms/permissions.go
Normal file
@@ -0,0 +1,10 @@
|
||||
package perms
|
||||
|
||||
type Permission string
|
||||
|
||||
const (
|
||||
UserReadAny Permission = "user.read.any"
|
||||
UserWriteAny Permission = "user.write.any"
|
||||
UserDeleteAny Permission = "user.delete.any"
|
||||
CurrencyWrite Permission = "currency.write"
|
||||
)
|
||||
Reference in New Issue
Block a user