2020-09-22 09:42:57 +00:00
|
|
|
package auth
|
|
|
|
|
|
|
|
import (
|
2020-09-22 10:54:12 +00:00
|
|
|
"errors"
|
|
|
|
|
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 {
|
|
|
|
Backend string
|
|
|
|
LDAP ldap.Options
|
|
|
|
}
|
2020-09-22 10:54:12 +00:00
|
|
|
|
|
|
|
// Backend to log user in
|
|
|
|
type Backend interface {
|
|
|
|
Login(string, string) (bool, error)
|
2020-09-22 12:16:52 +00:00
|
|
|
Close()
|
2020-09-22 10:54:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// New initialize authentification backend
|
|
|
|
func New(cfg *Options) (Backend, error) {
|
|
|
|
var backend Backend
|
2020-09-22 12:16:52 +00:00
|
|
|
var err error
|
2020-09-22 10:54:12 +00:00
|
|
|
|
|
|
|
if cfg.Backend == "LDAP" {
|
2020-09-22 12:16:52 +00:00
|
|
|
backend, err = ldap.NewLDAP(&cfg.LDAP)
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
2020-09-22 10:54:12 +00:00
|
|
|
} else {
|
|
|
|
// Package is misconfigured
|
|
|
|
return nil, errors.New("Authentification backend not found")
|
|
|
|
}
|
|
|
|
|
|
|
|
// Init and return backend
|
|
|
|
return backend, nil
|
|
|
|
}
|