registry.go 869 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package oauth
  2. import (
  3. "sync"
  4. )
  5. var (
  6. providers = make(map[string]Provider)
  7. mu sync.RWMutex
  8. )
  9. // Register registers an OAuth provider with the given name
  10. func Register(name string, provider Provider) {
  11. mu.Lock()
  12. defer mu.Unlock()
  13. providers[name] = provider
  14. }
  15. // GetProvider returns the OAuth provider for the given name
  16. func GetProvider(name string) Provider {
  17. mu.RLock()
  18. defer mu.RUnlock()
  19. return providers[name]
  20. }
  21. // GetAllProviders returns all registered OAuth providers
  22. func GetAllProviders() map[string]Provider {
  23. mu.RLock()
  24. defer mu.RUnlock()
  25. result := make(map[string]Provider, len(providers))
  26. for k, v := range providers {
  27. result[k] = v
  28. }
  29. return result
  30. }
  31. // IsProviderRegistered checks if a provider is registered
  32. func IsProviderRegistered(name string) bool {
  33. mu.RLock()
  34. defer mu.RUnlock()
  35. _, ok := providers[name]
  36. return ok
  37. }