From 8ae8a5c296f0262b0c92bc4d3bb7d4311ef0ccc0 Mon Sep 17 00:00:00 2001 From: Luis Pater Date: Tue, 11 Nov 2025 19:23:31 +0800 Subject: [PATCH] Fixed: #233 feat(management): add auth ID normalization and file-based ID resolution Introduce `authIDForPath` to standardize ID generation from file paths, improving consistency in authentication handling. Update `registerAuthFromFile` and `disableAuth` to utilize normalized IDs, incorporating relative path resolution and file name extraction where applicable. --- .../api/handlers/management/auth_files.go | 38 +++++++++++++++++-- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/internal/api/handlers/management/auth_files.go b/internal/api/handlers/management/auth_files.go index 24c186ec..4318b972 100644 --- a/internal/api/handlers/management/auth_files.go +++ b/internal/api/handlers/management/auth_files.go @@ -538,6 +538,24 @@ func (h *Handler) DeleteAuthFile(c *gin.Context) { c.JSON(200, gin.H{"status": "ok"}) } +func (h *Handler) authIDForPath(path string) string { + path = strings.TrimSpace(path) + if path == "" { + return "" + } + if h == nil || h.cfg == nil { + return path + } + authDir := strings.TrimSpace(h.cfg.AuthDir) + if authDir == "" { + return path + } + if rel, err := filepath.Rel(authDir, path); err == nil && rel != "" { + return rel + } + return path +} + func (h *Handler) registerAuthFromFile(ctx context.Context, path string, data []byte) error { if h.authManager == nil { return nil @@ -566,13 +584,18 @@ func (h *Handler) registerAuthFromFile(ctx context.Context, path string, data [] } lastRefresh, hasLastRefresh := extractLastRefreshTimestamp(metadata) + authID := h.authIDForPath(path) + if authID == "" { + authID = path + } attr := map[string]string{ "path": path, "source": path, } auth := &coreauth.Auth{ - ID: path, + ID: authID, Provider: provider, + FileName: filepath.Base(path), Label: label, Status: coreauth.StatusActive, Attributes: attr, @@ -583,7 +606,7 @@ func (h *Handler) registerAuthFromFile(ctx context.Context, path string, data [] if hasLastRefresh { auth.LastRefreshedAt = lastRefresh } - if existing, ok := h.authManager.GetByID(path); ok { + if existing, ok := h.authManager.GetByID(authID); ok { auth.CreatedAt = existing.CreatedAt if !hasLastRefresh { auth.LastRefreshedAt = existing.LastRefreshedAt @@ -598,10 +621,17 @@ func (h *Handler) registerAuthFromFile(ctx context.Context, path string, data [] } func (h *Handler) disableAuth(ctx context.Context, id string) { - if h.authManager == nil || id == "" { + if h == nil || h.authManager == nil { return } - if auth, ok := h.authManager.GetByID(id); ok { + authID := h.authIDForPath(id) + if authID == "" { + authID = strings.TrimSpace(id) + } + if authID == "" { + return + } + if auth, ok := h.authManager.GetByID(authID); ok { auth.Disabled = true auth.Status = coreauth.StatusDisabled auth.StatusMessage = "removed via management API"