ghostream/auth/auth.go

55 lines
1.0 KiB
Go
Raw Permalink Normal View History

2020-10-09 20:36:02 +00:00
// Package auth manages backends to auth incoming streams
2020-09-22 09:42:57 +00:00
package auth
import (
2020-09-22 10:54:12 +00:00
"errors"
2020-09-22 14:39:06 +00:00
"log"
"strings"
2020-09-22 10:54:12 +00:00
2020-09-22 14:39:06 +00:00
"gitlab.crans.org/nounous/ghostream/auth/basic"
2020-09-22 09:42:57 +00:00
"gitlab.crans.org/nounous/ghostream/auth/ldap"
)
2020-09-22 10:54:12 +00:00
// Options holds package configuration
2020-09-22 09:42:57 +00:00
type Options struct {
2020-10-09 20:06:30 +00:00
Enabled bool
2020-09-22 09:42:57 +00:00
Backend string
2020-09-22 14:39:06 +00:00
Basic basic.Options
2020-09-22 09:42:57 +00:00
LDAP ldap.Options
}
2020-09-22 10:54:12 +00:00
// Backend to log user in
type Backend interface {
Login(string, string) (bool, string, error)
Close()
2020-09-22 10:54:12 +00:00
}
// New initialize authentification backend
func New(cfg *Options) (Backend, error) {
2020-10-14 19:33:51 +00:00
var backend Backend
var err error
2020-09-22 10:54:12 +00:00
2020-10-09 20:06:30 +00:00
if !cfg.Enabled {
// Authentification is disabled
return nil, nil
}
2020-09-22 14:39:06 +00:00
switch strings.ToLower(cfg.Backend) {
case "basic":
backend, err = basic.New(&cfg.Basic)
case "ldap":
backend, err = ldap.New(&cfg.LDAP)
default:
2020-09-22 10:54:12 +00:00
// Package is misconfigured
backend, err = nil, errors.New("authentification backend not found")
2020-09-22 10:54:12 +00:00
}
2020-09-22 14:39:06 +00:00
if err != nil {
// Backend init failed
return nil, err
}
log.Printf("%s backend successfully initialized", cfg.Backend)
2020-09-22 10:54:12 +00:00
return backend, nil
}