diff --git a/server/db/providers/couchbase/user.go b/server/db/providers/couchbase/user.go index 775f3ff..653c45e 100644 --- a/server/db/providers/couchbase/user.go +++ b/server/db/providers/couchbase/user.go @@ -181,3 +181,23 @@ func (p *provider) UpdateUsers(ctx context.Context, data map[string]interface{}, return nil } + +// GetUserByPhoneNumber to get user information from database using phone number +func (p *provider) GetUserByPhoneNumber(ctx context.Context, phoneNumber string) (*models.User, error) { + var user *models.User + query := fmt.Sprintf("SELECT _id, email, email_verified_at, `password`, signup_methods, given_name, family_name, middle_name, nickname, birthdate, phone_number, phone_number_verified_at, picture, roles, revoked_timestamp, is_multi_factor_auth_enabled, created_at, updated_at FROM %s.%s WHERE _id = $1 LIMIT 1", p.scopeName, models.Collections.User) + q, err := p.db.Query(query, &gocb.QueryOptions{ + ScanConsistency: gocb.QueryScanConsistencyRequestPlus, + Context: ctx, + PositionalParameters: []interface{}{phoneNumber}, + }) + if err != nil { + return user, err + } + err = q.One(&user) + if err != nil { + return user, err + } + + return user, nil +}