authorizer/server/resolvers/is_registered.go

51 lines
1.4 KiB
Go
Raw Normal View History

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"
)
2024-02-06 09:20:01 +00:00
// IsRegisteredResolver is a resolver for registered checkup query
2024-01-05 11:58:16 +00:00
// 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)
}
if existingUser != nil {
2024-02-06 08:38:45 +00:00
res.Message = "registered"
2024-01-05 11:58:16 +00:00
if existingUser.EmailVerifiedAt != nil {
res.Message = "verified"
log.Debug("Email is already verified and signed up.")
2024-02-06 09:20:01 +00:00
return res, nil
2024-01-05 11:58:16 +00:00
} else if existingUser.ID != "" && existingUser.EmailVerifiedAt == nil {
res.Message = "not verified"
log.Debug("Email is already signed up. Verification pending...")
2024-02-06 09:20:01 +00:00
return res, nil
2024-01-05 11:58:16 +00:00
}
}
return res, nil
}