package resolvers import ( "context" "fmt" "github.com/authorizerdev/authorizer/server/db" "github.com/authorizerdev/authorizer/server/graph/model" "github.com/authorizerdev/authorizer/server/refs" log "github.com/sirupsen/logrus" "strings" ) // IsRegisteredResolver is a resolver for registered checkup query func IsRegisteredResolver(ctx context.Context, email string) (*model.Response, error) { // Initialize the response object res := &model.Response{} res.Message = "" // Convert email to lowercase email = strings.ToLower(strings.TrimSpace(refs.StringValue(&email))) if email == "" { log.Debug("Email is required") return res, fmt.Errorf("email is required") } // Initialize logger with a field log := log.WithField("email", email) // Find user with email existingUser, err := db.Provider.GetUserByEmail(ctx, email) if err != nil { log.Debug("Failed to get user by email: ", err) } else { log.Debug("Found user by email: ", existingUser) if existingUser != nil { if existingUser.SignupMethods == "magic_link_login" { res.Message = "registered" } else if existingUser.EmailVerifiedAt != nil { res.Message = "verified" log.Debug("Email is already verified and signed up.") return res, nil } else if existingUser.ID != "" && existingUser.EmailVerifiedAt == nil { res.Message = "not verified" log.Debug("Email is already signed up. Verification pending...") return res, nil } else { res.Message = "unknown" log.Debug("Unknown signup method.") return res, nil } } } return res, nil }