snap/auth/auth.go

36 lines
624 B
Go

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()
}
}