Continue on migration
This commit is contained in:
parent
86f599e88d
commit
03a03ff85c
@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
159
enshi_back/routes/middlewareSetup.go
Normal file
159
enshi_back/routes/middlewareSetup.go
Normal 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)
|
||||||
|
}
|
||||||
@ -1,8 +1,6 @@
|
|||||||
package routes
|
package routes
|
||||||
|
|
||||||
import (
|
import (
|
||||||
globalrules "enshi/ABAC/GlobalRules"
|
|
||||||
"enshi/ABAC/rules"
|
|
||||||
"enshi/middleware"
|
"enshi/middleware"
|
||||||
"enshi/middleware/getters"
|
"enshi/middleware/getters"
|
||||||
"enshi/routes/authRoutes"
|
"enshi/routes/authRoutes"
|
||||||
@ -18,10 +16,6 @@ import (
|
|||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
|
||||||
POST_MIDDLEWARE = "post_middleware"
|
|
||||||
)
|
|
||||||
|
|
||||||
func testCookie(c *gin.Context) {
|
func testCookie(c *gin.Context) {
|
||||||
cock, _ := c.Cookie("auth_cookie")
|
cock, _ := c.Cookie("auth_cookie")
|
||||||
c.IndentedJSON(http.StatusOK, gin.H{"token": "SLESAR' U STASA " + strings.Split(cock, "_")[0]})
|
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 {
|
func SetupRotes(g *gin.Engine) error {
|
||||||
middlewareProvider := middleware.MiddlewareProvider{
|
InitMiddlewareProvider()
|
||||||
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)
|
|
||||||
}
|
|
||||||
|
|
||||||
g.Use(middleware.CORSMiddleware())
|
g.Use(middleware.CORSMiddleware())
|
||||||
g.Use(middleware.TargetMiddleware())
|
g.Use(middleware.TargetMiddleware())
|
||||||
|
|
||||||
testGroup := g.Group("/test/")
|
testGroup := g.Group("/test/")
|
||||||
testGroup.Use(middlewareProvider.GetMiddleware(POST_MIDDLEWARE))
|
testGroup.Use(MiddlewareProvider.GetMiddleware(POST_MIDDLEWARE))
|
||||||
|
|
||||||
testGroup.GET(
|
testGroup.GET(
|
||||||
"posts/:post-id",
|
"posts/:post-id",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user