[management] fix lastLogin on dashboard (#3725)

This commit is contained in:
Pascal Fischer 2025-04-23 15:54:49 +02:00 committed by GitHub
parent 197761ba4d
commit 986eb8c1e0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 25 additions and 6 deletions

View File

@ -62,6 +62,7 @@ func NewAPIHandler(
authManager, authManager,
accountManager.GetAccountIDFromUserAuth, accountManager.GetAccountIDFromUserAuth,
accountManager.SyncUserJWTGroups, accountManager.SyncUserJWTGroups,
accountManager.GetUserFromUserAuth,
) )
corsMiddleware := cors.AllowAll() corsMiddleware := cors.AllowAll()

View File

@ -15,16 +15,20 @@ import (
"github.com/netbirdio/netbird/management/server/http/middleware/bypass" "github.com/netbirdio/netbird/management/server/http/middleware/bypass"
"github.com/netbirdio/netbird/management/server/http/util" "github.com/netbirdio/netbird/management/server/http/util"
"github.com/netbirdio/netbird/management/server/status" "github.com/netbirdio/netbird/management/server/status"
"github.com/netbirdio/netbird/management/server/types"
) )
type EnsureAccountFunc func(ctx context.Context, userAuth nbcontext.UserAuth) (string, string, error) type EnsureAccountFunc func(ctx context.Context, userAuth nbcontext.UserAuth) (string, string, error)
type SyncUserJWTGroupsFunc func(ctx context.Context, userAuth nbcontext.UserAuth) error type SyncUserJWTGroupsFunc func(ctx context.Context, userAuth nbcontext.UserAuth) error
type GetUserFromUserAuthFunc func(ctx context.Context, userAuth nbcontext.UserAuth) (*types.User, error)
// AuthMiddleware middleware to verify personal access tokens (PAT) and JWT tokens // AuthMiddleware middleware to verify personal access tokens (PAT) and JWT tokens
type AuthMiddleware struct { type AuthMiddleware struct {
authManager auth.Manager authManager auth.Manager
ensureAccount EnsureAccountFunc ensureAccount EnsureAccountFunc
syncUserJWTGroups SyncUserJWTGroupsFunc getUserFromUserAuth GetUserFromUserAuthFunc
syncUserJWTGroups SyncUserJWTGroupsFunc
} }
// NewAuthMiddleware instance constructor // NewAuthMiddleware instance constructor
@ -32,11 +36,13 @@ func NewAuthMiddleware(
authManager auth.Manager, authManager auth.Manager,
ensureAccount EnsureAccountFunc, ensureAccount EnsureAccountFunc,
syncUserJWTGroups SyncUserJWTGroupsFunc, syncUserJWTGroups SyncUserJWTGroupsFunc,
getUserFromUserAuth GetUserFromUserAuthFunc,
) *AuthMiddleware { ) *AuthMiddleware {
return &AuthMiddleware{ return &AuthMiddleware{
authManager: authManager, authManager: authManager,
ensureAccount: ensureAccount, ensureAccount: ensureAccount,
syncUserJWTGroups: syncUserJWTGroups, syncUserJWTGroups: syncUserJWTGroups,
getUserFromUserAuth: getUserFromUserAuth,
} }
} }
@ -123,6 +129,12 @@ func (m *AuthMiddleware) checkJWTFromRequest(r *http.Request, auth []string) (*h
log.WithContext(ctx).Errorf("HTTP server failed to sync user JWT groups: %s", err) log.WithContext(ctx).Errorf("HTTP server failed to sync user JWT groups: %s", err)
} }
_, err = m.getUserFromUserAuth(ctx, userAuth)
if err != nil {
log.WithContext(ctx).Errorf("HTTP server failed to update user from user auth: %s", err)
return r, err
}
return nbcontext.SetUserAuthInRequest(r, userAuth), nil return nbcontext.SetUserAuthInRequest(r, userAuth), nil
} }

View File

@ -190,6 +190,9 @@ func TestAuthMiddleware_Handler(t *testing.T) {
func(ctx context.Context, userAuth nbcontext.UserAuth) error { func(ctx context.Context, userAuth nbcontext.UserAuth) error {
return nil return nil
}, },
func(ctx context.Context, userAuth nbcontext.UserAuth) (*types.User, error) {
return &types.User{}, nil
},
) )
handlerToTest := authMiddleware.Handler(nextHandler) handlerToTest := authMiddleware.Handler(nextHandler)
@ -291,6 +294,9 @@ func TestAuthMiddleware_Handler_Child(t *testing.T) {
func(ctx context.Context, userAuth nbcontext.UserAuth) error { func(ctx context.Context, userAuth nbcontext.UserAuth) error {
return nil return nil
}, },
func(ctx context.Context, userAuth nbcontext.UserAuth) (*types.User, error) {
return &types.User{}, nil
},
) )
for _, tc := range tt { for _, tc := range tt {