summaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
Diffstat (limited to 'pkg')
-rw-r--r--pkg/auth/oidc.go10
-rw-r--r--pkg/session/session.go7
2 files changed, 14 insertions, 3 deletions
diff --git a/pkg/auth/oidc.go b/pkg/auth/oidc.go
index 674332e..e8afdd3 100644
--- a/pkg/auth/oidc.go
+++ b/pkg/auth/oidc.go
@@ -137,9 +137,16 @@ func (p *OIDCAuthProvider) CompleteJourney(ctx context.Context, authCode string,
}
func (p *OIDCAuthProvider) UpdateUserInfo(ctx context.Context, session *session.UserSession) error {
+ session.UserInfoMutex.Lock()
+ defer session.UserInfoMutex.Unlock()
+
+ if session.TeamID != "" && session.TeamName != "" && session.UserInfoExpires.Unix() > time.Now().Unix() {
+ return nil
+ }
+
userInfo, err := p.oidcProvider.UserInfo(ctx, session.OAuthTokenSource)
if err != nil {
- return ErrInvalidToken
+ return err
}
var claims struct {
@@ -157,6 +164,7 @@ func (p *OIDCAuthProvider) UpdateUserInfo(ctx context.Context, session *session.
session.Name = claims.Name
session.TeamID = claims.TeamID
session.TeamName = claims.TeamName
+ session.UserInfoExpires = time.Now().Add(1 * time.Minute)
return nil
}
diff --git a/pkg/session/session.go b/pkg/session/session.go
index b60fef6..431d572 100644
--- a/pkg/session/session.go
+++ b/pkg/session/session.go
@@ -5,6 +5,7 @@ import (
"encoding/base64"
"fmt"
"sync"
+ "time"
"golang.org/x/oauth2"
)
@@ -17,8 +18,10 @@ type UserSession struct {
Name string
Email string
- TeamID string
- TeamName string
+ UserInfoMutex sync.Mutex
+ UserInfoExpires time.Time
+ TeamID string
+ TeamName string
}
// implemtation adapted from