Skip to content

Commit

Permalink
user and root roles
Browse files Browse the repository at this point in the history
  • Loading branch information
John-Lin committed Aug 28, 2018
1 parent 41494d1 commit 9957013
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/server/route.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func (a *App) AppRoute() *mux.Router {
func newVersionService(sp *serviceprovider.Container) *restful.WebService {
webService := new(restful.WebService)
webService.Path("/v1/version").Consumes(restful.MIME_JSON, restful.MIME_JSON).Produces(restful.MIME_JSON, restful.MIME_JSON)
webService.Route(webService.GET("/").To(handler.RESTfulServiceHandler(sp, versionHandler)))
webService.Route(webService.GET("/").Filter(validateTokenMiddleware).Filter(requiredRootRoleMiddleware).To(handler.RESTfulServiceHandler(sp, versionHandler)))
return webService
}

Expand Down
25 changes: 25 additions & 0 deletions src/server/route_filter.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package server

import (
"log"
"net/http"

"github.com/dgrijalva/jwt-go"
Expand Down Expand Up @@ -31,9 +32,33 @@ func validateTokenMiddleware(req *restful.Request, resp *restful.Response, chain
} else {
resp.WriteHeader(http.StatusUnauthorized)
logger.Infof("Token is not valid")
return
}
} else {
resp.WriteHeader(http.StatusUnauthorized)
logger.Infof("Unauthorized access to this resource")
return
}
}

func requiredRootRoleMiddleware(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) {
role := req.Attribute("Role").(string)
if role == "root" {
chain.ProcessFilter(req, resp)
} else {
resp.WriteHeader(http.StatusForbidden)
log.Printf("User role forbidden")
return
}
}

func requiredUserRoleMiddleware(req *restful.Request, resp *restful.Response, chain *restful.FilterChain) {
role := req.Attribute("Role").(string)
if role == "user" || role == "root" {
chain.ProcessFilter(req, resp)
} else {
resp.WriteHeader(http.StatusForbidden)
log.Printf("User role forbidden")
return
}
}

0 comments on commit 9957013

Please sign in to comment.