From 0412644d70ea17e83b8ea7d8525ce4c95fcc2767 Mon Sep 17 00:00:00 2001 From: tmcnulty387 Date: Mon, 16 Feb 2026 16:25:18 -0500 Subject: [PATCH 1/8] Explicitly connect to database from main instead of from database.go --- database/database.go | 2 +- main.go | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/database/database.go b/database/database.go index d03bc42..c104d47 100644 --- a/database/database.go +++ b/database/database.go @@ -21,7 +21,7 @@ const ( Updated UpsertResult = 1 ) -var Client *mongo.Client = Connect() +var Client *mongo.Client var db = "" func Connect() *mongo.Client { diff --git a/main.go b/main.go index a5f1a2a..12be7dd 100644 --- a/main.go +++ b/main.go @@ -57,6 +57,7 @@ func MakeLinks(s string) template.HTML { var oidcClient = OIDCClient{} func main() { + database.Client = database.Connect() r := gin.Default() r.StaticFS("/static", http.Dir("static")) r.SetFuncMap(template.FuncMap{ From 0c8fa7c367ec29b6d23fcce1dfa6e39442f48275 Mon Sep 17 00:00:00 2001 From: tmcnulty387 Date: Mon, 16 Feb 2026 16:27:40 -0500 Subject: [PATCH 2/8] Added godotenv to automatically load .env if it exists --- go.mod | 1 + go.sum | 2 ++ main.go | 2 ++ 3 files changed, 5 insertions(+) diff --git a/go.mod b/go.mod index c16c793..2f6a5d5 100644 --- a/go.mod +++ b/go.mod @@ -5,6 +5,7 @@ go 1.24.1 require ( github.com/computersciencehouse/csh-auth v0.1.0 github.com/gin-gonic/gin v1.11.0 + github.com/joho/godotenv v1.5.1 github.com/sirupsen/logrus v1.9.3 github.com/slack-go/slack v0.17.3 github.com/stretchr/testify v1.11.1 diff --git a/go.sum b/go.sum index b325fdf..778f6f7 100644 --- a/go.sum +++ b/go.sum @@ -42,6 +42,8 @@ github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= +github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/klauspost/compress v1.18.1 h1:bcSGx7UbpBqMChDtsF28Lw6v/G94LPrrbMbdC3JH2co= diff --git a/main.go b/main.go index 12be7dd..9467610 100644 --- a/main.go +++ b/main.go @@ -19,6 +19,7 @@ import ( "github.com/computersciencehouse/vote/logging" "github.com/computersciencehouse/vote/sse" "github.com/gin-gonic/gin" + "github.com/joho/godotenv" "github.com/sirupsen/logrus" "go.mongodb.org/mongo-driver/bson/primitive" "mvdan.cc/xurls/v2" @@ -57,6 +58,7 @@ func MakeLinks(s string) template.HTML { var oidcClient = OIDCClient{} func main() { + godotenv.Load() database.Client = database.Connect() r := gin.Default() r.StaticFS("/static", http.Dir("static")) From 1dd301c1e393e984b3837f113a563f6c6a735e83 Mon Sep 17 00:00:00 2001 From: tmcnulty387 Date: Mon, 16 Feb 2026 16:29:27 -0500 Subject: [PATCH 3/8] Small changes suggested by go compiler --- constitutional.go | 4 ++-- users.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/constitutional.go b/constitutional.go index 7528b34..4fc412c 100644 --- a/constitutional.go +++ b/constitutional.go @@ -49,8 +49,8 @@ func InitConstitution() { startOfDay := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Local) nextMidnight := startOfDay.AddDate(0, 0, 1) fmt.Println(nextMidnight) - fmt.Println(nextMidnight.Sub(time.Now())) - ticker := time.NewTicker(nextMidnight.Sub(time.Now())) + fmt.Println(time.Until(nextMidnight)) + ticker := time.NewTicker(time.Until(nextMidnight)) first := true go func() { for { diff --git a/users.go b/users.go index d20a390..560d7bf 100644 --- a/users.go +++ b/users.go @@ -72,7 +72,7 @@ func (client *OIDCClient) getAccessToken() int { logging.Logger.WithFields(logrus.Fields{"method": "setupOidcClient", "statusCode": resp.StatusCode}).Error(resp.Status) return 0 } - respData := make(map[string]interface{}) + respData := make(map[string]any) err = json.NewDecoder(resp.Body).Decode(&respData) if err != nil { logging.Logger.WithFields(logrus.Fields{"method": "setupOidcClient"}).Error(err) From 12bcd5511a11fcf69c99e4509c38623f0d801dde Mon Sep 17 00:00:00 2001 From: tmcnulty387 Date: Mon, 16 Feb 2026 16:31:39 -0500 Subject: [PATCH 4/8] Fixed incorrect method names in logs --- users.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/users.go b/users.go index 560d7bf..6351714 100644 --- a/users.go +++ b/users.go @@ -64,22 +64,22 @@ func (client *OIDCClient) getAccessToken() int { authData.Set("grant_type", "client_credentials") resp, err := htclient.PostForm(cshAuth.ProviderURI+"/protocol/openid-connect/token", authData) if err != nil { - logging.Logger.WithFields(logrus.Fields{"method": "setupOidcClient"}).Error(err) + logging.Logger.WithFields(logrus.Fields{"method": "getAccessToken"}).Error(err) return 0 } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { - logging.Logger.WithFields(logrus.Fields{"method": "setupOidcClient", "statusCode": resp.StatusCode}).Error(resp.Status) + logging.Logger.WithFields(logrus.Fields{"method": "getAccessToken", "statusCode": resp.StatusCode}).Error(resp.Status) return 0 } respData := make(map[string]any) err = json.NewDecoder(resp.Body).Decode(&respData) if err != nil { - logging.Logger.WithFields(logrus.Fields{"method": "setupOidcClient"}).Error(err) + logging.Logger.WithFields(logrus.Fields{"method": "getAccessToken"}).Error(err) return 0 } if respData["error"] != nil { - logging.Logger.WithFields(logrus.Fields{"method": "setupOidcClient"}).Error(respData) + logging.Logger.WithFields(logrus.Fields{"method": "getAccessToken"}).Error(respData) return 0 } client.accessToken = respData["access_token"].(string) @@ -91,19 +91,20 @@ func (client *OIDCClient) GetActiveUsers() []OIDCUser { //active req, err := http.NewRequest("GET", client.providerBase+"/auth/admin/realms/csh/groups/a97a191e-5668-43f5-bc0c-6eefc2b958a7/members", nil) if err != nil { + logging.Logger.WithFields(logrus.Fields{"method": "GetActiveUsers"}).Error(err) return nil } req.Header.Add("Authorization", "Bearer "+client.accessToken) resp, err := htclient.Do(req) if err != nil { - logging.Logger.WithFields(logrus.Fields{"method": "GetAllUsers"}).Error(err) + logging.Logger.WithFields(logrus.Fields{"method": "GetActiveUsers"}).Error(err) return nil } defer resp.Body.Close() ret := make([]OIDCUser, 0) err = json.NewDecoder(resp.Body).Decode(&ret) if err != nil { - logging.Logger.WithFields(logrus.Fields{"method": "GetAllUsers"}).Error(err) + logging.Logger.WithFields(logrus.Fields{"method": "GetActiveUsers"}).Error(err) return nil } return ret @@ -118,6 +119,7 @@ func (client *OIDCClient) GetUserInfo(user *OIDCUser) { req, err := http.NewRequest("GET", client.providerBase+"/auth/admin/realms/csh/users/"+user.Uuid+arg, nil) // also "users/{user-id}/groups" if err != nil { + logging.Logger.WithFields(logrus.Fields{"method": "GetUserInfo"}).Error(err) return } req.Header.Add("Authorization", "Bearer "+client.accessToken) From 0e46341a4e7c913f33a94b372ceae9bb8bafcf95 Mon Sep 17 00:00:00 2001 From: tmcnulty387 Date: Mon, 16 Feb 2026 16:33:26 -0500 Subject: [PATCH 5/8] Replaced context.TODO() with context.Background() --- database/database.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/database/database.go b/database/database.go index c104d47..238fe85 100644 --- a/database/database.go +++ b/database/database.go @@ -33,7 +33,7 @@ func Connect() *mongo.Client { logging.Logger.WithFields(logrus.Fields{"module": "database", "method": "Connect"}).Info("beginning database connection") - ctx, cancel := context.WithTimeout(context.TODO(), 10*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() uri := os.Getenv("VOTE_MONGODB_URI") @@ -54,7 +54,7 @@ func Connect() *mongo.Client { } func Disconnect() { - ctx, cancel := context.WithTimeout(context.TODO(), 10*time.Second) + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() if err := Client.Disconnect(ctx); err != nil { From 70125b88e25095842b7232aa9aab0a4d33f47827 Mon Sep 17 00:00:00 2001 From: tmcnulty387 Date: Mon, 16 Feb 2026 16:34:10 -0500 Subject: [PATCH 6/8] Updated gitignore to ignore .vscode --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index fac86fa..20e2001 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ .env* vote -.idea/ \ No newline at end of file +.idea/ +.vscode/ \ No newline at end of file From 5e7c91f10ee31b8d78d5bc9c91c56ba1fb0061d4 Mon Sep 17 00:00:00 2001 From: tmcnulty387 Date: Mon, 16 Feb 2026 16:55:06 -0500 Subject: [PATCH 7/8] Revert "Small changes suggested by go compiler" This reverts commit 1dd301c1e393e984b3837f113a563f6c6a735e83. --- constitutional.go | 4 ++-- users.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/constitutional.go b/constitutional.go index 4fc412c..7528b34 100644 --- a/constitutional.go +++ b/constitutional.go @@ -49,8 +49,8 @@ func InitConstitution() { startOfDay := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Local) nextMidnight := startOfDay.AddDate(0, 0, 1) fmt.Println(nextMidnight) - fmt.Println(time.Until(nextMidnight)) - ticker := time.NewTicker(time.Until(nextMidnight)) + fmt.Println(nextMidnight.Sub(time.Now())) + ticker := time.NewTicker(nextMidnight.Sub(time.Now())) first := true go func() { for { diff --git a/users.go b/users.go index 6351714..ea00283 100644 --- a/users.go +++ b/users.go @@ -72,7 +72,7 @@ func (client *OIDCClient) getAccessToken() int { logging.Logger.WithFields(logrus.Fields{"method": "getAccessToken", "statusCode": resp.StatusCode}).Error(resp.Status) return 0 } - respData := make(map[string]any) + respData := make(map[string]interface{}) err = json.NewDecoder(resp.Body).Decode(&respData) if err != nil { logging.Logger.WithFields(logrus.Fields{"method": "getAccessToken"}).Error(err) From 35271c04acb48eadd34eaee31d7d83c9c27407dd Mon Sep 17 00:00:00 2001 From: tmcnulty387 Date: Mon, 16 Feb 2026 16:57:52 -0500 Subject: [PATCH 8/8] Change suggested by go compiler --- constitutional.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/constitutional.go b/constitutional.go index 7528b34..4fc412c 100644 --- a/constitutional.go +++ b/constitutional.go @@ -49,8 +49,8 @@ func InitConstitution() { startOfDay := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, time.Local) nextMidnight := startOfDay.AddDate(0, 0, 1) fmt.Println(nextMidnight) - fmt.Println(nextMidnight.Sub(time.Now())) - ticker := time.NewTicker(nextMidnight.Sub(time.Now())) + fmt.Println(time.Until(nextMidnight)) + ticker := time.NewTicker(time.Until(nextMidnight)) first := true go func() { for {