mirror of
https://github.com/genuinetools/reg.git
synced 2024-07-04 12:34:17 -04:00
fa2c3fedcc
Signed-off-by: Jess Frazelle <acidburn@microsoft.com>
47 lines
1.1 KiB
Go
47 lines
1.1 KiB
Go
package mux_test
|
|
|
|
import (
|
|
"log"
|
|
"net/http"
|
|
|
|
"github.com/gorilla/mux"
|
|
)
|
|
|
|
// Define our struct
|
|
type authenticationMiddleware struct {
|
|
tokenUsers map[string]string
|
|
}
|
|
|
|
// Initialize it somewhere
|
|
func (amw *authenticationMiddleware) Populate() {
|
|
amw.tokenUsers["00000000"] = "user0"
|
|
amw.tokenUsers["aaaaaaaa"] = "userA"
|
|
amw.tokenUsers["05f717e5"] = "randomUser"
|
|
amw.tokenUsers["deadbeef"] = "user0"
|
|
}
|
|
|
|
// Middleware function, which will be called for each request
|
|
func (amw *authenticationMiddleware) Middleware(next http.Handler) http.Handler {
|
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
token := r.Header.Get("X-Session-Token")
|
|
|
|
if user, found := amw.tokenUsers[token]; found {
|
|
// We found the token in our map
|
|
log.Printf("Authenticated user %s\n", user)
|
|
next.ServeHTTP(w, r)
|
|
} else {
|
|
http.Error(w, "Forbidden", http.StatusForbidden)
|
|
}
|
|
})
|
|
}
|
|
|
|
func Example_authenticationMiddleware() {
|
|
r := mux.NewRouter()
|
|
r.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
|
// Do something here
|
|
})
|
|
amw := authenticationMiddleware{}
|
|
amw.Populate()
|
|
r.Use(amw.Middleware)
|
|
}
|