monzero/cmd/monfront/authorizer.go

36 lines
660 B
Go

package main
import (
"database/sql"
"fmt"
)
type (
Authorizer struct {
db *sql.DB
Mode string
List []string
}
)
func (a *Authorizer) Handler() (func(c *Context) error, error) {
switch a.Mode {
case "none":
return func(_ *Context) error { return nil }, nil
case "list":
return func(c *Context) error {
for _, user := range a.List {
if user == c.User {
c.CanEdit = true
return nil
}
}
return nil
}, nil
case "all":
return func(c *Context) error { c.CanEdit = true; return nil }, nil
default:
return func(_ *Context) error { return nil }, fmt.Errorf("authorization mode '%s' is unsupported", a.Mode)
}
}