summaryrefslogtreecommitdiff
path: root/api/middleware/middleware.go
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2025-04-02 19:31:12 +0200
committerSanto Cariotti <santo@dcariotti.me>2025-04-02 19:37:12 +0200
commita9b84f3f3b1d92335188d43048587e32e0921079 (patch)
treea4313f7660a99745d7d5da4d92dc9509d0dbe35e /api/middleware/middleware.go
parent2e92ccd66eb5c31b8fbbcd205d7b4a882450e9d0 (diff)
Init login and frontend
Diffstat (limited to 'api/middleware/middleware.go')
-rw-r--r--api/middleware/middleware.go36
1 files changed, 36 insertions, 0 deletions
diff --git a/api/middleware/middleware.go b/api/middleware/middleware.go
new file mode 100644
index 0000000..29ed8b6
--- /dev/null
+++ b/api/middleware/middleware.go
@@ -0,0 +1,36 @@
+package middleware
+
+import (
+ "encoding/json"
+ "net/http"
+
+ "github.com/boozec/rahanna/api/auth"
+)
+
+func AuthMiddleware(next http.Handler) http.Handler {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ tokenString := r.Header.Get("Authorization")
+
+ payloadMap := map[string]string{"error": "unauthorized"}
+ payload, _ := json.Marshal(payloadMap)
+
+ if tokenString == "" {
+ w.Header().Set("Content-Type", "application/json")
+ w.WriteHeader(http.StatusUnauthorized)
+
+ w.Write([]byte(payload))
+ return
+ }
+
+ _, err := auth.ValidateJWT(tokenString)
+ if err != nil {
+ w.WriteHeader(http.StatusUnauthorized)
+
+ payload, _ := json.Marshal(payloadMap)
+
+ w.Write([]byte(payload))
+ return
+ }
+ next.ServeHTTP(w, r)
+ })
+}