diff options
author | Santo Cariotti <santo@dcariotti.me> | 2025-04-02 19:31:12 +0200 |
---|---|---|
committer | Santo Cariotti <santo@dcariotti.me> | 2025-04-02 19:37:12 +0200 |
commit | a9b84f3f3b1d92335188d43048587e32e0921079 (patch) | |
tree | a4313f7660a99745d7d5da4d92dc9509d0dbe35e /api/middleware | |
parent | 2e92ccd66eb5c31b8fbbcd205d7b4a882450e9d0 (diff) |
Init login and frontend
Diffstat (limited to 'api/middleware')
-rw-r--r-- | api/middleware/middleware.go | 36 |
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) + }) +} |