2024-01-05 11:58:16 +00:00
|
|
|
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
|
2024-02-01 13:37:49 +00:00
|
|
|
func IsRegisteredResolver(ctx context.Context, email string) (*model.Response, error) {
|
2024-02-06 09:20:01 +00:00
|
|
|
// Initialize the response object
|
|
|
|
res := &model.Response{}
|
2024-02-06 09:12:34 +00:00
|
|
|
res.Message = ""
|
2024-02-06 09:20:01 +00:00
|
|
|
|
|
|
|
// Convert email to lowercase
|
|
|
|
email = strings.ToLower(strings.TrimSpace(refs.StringValue(&email)))
|
2024-01-05 11:58:16 +00:00
|
|
|
if email == "" {
|
|
|
|
log.Debug("Email is required")
|
2024-02-06 09:20:01 +00:00
|
|
|
return res, fmt.Errorf("email is required")
|
2024-01-05 11:58:16 +00:00
|
|
|
}
|
|
|
|
|
2024-02-06 09:20:01 +00:00
|
|
|
// Initialize logger with a field
|
2024-01-05 11:58:16 +00:00
|
|
|
log := log.WithField("email", email)
|
|
|
|
|
2024-02-06 09:20:01 +00:00
|
|
|
// Find user with email
|
2024-01-05 11:58:16 +00:00
|
|
|
existingUser, err := db.Provider.GetUserByEmail(ctx, email)
|
|
|
|
if err != nil {
|
|
|
|
log.Debug("Failed to get user by email: ", err)
|
2024-02-06 09:25:40 +00:00
|
|
|
} else {
|
|
|
|
log.Debug("Found user by email: ", existingUser)
|
|
|
|
if existingUser != nil {
|
2024-02-08 16:04:24 +00:00
|
|
|
if existingUser.SignupMethods == "magic_link_login" {
|
2024-02-08 15:54:44 +00:00
|
|
|
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
|
|
|
|
}
|
2024-01-05 11:58:16 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return res, nil
|
|
|
|
}
|