Merge branch 'feature/additional-roles' into feature/user-info-with-role-permissions

This commit is contained in:
Pedro Costa
2025-04-23 15:13:26 +01:00
3 changed files with 25 additions and 6 deletions
+1
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()
@@ -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
} }
@@ -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 {