Continue on migration

This commit is contained in:
Max 2024-12-16 16:48:50 +03:00
parent 86f599e88d
commit 03a03ff85c
3 changed files with 167 additions and 44 deletions

View File

@ -110,3 +110,9 @@ func (m *MiddlewareProvider) GetMiddleware(
}
}
func (m *MiddlewareProvider) InitMiddlewareProvider(policies map[string]RulesToCheck) {
for middlewareName, rulesToCheck := range policies {
m.RegisterPolicy(middlewareName, rulesToCheck)
}
}

View File

@ -0,0 +1,159 @@
package routes
import (
globalrules "enshi/ABAC/GlobalRules"
"enshi/ABAC/rules"
"enshi/middleware"
)
const (
POST_MIDDLEWARE = "POST_MIDDLEWARE"
BLOG_MIDDLEWARE = "BLOG_MIDDLEWARE"
PROFILE_MIDDLEWARE = "PROFILE_MIDDLEWARE"
BOOKMARK_MIDDLEWARE = "BOOKMARK_MIDDLEWARE"
POST_BLOG_MIDDLEWARE = "POST_BLOG_MIDDLEWARE"
POST_VOTE_MIDDLEWARE = "POST_VOTE_MIDDLEWARE"
POST_VOTES_MIDDLEWARE = "POST_VOTES_MIDDLEWARE"
)
var MiddlewareProvider = middleware.MiddlewareProvider{
Policies: make(map[string]middleware.Policy),
}
var policiesToRegister = map[string]middleware.RulesToCheck{
POST_MIDDLEWARE: {
middleware.GET: {
Rules: make([]rules.RuleFunction, 0),
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
middleware.POST: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
},
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
middleware.PUT: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
globalrules.IsOwnerOfThePostRule,
},
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
middleware.DELETE: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
globalrules.IsOwnerOfThePostRule,
globalrules.IsAdminRule,
},
MustBeCompleted: 2,
},
},
BOOKMARK_MIDDLEWARE: {
middleware.GET: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
},
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
middleware.DELETE: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
},
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
middleware.POST: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
},
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
},
BLOG_MIDDLEWARE: {
middleware.GET: {
Rules: make([]rules.RuleFunction, 0),
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
middleware.POST: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
},
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
middleware.PUT: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
globalrules.IsOwnerOfTheBlogRule,
},
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
middleware.DELETE: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
globalrules.IsOwnerOfTheBlogRule,
globalrules.IsAdminRule,
},
MustBeCompleted: 2,
},
},
POST_VOTE_MIDDLEWARE: {
middleware.GET: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
},
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
middleware.POST: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
},
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
middleware.DELETE: {
Rules: make([]rules.RuleFunction, 0),
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
},
POST_VOTES_MIDDLEWARE: {
middleware.GET: {
Rules: make([]rules.RuleFunction, 0),
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
},
PROFILE_MIDDLEWARE: {
middleware.PUT: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
},
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
},
POST_BLOG_MIDDLEWARE: {
middleware.PUT: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
globalrules.IsOwnerOfThePostRule,
globalrules.IsOwnerOfTheBlogRule,
},
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
middleware.DELETE: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
globalrules.IsOwnerOfThePostRule,
globalrules.IsOwnerOfTheBlogRule,
},
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
},
}
func InitMiddlewareProvider() {
MiddlewareProvider.InitMiddlewareProvider(policiesToRegister)
}

View File

@ -1,8 +1,6 @@
package routes
import (
globalrules "enshi/ABAC/GlobalRules"
"enshi/ABAC/rules"
"enshi/middleware"
"enshi/middleware/getters"
"enshi/routes/authRoutes"
@ -18,10 +16,6 @@ import (
"github.com/gin-gonic/gin"
)
const (
POST_MIDDLEWARE = "post_middleware"
)
func testCookie(c *gin.Context) {
cock, _ := c.Cookie("auth_cookie")
c.IndentedJSON(http.StatusOK, gin.H{"token": "SLESAR' U STASA " + strings.Split(cock, "_")[0]})
@ -49,49 +43,13 @@ func testAuth(c *gin.Context) {
}
func SetupRotes(g *gin.Engine) error {
middlewareProvider := middleware.MiddlewareProvider{
Policies: make(map[string]middleware.Policy),
}
var policies = map[string]middleware.RulesToCheck{
POST_MIDDLEWARE: {
middleware.GET: {
Rules: make([]rules.RuleFunction, 0),
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
middleware.POST: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
},
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
middleware.PUT: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
globalrules.IsOwnerOfThePostRule,
},
MustBeCompleted: rules.ALL_RULES_MUST_BE_COMPLETED,
},
middleware.DELETE: {
Rules: []rules.RuleFunction{
globalrules.AuthorizedRule,
globalrules.IsOwnerOfThePostRule,
globalrules.IsAdminRule,
},
MustBeCompleted: 2,
},
},
}
for middlewareName, rulesToCheck := range policies {
middlewareProvider.RegisterPolicy(middlewareName, rulesToCheck)
}
InitMiddlewareProvider()
g.Use(middleware.CORSMiddleware())
g.Use(middleware.TargetMiddleware())
testGroup := g.Group("/test/")
testGroup.Use(middlewareProvider.GetMiddleware(POST_MIDDLEWARE))
testGroup.Use(MiddlewareProvider.GetMiddleware(POST_MIDDLEWARE))
testGroup.GET(
"posts/:post-id",