Browse Source

Improve logging for OAuth2 callback

Frédéric Guillot 10 months ago
parent
commit
dc8668b904
2 changed files with 14 additions and 2 deletions
  1. 8 0
      oauth2/profile.go
  2. 6 2
      ui/oauth2_callback.go

+ 8 - 0
oauth2/profile.go

@@ -4,9 +4,17 @@
 
 package oauth2 // import "miniflux.app/oauth2"
 
+import (
+	"fmt"
+)
+
 // Profile is the OAuth2 user profile.
 type Profile struct {
 	Key      string
 	ID       string
 	Username string
 }
+
+func (p Profile) String() string {
+	return fmt.Sprintf(`ID=%s ; Username=%s`, p.ID, p.Username)
+}

+ 6 - 2
ui/oauth2_callback.go

@@ -19,6 +19,7 @@ import (
 
 // OAuth2Callback receives the authorization code and create a new session.
 func (c *Controller) OAuth2Callback(w http.ResponseWriter, r *http.Request) {
+	clientIP := request.ClientIP(r)
 	printer := locale.NewPrinter(request.UserLanguage(r))
 	sess := session.New(c.store, request.SessionID(r))
 
@@ -57,6 +58,8 @@ func (c *Controller) OAuth2Callback(w http.ResponseWriter, r *http.Request) {
 		return
 	}
 
+	logger.Info("[OAuth2] [ClientIP=%s] Successful auth for %s", clientIP, profile)
+
 	if request.IsAuthenticated(r) {
 		user, err := c.store.UserByExtraField(profile.Key, profile.ID)
 		if err != nil {
@@ -104,13 +107,14 @@ func (c *Controller) OAuth2Callback(w http.ResponseWriter, r *http.Request) {
 		}
 	}
 
-	sessionToken, _, err := c.store.CreateUserSession(user.Username, r.UserAgent(), request.ClientIP(r))
+	sessionToken, _, err := c.store.CreateUserSession(user.Username, r.UserAgent(), clientIP)
 	if err != nil {
 		html.ServerError(w, r, err)
 		return
 	}
 
-	logger.Info("[Controller:OAuth2Callback] username=%s just logged in", user.Username)
+	logger.Info("[OAuth2] [ClientIP=%s] username=%s (%s) just logged in", clientIP, user.Username, profile)
+
 	c.store.SetLastLogin(user.ID)
 	sess.SetLanguage(user.Language)
 	sess.SetTheme(user.Theme)