package auth import ( "net/http" ) type AuthData struct { User string Group string Properties map[string]string KVs map[string]interface{} } type AuthManager interface { AddUser(user string, group string, password string) error DeleteUser(user string) error DoAuth(w http.ResponseWriter, r *http.Request) (*AuthData, int) } type Authenticator interface { DoAuth(w http.ResponseWriter, r *http.Request) (*AuthData, int) } func NewAuth(kind string) AuthManager { switch kind { case "basic": return NewBasicAuth() case "token": return NewTokenAuth() default: return NewNoAuth() } }