Define and use an auth context structure
This commit is contained in:
parent
d917938a29
commit
3e464747d8
@ -1,6 +1,7 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"net/http"
|
||||
|
||||
@ -54,6 +55,12 @@ func (prov *IMAPProvider) doAuth(next http.Handler,
|
||||
return
|
||||
}
|
||||
|
||||
authCtx := AuthContext{
|
||||
AuthMethod: "imap",
|
||||
UserName: user,
|
||||
}
|
||||
ctx := context.WithValue(r.Context(), AuthCtxKey, &authCtx)
|
||||
r = r.WithContext(ctx)
|
||||
next.ServeHTTP(w, r)
|
||||
}
|
||||
|
||||
|
@ -4,6 +4,18 @@ import (
|
||||
"net/http"
|
||||
)
|
||||
|
||||
var AuthCtxKey = &contextKey{"auth"}
|
||||
|
||||
type contextKey struct {
|
||||
name string
|
||||
}
|
||||
|
||||
type AuthContext struct {
|
||||
AuthMethod string
|
||||
UserName string
|
||||
// TODO more?
|
||||
}
|
||||
|
||||
// Abstracts the authentication backend for the server.
|
||||
type AuthProvider interface {
|
||||
// Returns HTTP middleware for performing authentication.
|
||||
|
Loading…
Reference in New Issue
Block a user