Skip to content

Commit 4d985ed

Browse files
committed
refactor: Delegate all authentication, including JWT and OAuth, to Supabase by removing custom implementations.
1 parent b884cce commit 4d985ed

11 files changed

Lines changed: 31 additions & 1315 deletions

File tree

cmd/server/main.go

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,6 @@ func main() {
168168
managementHandler := handlers.NewManagementHandler(
169169
authService,
170170
apiKeyRepo,
171-
jwtTokenRepo,
172171
auditLogRepo,
173172
userRepo,
174173
hideoutModuleRepo,
@@ -221,19 +220,7 @@ func main() {
221220
api := r.Group("/api/v1")
222221
api.Use(middleware.RateLimitMiddleware(cacheService, cfg.RateLimitRequests, cfg.RateLimitWindowSeconds))
223222
{
224-
auth := api.Group("/auth")
225-
{
226-
auth.GET("/github/login", authHandler.GitHubLogin)
227-
auth.GET("/github/callback", authHandler.GitHubCallback)
228-
auth.GET("/discord/login", authHandler.DiscordLogin)
229-
auth.GET("/discord/callback", authHandler.DiscordCallback)
230-
auth.GET("/exchange-token", authHandler.ExchangeTempToken)
231-
auth.POST("/login", authHandler.LoginWithAPIKey)
232-
auth.POST("/token", authHandler.TokenExchange)
233-
auth.POST("/refresh", authHandler.RefreshToken)
234-
}
235-
236-
// Read-only routes (require JWT only)
223+
// JWTAuthMiddleware handles Supabase JWT validation
237224
readOnly := api.Group("")
238225
readOnly.Use(middleware.JWTAuthMiddleware(authService, cfg, supabaseAuthService))
239226
{
@@ -334,8 +321,6 @@ func main() {
334321
admin.POST("/api-keys", managementHandler.CreateAPIKey)
335322
admin.GET("/api-keys", managementHandler.ListAPIKeys)
336323
admin.DELETE("/api-keys/:id", managementHandler.RevokeAPIKey)
337-
admin.POST("/jwts/revoke", managementHandler.RevokeJWT)
338-
admin.GET("/jwts", managementHandler.ListJWTs)
339324
admin.GET("/logs", managementHandler.QueryLogs)
340325
admin.POST("/sync/force", syncHandler.ForceSync)
341326
admin.GET("/sync/status", syncHandler.SyncStatus)

go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ require (
1414
github.com/stretchr/testify v1.11.1
1515
github.com/vektah/gqlparser/v2 v2.5.31
1616
golang.org/x/crypto v0.43.0
17-
golang.org/x/oauth2 v0.32.0
1817
gorm.io/driver/postgres v1.6.0
1918
gorm.io/gorm v1.25.10
2019
)

go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -146,8 +146,6 @@ golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA=
146146
golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
147147
golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4=
148148
golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210=
149-
golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY=
150-
golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
151149
golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug=
152150
golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
153151
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=

internal/config/config.go

Lines changed: 3 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,24 +23,6 @@ type Config struct {
2323
RedisAddr string `envconfig:"REDIS_ADDR" default:"localhost:6379"` // Fallback if REDIS_URL not set
2424
RedisPassword string `envconfig:"REDIS_PASSWORD" default:""` // Fallback if REDIS_URL not set
2525

26-
// JWT
27-
JWTSecret string `envconfig:"JWT_SECRET" required:"true"`
28-
JWTExpiryHours int `envconfig:"JWT_EXPIRY_HOURS" default:"72"`
29-
RefreshTokenExpiryDays int `envconfig:"REFRESH_TOKEN_EXPIRY_DAYS" default:"14"`
30-
31-
// OAuth - GitHub
32-
GitHubClientID string `envconfig:"GITHUB_CLIENT_ID" default:""`
33-
GitHubClientSecret string `envconfig:"GITHUB_CLIENT_SECRET" default:""`
34-
35-
// OAuth - Discord
36-
DiscordClientID string `envconfig:"DISCORD_CLIENT_ID" default:""`
37-
DiscordClientSecret string `envconfig:"DISCORD_CLIENT_SECRET" default:""`
38-
39-
OAuthEnabled bool `envconfig:"OAUTH_ENABLED" default:"true"`
40-
OAuthRedirectURL string `envconfig:"OAUTH_REDIRECT_URL" default:"http://localhost:8080/api/v1/auth/github/callback"`
41-
DiscordRedirectURL string `envconfig:"DISCORD_REDIRECT_URL" default:"http://localhost:8080/api/v1/auth/discord/callback"`
42-
FrontendCallbackURL string `envconfig:"FRONTEND_CALLBACK_URL" default:"http://localhost:8080/dashboard/api/auth/github/callback/"`
43-
4426
// Sync
4527
SyncCron string `envconfig:"SYNC_CRON" default:"*/15 * * * *"`
4628

@@ -60,7 +42,6 @@ type Config struct {
6042
SupabaseURL string `envconfig:"SUPABASE_URL" default:""` // Main project URL (fallback: NEXT_PUBLIC_SUPABASE_URL)
6143
SupabaseJWKSURL string `envconfig:"SUPABASE_JWKS_URL" default:""` // Use if different from standard auth/v1/jwks
6244
SupabasePublishableKey string `envconfig:"SUPABASE_PUBLISHABLE_KEY" default:""` // Modern label (replacing "Anon Key")
63-
SupabaseProjectID string `envconfig:"SUPABASE_PROJECT_ID" default:""` // Legacy fallback or id-only setups
6445
}
6546

6647
func LoadConfig() (*Config, error) {
@@ -96,15 +77,15 @@ func (c *Config) GetDSN() string {
9677
}
9778

9879
func (c *Config) IsOAuthEnabled() bool {
99-
return c.OAuthEnabled && (c.GitHubClientID != "" && c.GitHubClientSecret != "" || c.DiscordClientID != "" && c.DiscordClientSecret != "")
80+
return false // OAuth is now managed entirely by Supabase
10081
}
10182

10283
func (c *Config) IsGitHubOAuthEnabled() bool {
103-
return c.OAuthEnabled && c.GitHubClientID != "" && c.GitHubClientSecret != ""
84+
return false
10485
}
10586

10687
func (c *Config) IsDiscordOAuthEnabled() bool {
107-
return c.OAuthEnabled && c.DiscordClientID != "" && c.DiscordClientSecret != ""
88+
return false
10889
}
10990

11091
func (c *Config) GetAllowedOrigins() []string {

internal/graph/handler_simple.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,8 @@ func setupSecurityMiddleware(srv *handler.Server, authService *services.AuthServ
100100
// Extract and validate token
101101
parts := strings.Split(authHeader, " ")
102102
if len(parts) == 2 && parts[0] == "Bearer" {
103-
user, err := authService.ValidateJWT(parts[1])
104-
if err == nil {
105-
// Add user to context
106-
ctx = context.WithValue(ctx, UserContextKey, user)
107-
}
103+
// TODO: Use Supabase validation
104+
// user, err := authService.SyncSupabaseUser(claims)
108105
}
109106
}
110107
}

0 commit comments

Comments
 (0)