From 2592383a7cacd43b740a4f594046ac3818f3c8d8 Mon Sep 17 00:00:00 2001 From: Fabi <38692350+fgerschwiler@users.noreply.github.com> Date: Fri, 21 Jan 2022 09:27:57 +0100 Subject: [PATCH] fix: only show factors with state ready (#3081) --- internal/api/grpc/auth/multi_factor.go | 4 ++++ internal/api/grpc/auth/passwordless.go | 4 ++++ internal/api/grpc/management/user.go | 8 ++++++++ internal/query/user_auth_method.go | 13 +++++++++++++ 4 files changed, 29 insertions(+) diff --git a/internal/api/grpc/auth/multi_factor.go b/internal/api/grpc/auth/multi_factor.go index dfce63c37..2e4c4ffeb 100644 --- a/internal/api/grpc/auth/multi_factor.go +++ b/internal/api/grpc/auth/multi_factor.go @@ -22,6 +22,10 @@ func (s *Server) ListMyAuthFactors(ctx context.Context, _ *auth_pb.ListMyAuthFac if err != nil { return nil, err } + err = query.AppendStateQuery(domain.MFAStateReady) + if err != nil { + return nil, err + } authMethods, err := s.query.SearchUserAuthMethods(ctx, query) if err != nil { return nil, err diff --git a/internal/api/grpc/auth/passwordless.go b/internal/api/grpc/auth/passwordless.go index 915999539..1d1453c97 100644 --- a/internal/api/grpc/auth/passwordless.go +++ b/internal/api/grpc/auth/passwordless.go @@ -24,6 +24,10 @@ func (s *Server) ListMyPasswordless(ctx context.Context, _ *auth_pb.ListMyPasswo if err != nil { return nil, err } + err = query.AppendStateQuery(domain.MFAStateReady) + if err != nil { + return nil, err + } authMethods, err := s.query.SearchUserAuthMethods(ctx, query) if err != nil { return nil, err diff --git a/internal/api/grpc/management/user.go b/internal/api/grpc/management/user.go index 323114353..a0ffc3715 100644 --- a/internal/api/grpc/management/user.go +++ b/internal/api/grpc/management/user.go @@ -522,6 +522,10 @@ func (s *Server) ListHumanAuthFactors(ctx context.Context, req *mgmt_pb.ListHuma if err != nil { return nil, err } + err = query.AppendStateQuery(domain.MFAStateReady) + if err != nil { + return nil, err + } authMethods, err := s.query.SearchUserAuthMethods(ctx, query) if err != nil { return nil, err @@ -561,6 +565,10 @@ func (s *Server) ListHumanPasswordless(ctx context.Context, req *mgmt_pb.ListHum if err != nil { return nil, err } + err = query.AppendStateQuery(domain.MFAStateReady) + if err != nil { + return nil, err + } authMethods, err := s.query.SearchUserAuthMethods(ctx, query) if err != nil { return nil, err diff --git a/internal/query/user_auth_method.go b/internal/query/user_auth_method.go index 92d9acdd8..368f85c3d 100644 --- a/internal/query/user_auth_method.go +++ b/internal/query/user_auth_method.go @@ -128,6 +128,10 @@ func NewUserAuthMethodTypeSearchQuery(value domain.UserAuthMethodType) (SearchQu return NewNumberQuery(UserAuthMethodColumnMethodType, value, NumberEquals) } +func NewUserAuthMethodStateSearchQuery(value domain.MFAState) (SearchQuery, error) { + return NewNumberQuery(UserAuthMethodColumnState, value, NumberEquals) +} + func NewUserAuthMethodTypesSearchQuery(values ...domain.UserAuthMethodType) (SearchQuery, error) { list := make([]interface{}, len(values)) for i, value := range values { @@ -163,6 +167,15 @@ func (r *UserAuthMethodSearchQueries) AppendTokenIDQuery(tokenID string) error { return nil } +func (r *UserAuthMethodSearchQueries) AppendStateQuery(state domain.MFAState) error { + query, err := NewUserAuthMethodStateSearchQuery(state) + if err != nil { + return err + } + r.Queries = append(r.Queries, query) + return nil +} + func (r *UserAuthMethodSearchQueries) AppendAuthMethodQuery(authMethod domain.UserAuthMethodType) error { query, err := NewUserAuthMethodTypeSearchQuery(authMethod) if err != nil {