Skip to content

Commit 00787d6

Browse files
committed
- added debug logs
- fixed bug where new users are created every login
1 parent 6c7a05a commit 00787d6

File tree

4 files changed

+44
-16
lines changed

4 files changed

+44
-16
lines changed

pkg/auth/github/provider.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"net/http"
1111
"net/url"
1212
"strconv"
13+
"strings"
1314
)
1415

1516
const (
@@ -41,12 +42,14 @@ func (g Provider) VerifyCallback(r *http.Request) (principal auth.Principal, use
4142
var orgs []string
4243
var allowed bool
4344

45+
logrus.Debug("[github] exchanging callback code for token")
4446
token, err := getGithubToken(g.ClientId, g.ClientSecret, r.URL.Query().Get("code"))
4547
if err != nil {
4648
logrus.Errorf("error getting github token: %v", err)
4749
return
4850
}
4951

52+
logrus.Debug("[github] requesting user info for callback")
5053
userId, userEmail, orgs, err = getGithubUserInfo(token)
5154
if err != nil {
5255
logrus.Errorf("error getting github user info: %v", err)
@@ -55,16 +58,19 @@ func (g Provider) VerifyCallback(r *http.Request) (principal auth.Principal, use
5558

5659
principal = auth.NewPrincipal(g.Name(), userId)
5760

61+
logrus.Debugf("[github] checking github orgs for user: %s", userId)
5862
for _, org := range orgs {
5963
if g.OrganizationPermissionMap[org] {
6064
allowed = true
6165
break
6266
}
6367
}
68+
logrus.Debugf("[github] user allowed based on org access? %s => %v", userId, allowed)
6469

6570
if !allowed {
6671
allowed = g.EmailPermissionMap[userEmail]
6772
}
73+
logrus.Debugf("[github] user allowed based on email access? %s => %v", userId, allowed)
6874

6975
if !allowed {
7076
err = auth.AccessDenied{}
@@ -176,7 +182,7 @@ func getGithubUserInfo(ghToken string) (userId string, userEmail string, orgs []
176182

177183
for _, email := range emails {
178184
if email.Primary {
179-
userEmail = email.Email
185+
userEmail = strings.ToLower(email.Email)
180186
break
181187
}
182188
}

pkg/auth/service.go

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ func (s *Service) callback(w http.ResponseWriter, r *http.Request) {
130130
}
131131

132132
// verify request
133+
logrus.Debug("[auth.callback] verifying callback")
133134
principal, userEmail, err := provider.VerifyCallback(r)
134135
if err != nil {
135136
if _, ok := err.(AccessDenied); ok {
@@ -142,13 +143,15 @@ func (s *Service) callback(w http.ResponseWriter, r *http.Request) {
142143

143144
// see if the user exists and is bound to this principal
144145
user = s.UserProvider.GetByPrincipals(principal)
145-
if user != nil {
146+
if user == nil {
147+
logrus.Debug("[auth.callback] user matching principal not found")
146148
// see if this user exists for this email
147149
user = s.UserProvider.GetByEmail(userEmail)
148-
if user.Id == "" {
150+
if user != nil {
149151
// if we find the user by their email, bind the principal
150152
user.Principals = append(user.Principals, principal)
151153
if err = s.UserProvider.Save(user); err != nil {
154+
logrus.Errorf("[auth.callback] failed to update user: %v", err)
152155
w.WriteHeader(http.StatusInternalServerError)
153156
return
154157
}
@@ -159,10 +162,12 @@ func (s *Service) callback(w http.ResponseWriter, r *http.Request) {
159162

160163
// create new user
161164
if user == nil {
165+
logrus.Debug("[auth.callback] user does not exist")
162166
newUser := NewUser()
163167
newUser.Principals = append(newUser.Principals, principal)
164168
newUser.Email = userEmail
165169
if err = s.UserProvider.Save(&newUser); err != nil {
170+
logrus.Errorf("[auth.callback] failed to save new user: %v", err)
166171
w.WriteHeader(http.StatusInternalServerError)
167172
return
168173
}
@@ -177,6 +182,7 @@ func (s *Service) callback(w http.ResponseWriter, r *http.Request) {
177182
newToken.UserId = user.Id
178183
newToken.ExpiresAt = time.Now().Add(sessionTTL)
179184
if err = s.TokenProvider.Save(&newToken); err != nil {
185+
logrus.Errorf("[auth.callback] failed to save new token: %v", err)
180186
w.WriteHeader(http.StatusInternalServerError)
181187
return
182188
}
@@ -206,7 +212,8 @@ func (s *Service) getUserPreferences(w http.ResponseWriter, r *http.Request) {
206212

207213
user := s.UserProvider.Get(token.UserId)
208214

209-
if json.NewEncoder(w).Encode(user.Preferences) != nil {
215+
if err := json.NewEncoder(w).Encode(user.Preferences); err != nil {
216+
logrus.Errorf("[auth.getUserPreferences] failed to parse user preferences: %v", err)
210217
w.WriteHeader(http.StatusInternalServerError)
211218
}
212219
}
@@ -248,6 +255,7 @@ func (s *Service) updateUserPreferences(w http.ResponseWriter, r *http.Request)
248255

249256
err = s.UserProvider.Save(user)
250257
if err != nil {
258+
logrus.Errorf("[auth.updateUserPreferences] failed to save user preferences: %v", err)
251259
w.WriteHeader(http.StatusInternalServerError)
252260
return
253261
}
@@ -270,7 +278,8 @@ func (s *Service) listToken(w http.ResponseWriter, r *http.Request) {
270278
}
271279
}
272280

273-
if json.NewEncoder(w).Encode(rval) != nil {
281+
if err := json.NewEncoder(w).Encode(rval); err != nil {
282+
logrus.Errorf("[auth.listToken] failed to encode token list: %v", err)
274283
w.WriteHeader(http.StatusInternalServerError)
275284
}
276285
}
@@ -291,7 +300,8 @@ func (s *Service) createWSToken(w http.ResponseWriter, r *http.Request) {
291300
token.UserId = userId
292301
token.ExpiresAt = time.Now().Add(wsTokenTTL)
293302

294-
if s.TokenProvider.Save(&token) != nil {
303+
if err := s.TokenProvider.Save(&token); err != nil {
304+
logrus.Errorf("[auth.createWSToken] failed to save token: %v", err)
295305
w.WriteHeader(http.StatusInternalServerError)
296306
return
297307
}
@@ -328,7 +338,8 @@ func (s *Service) createToken(w http.ResponseWriter, r *http.Request) {
328338
token.UserId = userId
329339
token.Name = requestToken.Name
330340

331-
if s.TokenProvider.Save(&token) != nil {
341+
if err := s.TokenProvider.Save(&token); err != nil {
342+
logrus.Errorf("[auth.createToken] failed to save token: %v", err)
332343
w.WriteHeader(http.StatusInternalServerError)
333344
return
334345
}
@@ -349,9 +360,12 @@ func (s *Service) deleteToken(w http.ResponseWriter, r *http.Request) {
349360

350361
targetToken := s.TokenProvider.Get(mux.Vars(r)["tokenId"])
351362

352-
if targetToken.UserId == token.UserId && s.TokenProvider.Delete(targetToken) != nil {
353-
w.WriteHeader(http.StatusInternalServerError)
354-
return
363+
if targetToken.UserId == token.UserId {
364+
if err := s.TokenProvider.Delete(targetToken); err != nil {
365+
logrus.Errorf("[auth.deleteToken] failed to delete token: %v", err)
366+
w.WriteHeader(http.StatusInternalServerError)
367+
return
368+
}
355369
}
356370

357371
w.WriteHeader(http.StatusNoContent)
@@ -367,7 +381,6 @@ func (s *Service) providerRedirect(w http.ResponseWriter, r *http.Request) {
367381
}
368382

369383
w.WriteHeader(http.StatusNotAcceptable)
370-
371384
}
372385

373386
func (s *Service) listProviders(w http.ResponseWriter, _ *http.Request) {
@@ -378,17 +391,18 @@ func (s *Service) listProviders(w http.ResponseWriter, _ *http.Request) {
378391
result = append(result, provider.Name())
379392
}
380393

381-
if json.NewEncoder(w).Encode(result) != nil {
382-
w.WriteHeader(http.StatusInternalServerError)
383-
}
394+
_ = json.NewEncoder(w).Encode(result)
384395
}
385396

386397
// Logout
387398
func (s *Service) logout(w http.ResponseWriter, r *http.Request) {
388399
token := s.TokenProvider.FromRequest(r)
389400

390-
if token != nil && s.TokenProvider.Delete(token) != nil {
391-
w.WriteHeader(http.StatusInternalServerError)
401+
if token != nil {
402+
if err := s.TokenProvider.Delete(token); err != nil {
403+
logrus.Errorf("[auth.logout] failed to delete token: %v", err)
404+
w.WriteHeader(http.StatusInternalServerError)
405+
}
392406
}
393407

394408
cookie := &http.Cookie{

pkg/service/errors.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package service
22

33
import (
44
"encoding/json"
5+
"github.com/sirupsen/logrus"
56
"net/http"
67
)
78

@@ -44,6 +45,8 @@ func WriteErrorResponse(w http.ResponseWriter, err error) {
4445
resp.Code = http.StatusNotAcceptable
4546
resp.Message = err.Error()
4647
break
48+
default:
49+
logrus.Debugf("[errors.WriteErrorResponse] %v", err)
4750
}
4851

4952
w.WriteHeader(resp.Code)

pkg/sound/audio.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package sound
33
import (
44
"bytes"
55
"fmt"
6+
"github.com/sirupsen/logrus"
67
"io"
78
"os/exec"
89
"regexp"
@@ -59,6 +60,10 @@ func normalizeAudio(filename string, maxDuration time.Duration, r io.Reader, w i
5960
}
6061
}
6162

63+
if duration == 0 {
64+
logrus.Debugf("failed to get duration for %s, output: %s", filename, output.String())
65+
}
66+
6267
return duration, nil
6368
}
6469

0 commit comments

Comments
 (0)