add check roles

This commit is contained in:
andrusyakka
2023-07-05 18:37:24 +03:00
parent 3dd20da723
commit a8be97985a
5 changed files with 24 additions and 6 deletions

View File

@@ -4,6 +4,7 @@ import (
"astra-users/config" "astra-users/config"
"astra-users/handler" "astra-users/handler"
"astra-users/model" "astra-users/model"
"astra-users/mw"
"github.com/labstack/echo/v4" "github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware" "github.com/labstack/echo/v4/middleware"
"gorm.io/driver/sqlite" "gorm.io/driver/sqlite"
@@ -49,11 +50,11 @@ func main() {
e.DELETE("/:id", h.DeleteUser) e.DELETE("/:id", h.DeleteUser)
e.GET("/health", h.Health) e.GET("/health", h.Health)
e.GET("/positions/:id", h.GetPositionHandler) e.GET("/positions/:id", h.GetPositionHandler, mw.CheckAdminRole)
e.POST("/positions", h.CreatePosition) e.POST("/positions", h.CreatePosition, mw.CheckAdminRole)
e.GET("/organizations", h.GetOrganizations) e.GET("/organizations", h.GetOrganizations, mw.CheckAdminRole)
e.POST("/organizations", h.CreateOrganization) e.POST("/organizations", h.CreateOrganization, mw.CheckAdminRole)
e.Logger.Fatal(e.Start(":" + config.Env.Server.Port)) e.Logger.Fatal(e.Start(":" + config.Env.Server.Port))
} }

View File

@@ -4,7 +4,7 @@ import "gorm.io/gorm"
type Organization struct { type Organization struct {
gorm.Model gorm.Model
Name string `gorm:"unique;index"` Name string `json:"name" gorm:"unique;index"`
ParentID uint `json:"parent_id"` ParentID uint `json:"parent_id"`
Positions []Position `json:"positions,omitempty"` Positions []Position `json:"positions,omitempty"`
} }

View File

@@ -4,7 +4,7 @@ import "gorm.io/gorm"
type Position struct { type Position struct {
gorm.Model gorm.Model
Name string `gorm:"unique;index"` Name string `json:"name" gorm:"unique;index"`
RightMask int `json:"right_mask"` RightMask int `json:"right_mask"`
OrganizationID uint `json:"organization_id" gorm:"index;not null"` OrganizationID uint `json:"organization_id" gorm:"index;not null"`
Users []User `json:"users,omitempty"` Users []User `json:"users,omitempty"`

17
mw/check_admin_role.go Normal file
View File

@@ -0,0 +1,17 @@
package mw
import (
"github.com/labstack/echo/v4"
"net/http"
)
func CheckAdminRole(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
role := c.Request().Header.Get("UserRole")
if role != "admin" {
return c.NoContent(http.StatusUnauthorized)
}
return next(c)
}
}

BIN
test.db

Binary file not shown.