1
0
forked from baron/baron-sso

외부 OIDC IdP 연동 계획

This commit is contained in:
2026-01-29 10:28:13 +09:00
parent ec90853fe3
commit a8ac66b318
6 changed files with 196 additions and 133 deletions

View File

@@ -2,53 +2,9 @@ package repository
import (
"baron-sso-backend/internal/domain"
"errors"
"gorm.io/gorm"
"context"
)
// FederationRepository handles database operations for IdentityProviderConfig.
type FederationRepository struct {
DB *gorm.DB
}
// NewFederationRepository creates a new FederationRepository.
func NewFederationRepository(db *gorm.DB) *FederationRepository {
return &FederationRepository{DB: db}
}
// Create creates a new identity provider configuration.
func (r *FederationRepository) Create(config *domain.IdentityProviderConfig) error {
return r.DB.Create(config).Error
}
// GetByID retrieves an identity provider configuration by its ID.
func (r *FederationRepository) GetByID(id string) (*domain.IdentityProviderConfig, error) {
var config domain.IdentityProviderConfig
if err := r.DB.First(&config, "id = ?", id).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, nil // Return nil, nil for not found
}
return nil, err
}
return &config, nil
}
// ListByTenantID retrieves all identity provider configurations for a given tenant.
func (r *FederationRepository) ListByTenantID(tenantID string) ([]domain.IdentityProviderConfig, error) {
var configs []domain.IdentityProviderConfig
if err := r.DB.Where("tenant_id = ?", tenantID).Find(&configs).Error; err != nil {
return nil, err
}
return configs, nil
}
// Update updates an existing identity provider configuration.
func (r *FederationRepository) Update(config *domain.IdentityProviderConfig) error {
return r.DB.Save(config).Error
}
// Delete removes an identity provider configuration by its ID.
func (r *FederationRepository) Delete(id string) error {
return r.DB.Delete(&domain.IdentityProviderConfig{}, "id = ?", id).Error
}
type FederationRepository interface {
FindProviderByID(ctx context.Context, providerID string) (*domain.IdentityProviderConfig, error)
}

View File

@@ -0,0 +1,23 @@
package repository
import (
"baron-sso-backend/internal/domain"
"context"
"gorm.io/gorm"
)
type GormFederationRepository struct {
db *gorm.DB
}
func NewGormFederationRepository(db *gorm.DB) *GormFederationRepository {
return &GormFederationRepository{db: db}
}
func (r *GormFederationRepository) FindProviderByID(ctx context.Context, providerID string) (*domain.IdentityProviderConfig, error) {
var provider domain.IdentityProviderConfig
if err := r.db.WithContext(ctx).First(&provider, "id = ?", providerID).Error; err != nil {
return nil, err
}
return &provider, nil
}