From 8f7dec8ba6b2f9bde01afd0a110596ebbd43e0ed Mon Sep 17 00:00:00 2001 From: Leonardo Bishop Date: Fri, 15 Aug 2025 19:20:48 +0100 Subject: Implement OIDC --- pkg/auth/service.go | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 pkg/auth/service.go (limited to 'pkg/auth/service.go') diff --git a/pkg/auth/service.go b/pkg/auth/service.go new file mode 100644 index 0000000..be1d6e7 --- /dev/null +++ b/pkg/auth/service.go @@ -0,0 +1,49 @@ +package auth + +import ( + "fmt" + "sync" +) + +type Service interface { + GetAuthProvider(string) AuthProvider + GetAuthProviders() []string + RegisterAuthProvider(string, AuthProvider) error +} + +type AuthProvider interface { + Name() string + Type() string +} + +type service struct { + authProviders map[string]AuthProvider + order []string + lock sync.Mutex +} + +func NewService() Service { + return &service{ + authProviders: make(map[string]AuthProvider), + } +} + +func (s *service) GetAuthProvider(name string) AuthProvider { + return s.authProviders[name] +} + +func (s *service) GetAuthProviders() []string { + return s.order +} + +func (s *service) RegisterAuthProvider(name string, provider AuthProvider) error { + s.lock.Lock() + defer s.lock.Unlock() + + if _, ok := s.authProviders[name]; ok { + return fmt.Errorf("duplicate auth provider: %s", name) + } + s.order = append(s.order, name) + s.authProviders[name] = provider + return nil +} -- cgit v1.2.3-70-g09d2