middleware.go 518 B

123456789101112131415161718192021222324252627
  1. package sec
  2. import (
  3. "git.clearsky.net.au/cody/gex.git/pkg/sess"
  4. "git.clearsky.net.au/cody/gex.git/pkg/srv"
  5. )
  6. func Middleware(req *srv.Req, res srv.Res) bool {
  7. pattern := req.Pattern
  8. // Cancel the security check as there are no permissions for this route
  9. if len(permissions[pattern]) == 0 {
  10. return true
  11. }
  12. handlerRoles := permissions[pattern]
  13. sess := req.Ctx["Sess"].(sess.Sess)
  14. for _, role := range handlerRoles {
  15. if sess.HasRole(role) {
  16. return true
  17. }
  18. }
  19. res.Send("No Access")
  20. return false
  21. }