123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- package store
- import (
- "context"
- )
- type IdentityProviderType string
- const (
- IdentityProviderOAuth2Type IdentityProviderType = "OAUTH2"
- )
- func (t IdentityProviderType) String() string {
- return string(t)
- }
- type IdentityProviderConfig struct {
- OAuth2Config *IdentityProviderOAuth2Config
- }
- type IdentityProviderOAuth2Config struct {
- ClientID string `json:"clientId"`
- ClientSecret string `json:"clientSecret"`
- AuthURL string `json:"authUrl"`
- TokenURL string `json:"tokenUrl"`
- UserInfoURL string `json:"userInfoUrl"`
- Scopes []string `json:"scopes"`
- FieldMapping *FieldMapping `json:"fieldMapping"`
- }
- type FieldMapping struct {
- Identifier string `json:"identifier"`
- DisplayName string `json:"displayName"`
- Email string `json:"email"`
- }
- type IdentityProvider struct {
- ID int32
- Name string
- Type IdentityProviderType
- IdentifierFilter string
- Config *IdentityProviderConfig
- }
- type FindIdentityProvider struct {
- ID *int32
- }
- type UpdateIdentityProvider struct {
- ID int32
- Type IdentityProviderType
- Name *string
- IdentifierFilter *string
- Config *IdentityProviderConfig
- }
- type DeleteIdentityProvider struct {
- ID int32
- }
- func (s *Store) CreateIdentityProvider(ctx context.Context, create *IdentityProvider) (*IdentityProvider, error) {
- identityProvider, err := s.driver.CreateIdentityProvider(ctx, create)
- if err != nil {
- return nil, err
- }
- s.idpCache.Store(identityProvider.ID, identityProvider)
- return identityProvider, nil
- }
- func (s *Store) ListIdentityProviders(ctx context.Context, find *FindIdentityProvider) ([]*IdentityProvider, error) {
- identityProviders, err := s.driver.ListIdentityProviders(ctx, find)
- if err != nil {
- return nil, err
- }
- for _, item := range identityProviders {
- s.idpCache.Store(item.ID, item)
- }
- return identityProviders, nil
- }
- func (s *Store) GetIdentityProvider(ctx context.Context, find *FindIdentityProvider) (*IdentityProvider, error) {
- if find.ID != nil {
- if cache, ok := s.idpCache.Load(*find.ID); ok {
- return cache.(*IdentityProvider), nil
- }
- }
- list, err := s.ListIdentityProviders(ctx, find)
- if err != nil {
- return nil, err
- }
- if len(list) == 0 {
- return nil, nil
- }
- identityProvider := list[0]
- return identityProvider, nil
- }
- func (s *Store) UpdateIdentityProvider(ctx context.Context, update *UpdateIdentityProvider) (*IdentityProvider, error) {
- identityProvider, err := s.driver.UpdateIdentityProvider(ctx, update)
- if err != nil {
- return nil, err
- }
- s.idpCache.Store(identityProvider.ID, identityProvider)
- return identityProvider, nil
- }
- func (s *Store) DeleteIdentityProvider(ctx context.Context, delete *DeleteIdentityProvider) error {
- err := s.driver.DeleteIdentityProvider(ctx, delete)
- if err != nil {
- return err
- }
- s.idpCache.Delete(delete.ID)
- return nil
- }
|