fix: add MANUAL_USER_MAPPINGS support for users with mismatched emails

JimKarvo's Gitea email (dimitris@jksoftware.gr) differs from Slack
email (jimkarvo@gmail.com), so the email-based Slack lookup fails.
Add MANUAL_USER_MAPPINGS env var (format: GiteaUsername:SlackID,...)
to bypass email lookup when a manual mapping exists.

Changes:
- cache.go: ParseManualMappings() parses env var format
- cache.go: CachedResolver checks manual mappings first (step 0)
- main.go: reads MANUAL_USER_MAPPINGS env var, passes to resolver
This commit is contained in:
JimKarvo
2026-06-29 22:34:22 +03:00
parent 9e26698068
commit 673cefeb90
2 changed files with 63 additions and 10 deletions
+9 -2
View File
@@ -67,8 +67,15 @@ func main() {
slackClient := slacknotifier.New(&cfg.Notification.Slack, logger)
logger.Info().Msg("Slack notifier initialized")
// Initialize cached identity resolver
resolver := cache.NewCachedResolver(repo, emailLookup, slackClient, logger)
// Initialize cached identity resolver with optional manual mappings
manualMappings := cache.ParseManualMappings(os.Getenv("MANUAL_USER_MAPPINGS"))
if len(manualMappings) > 0 {
logger.Info().Int("count", len(manualMappings)).Msg("manual user mappings configured")
for username := range manualMappings {
logger.Debug().Str("username", username).Msg("manual mapping registered")
}
}
resolver := cache.NewCachedResolver(repo, emailLookup, slackClient, manualMappings, logger)
logger.Info().Msg("identity resolver initialized")
// Create processor adapter that implements webhook.EventHandler