1
0
forked from baron/baron-sso

golangci lint 적용

This commit is contained in:
2026-02-06 16:25:50 +09:00
parent 568af8f90e
commit 5294066de6
33 changed files with 143 additions and 128 deletions

View File

@@ -13,7 +13,7 @@ func main() {
os.Setenv("KETO_READ_URL", "http://keto:4466") os.Setenv("KETO_READ_URL", "http://keto:4466")
os.Setenv("KETO_WRITE_URL", "http://keto:4467") os.Setenv("KETO_WRITE_URL", "http://keto:4467")
keto := service.NewKetoService() keto := service.NewKetoService()
ctx := context.Background() ctx := context.Background()
userID := "test-user-id" userID := "test-user-id"

View File

@@ -35,15 +35,25 @@ func main() {
godotenv.Load("backend/.env") godotenv.Load("backend/.env")
pgHost := os.Getenv("DB_HOST") pgHost := os.Getenv("DB_HOST")
if pgHost == "" { pgHost = "localhost" } if pgHost == "" {
pgHost = "localhost"
}
pgPort := os.Getenv("DB_PORT") pgPort := os.Getenv("DB_PORT")
if pgPort == "" { pgPort = "5432" } if pgPort == "" {
pgPort = "5432"
}
pgUser := os.Getenv("DB_USER") pgUser := os.Getenv("DB_USER")
if pgUser == "" { pgUser = "baron" } if pgUser == "" {
pgUser = "baron"
}
pgPass := os.Getenv("DB_PASSWORD") pgPass := os.Getenv("DB_PASSWORD")
if pgPass == "" { pgPass = "password" } if pgPass == "" {
pgPass = "password"
}
pgName := os.Getenv("DB_NAME") pgName := os.Getenv("DB_NAME")
if pgName == "" { pgName = "baron_sso" } if pgName == "" {
pgName = "baron_sso"
}
dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable", dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable",
pgHost, pgUser, pgPass, pgName, pgPort) pgHost, pgUser, pgPass, pgName, pgPort)

View File

@@ -1,6 +1,7 @@
package main package main
import ( import (
"baron-sso-backend/internal/bootstrap"
"baron-sso-backend/internal/domain" "baron-sso-backend/internal/domain"
"baron-sso-backend/internal/handler" "baron-sso-backend/internal/handler"
"baron-sso-backend/internal/idp" "baron-sso-backend/internal/idp"
@@ -28,8 +29,6 @@ import (
"gorm.io/driver/postgres" "gorm.io/driver/postgres"
"gorm.io/gorm" "gorm.io/gorm"
gormLogger "gorm.io/gorm/logger" gormLogger "gorm.io/gorm/logger"
"baron-sso-backend/internal/bootstrap"
) )
func getEnv(key, fallback string) string { func getEnv(key, fallback string) string {

View File

@@ -31,4 +31,3 @@ func (ug *UserGroup) BeforeCreate(tx *gorm.DB) (err error) {
} }
return return
} }

View File

@@ -3820,6 +3820,7 @@ func (h *AuthHandler) resolveCurrentProfile(c *fiber.Ctx) (*domain.UserProfileRe
return profile, nil return profile, nil
} }
func (h *AuthHandler) resolveConsentSubject(c *fiber.Ctx) (string, error) { func (h *AuthHandler) resolveConsentSubject(c *fiber.Ctx) (string, error) {
token := h.getBearerToken(c) token := h.getBearerToken(c)
if token != "" { if token != "" {

View File

@@ -31,12 +31,15 @@ type MockIdentityProvider struct {
func (m *MockIdentityProvider) Name() string { func (m *MockIdentityProvider) Name() string {
return "mock-idp" return "mock-idp"
} }
func (m *MockIdentityProvider) GetMetadata() (*domain.IDPMetadata, error) { func (m *MockIdentityProvider) GetMetadata() (*domain.IDPMetadata, error) {
return nil, nil return nil, nil
} }
func (m *MockIdentityProvider) CreateUser(user *domain.BrokerUser, password string) (string, error) { func (m *MockIdentityProvider) CreateUser(user *domain.BrokerUser, password string) (string, error) {
return "", nil return "", nil
} }
func (m *MockIdentityProvider) SignIn(loginID, password string) (*domain.AuthInfo, error) { func (m *MockIdentityProvider) SignIn(loginID, password string) (*domain.AuthInfo, error) {
args := m.Called(loginID, password) args := m.Called(loginID, password)
if args.Get(0) == nil { if args.Get(0) == nil {
@@ -44,27 +47,35 @@ func (m *MockIdentityProvider) SignIn(loginID, password string) (*domain.AuthInf
} }
return args.Get(0).(*domain.AuthInfo), args.Error(1) return args.Get(0).(*domain.AuthInfo), args.Error(1)
} }
func (m *MockIdentityProvider) UserExists(loginID string) (bool, error) { func (m *MockIdentityProvider) UserExists(loginID string) (bool, error) {
return true, nil return true, nil
} }
func (m *MockIdentityProvider) IssueSession(loginID string) (*domain.AuthInfo, error) { func (m *MockIdentityProvider) IssueSession(loginID string) (*domain.AuthInfo, error) {
return nil, nil return nil, nil
} }
func (m *MockIdentityProvider) InitiateLinkLogin(loginID, returnTo string) (*domain.LinkLoginInit, error) { func (m *MockIdentityProvider) InitiateLinkLogin(loginID, returnTo string) (*domain.LinkLoginInit, error) {
return nil, nil return nil, nil
} }
func (m *MockIdentityProvider) VerifyLoginCode(loginID, flowID, code string) (*domain.AuthInfo, error) { func (m *MockIdentityProvider) VerifyLoginCode(loginID, flowID, code string) (*domain.AuthInfo, error) {
return nil, nil return nil, nil
} }
func (m *MockIdentityProvider) GetPasswordPolicy() (*domain.PasswordPolicy, error) { func (m *MockIdentityProvider) GetPasswordPolicy() (*domain.PasswordPolicy, error) {
return nil, nil return nil, nil
} }
func (m *MockIdentityProvider) InitiatePasswordReset(loginID, redirectUrl string) error { func (m *MockIdentityProvider) InitiatePasswordReset(loginID, redirectUrl string) error {
return nil return nil
} }
func (m *MockIdentityProvider) VerifyPasswordResetToken(token string) (*domain.AuthInfo, error) { func (m *MockIdentityProvider) VerifyPasswordResetToken(token string) (*domain.AuthInfo, error) {
return nil, nil return nil, nil
} }
func (m *MockIdentityProvider) UpdateUserPassword(loginID, newPassword string, r *http.Request) error { func (m *MockIdentityProvider) UpdateUserPassword(loginID, newPassword string, r *http.Request) error {
return nil return nil
} }

View File

@@ -1,6 +1,7 @@
package handler package handler
import ( import (
"baron-sso-backend/internal/service"
"bytes" "bytes"
"encoding/json" "encoding/json"
"io" "io"
@@ -9,8 +10,6 @@ import (
"testing" "testing"
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
"baron-sso-backend/internal/service"
) )
func newOidcLoginTestApp(h *AuthHandler) *fiber.App { func newOidcLoginTestApp(h *AuthHandler) *fiber.App {

View File

@@ -108,8 +108,6 @@ func (h *FederationHandler) CreateIdpConfigForClient(c *fiber.Ctx) error {
return c.Status(fiber.StatusCreated).JSON(req) return c.Status(fiber.StatusCreated).JSON(req)
} }
// --- Deprecated Tenant-based IdP Config Methods --- // --- Deprecated Tenant-based IdP Config Methods ---
// ListIdpConfigsForTenant handles listing all IdP configurations for a tenant. // ListIdpConfigsForTenant handles listing all IdP configurations for a tenant.
@@ -158,4 +156,5 @@ func (h *FederationHandler) CreateIdpConfig(c *fiber.Ctx) error {
return c.Status(fiber.StatusCreated).JSON(req) return c.Status(fiber.StatusCreated).JSON(req)
} }
// TODO: Re-implement Update, Delete handlers for IdP Configs for Clients // TODO: Re-implement Update, Delete handlers for IdP Configs for Clients

View File

@@ -3,8 +3,9 @@ package handler
import ( import (
"baron-sso-backend/internal/domain" "baron-sso-backend/internal/domain"
"baron-sso-backend/internal/service" "baron-sso-backend/internal/service"
"github.com/gofiber/fiber/v2"
"log/slog" "log/slog"
"github.com/gofiber/fiber/v2"
) )
type RelyingPartyHandler struct { type RelyingPartyHandler struct {

View File

@@ -3,6 +3,7 @@ package handler
import ( import (
"baron-sso-backend/internal/domain" "baron-sso-backend/internal/domain"
"baron-sso-backend/internal/service" "baron-sso-backend/internal/service"
"github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2"
) )

View File

@@ -3,8 +3,9 @@ package middleware
import ( import (
"baron-sso-backend/internal/domain" "baron-sso-backend/internal/domain"
"baron-sso-backend/internal/service" "baron-sso-backend/internal/service"
"github.com/gofiber/fiber/v2"
"log/slog" "log/slog"
"github.com/gofiber/fiber/v2"
) )
// RBACConfig defines the configuration for RBAC middleware // RBACConfig defines the configuration for RBAC middleware

View File

@@ -3,6 +3,7 @@ package repository
import ( import (
"baron-sso-backend/internal/domain" "baron-sso-backend/internal/domain"
"context" "context"
"gorm.io/gorm" "gorm.io/gorm"
) )

View File

@@ -50,4 +50,3 @@ func (r *userGroupRepository) ListByTenantID(ctx context.Context, tenantID strin
} }
return groups, nil return groups, nil
} }

View File

@@ -60,7 +60,6 @@ func (r *userRepository) FindByIDs(ctx context.Context, ids []string) ([]domain.
return users, nil return users, nil
} }
func (r *userRepository) ListByTenant(ctx context.Context, tenantID string) ([]domain.User, error) { func (r *userRepository) ListByTenant(ctx context.Context, tenantID string) ([]domain.User, error) {
var users []domain.User var users []domain.User
if err := r.db.WithContext(ctx).Where("tenant_id = ?", tenantID).Find(&users).Error; err != nil { if err := r.db.WithContext(ctx).Where("tenant_id = ?", tenantID).Find(&users).Error; err != nil {

View File

@@ -8,8 +8,9 @@ import (
"fmt" "fmt"
"time" "time"
"golang.org/x/oauth2"
"github.com/coreos/go-oidc/v3/oidc" "github.com/coreos/go-oidc/v3/oidc"
"github.com/coreos/go-oidc/v3/oidc"
"golang.org/x/oauth2"
) )
type FederationService struct { type FederationService struct {
@@ -80,7 +81,6 @@ func (s *FederationService) HandleOIDCCallback(ctx context.Context, code, state
return "http://localhost:3000/login?login_successful=true", nil // Placeholder return "http://localhost:3000/login?login_successful=true", nil // Placeholder
} }
func generateState() (string, error) { func generateState() (string, error) {
b := make([]byte, 32) b := make([]byte, 32)
_, err := rand.Read(b) _, err := rand.Read(b)

View File

@@ -176,4 +176,3 @@ func (s *relyingPartyService) mapHydraToDomain(client *domain.HydraClient) *doma
} }
return rp return rp
} }

View File

@@ -109,7 +109,6 @@ func TestRelyingPartyService_Create_Success(t *testing.T) {
svc := NewRelyingPartyService(hydraSvc, mockKeto) svc := NewRelyingPartyService(hydraSvc, mockKeto)
rp, err := svc.Create(context.Background(), tenantID, inputClient) rp, err := svc.Create(context.Background(), tenantID, inputClient)
if err != nil { if err != nil {
t.Fatalf("Create failed: %v", err) t.Fatalf("Create failed: %v", err)
} }
@@ -200,7 +199,6 @@ func TestRelyingPartyService_Get_Success(t *testing.T) {
svc := NewRelyingPartyService(hydraSvc, mockKeto) svc := NewRelyingPartyService(hydraSvc, mockKeto)
rp, hc, err := svc.Get(context.Background(), clientID) rp, hc, err := svc.Get(context.Background(), clientID)
if err != nil { if err != nil {
t.Fatalf("Get failed: %v", err) t.Fatalf("Get failed: %v", err)
} }
@@ -233,7 +231,6 @@ func TestRelyingPartyService_Update_Success(t *testing.T) {
updateReq := domain.HydraClient{ClientName: "New Name"} updateReq := domain.HydraClient{ClientName: "New Name"}
rp, err := svc.Update(context.Background(), clientID, updateReq) rp, err := svc.Update(context.Background(), clientID, updateReq)
if err != nil { if err != nil {
t.Fatalf("Update failed: %v", err) t.Fatalf("Update failed: %v", err)
} }
@@ -272,7 +269,6 @@ func TestRelyingPartyService_Delete_Success(t *testing.T) {
svc := NewRelyingPartyService(hydraSvc, mockKeto) svc := NewRelyingPartyService(hydraSvc, mockKeto)
err := svc.Delete(context.Background(), clientID) err := svc.Delete(context.Background(), clientID)
if err != nil { if err != nil {
t.Fatalf("Delete failed: %v", err) t.Fatalf("Delete failed: %v", err)
} }