From 03a03ff85c6a52560e17cbcafd3abda56d95241d Mon Sep 17 00:00:00 2001 From: Max Date: Mon, 16 Dec 2024 16:48:50 +0300 Subject: [PATCH] Continue on migration --- enshi_back/middleware/MiddlewareProvider.go | 6 + enshi_back/routes/middlewareSetup.go | 159 ++++++++++++++++++++ enshi_back/routes/routesSetup.go | 46 +----- 3 files changed, 167 insertions(+), 44 deletions(-) create mode 100644 enshi_back/routes/middlewareSetup.go diff --git a/enshi_back/middleware/MiddlewareProvider.go b/enshi_back/middleware/MiddlewareProvider.go index 7e897b0..fc11dbf 100644 --- a/enshi_back/middleware/MiddlewareProvider.go +++ b/enshi_back/middleware/MiddlewareProvider.go @@ -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) + } +} diff --git a/enshi_back/routes/middlewareSetup.go b/enshi_back/routes/middlewareSetup.go new file mode 100644 index 0000000..e2be4b2 --- /dev/null +++ b/enshi_back/routes/middlewareSetup.go @@ -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) +} diff --git a/enshi_back/routes/routesSetup.go b/enshi_back/routes/routesSetup.go index 54f847b..77149d8 100644 --- a/enshi_back/routes/routesSetup.go +++ b/enshi_back/routes/routesSetup.go @@ -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",