summaryrefslogtreecommitdiff
path: root/app/middleware/auth.go
diff options
context:
space:
mode:
Diffstat (limited to 'app/middleware/auth.go')
-rw-r--r--app/middleware/auth.go15
1 files changed, 15 insertions, 0 deletions
diff --git a/app/middleware/auth.go b/app/middleware/auth.go
index 61a58e3..c023492 100644
--- a/app/middleware/auth.go
+++ b/app/middleware/auth.go
@@ -3,6 +3,7 @@ package middleware
import (
"crypto/subtle"
"net/http"
+ "strings"
log "github.com/sirupsen/logrus"
)
@@ -48,3 +49,17 @@ func OptionallyRequireAdminAuth(handler http.HandlerFunc, password string) http.
handler(w, r)
}
}
+
+func RequireSandstormPermission(handler http.HandlerFunc, permissionNeeded string) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+
+ // Failed
+ if !strings.Contains(r.Header.Get("X-Sandstorm-Permissions"), permissionNeeded) {
+ http.Error(w, "Unauthorized", http.StatusUnauthorized)
+ log.Debugln("No upload capability granted")
+ return
+ }
+
+ handler(w, r)
+ }
+}