diff options
Diffstat (limited to 'app/middleware/auth.go')
| -rw-r--r-- | app/middleware/auth.go | 15 |
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) + } +} |
