Skip to content

Commit 313b510

Browse files
committed
feat: add signup + login using mobile
1 parent 1eb8965 commit 313b510

File tree

18 files changed

+576
-96
lines changed

18 files changed

+576
-96
lines changed

server/db/models/user.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ type User struct {
2525
Nickname *string `json:"nickname" bson:"nickname" cql:"nickname" dynamo:"nickname"`
2626
Gender *string `json:"gender" bson:"gender" cql:"gender" dynamo:"gender"`
2727
Birthdate *string `json:"birthdate" bson:"birthdate" cql:"birthdate" dynamo:"birthdate"`
28-
PhoneNumber *string `gorm:"index" json:"phone_number" bson:"phone_number" cql:"phone_number" dynamo:"phone_number" index:"phone_number,hash"`
28+
PhoneNumber *string `gorm:"index" json:"phone_number" bson:"phone_number" cql:"phone_number" dynamo:"phone_number"`
2929
PhoneNumberVerifiedAt *int64 `json:"phone_number_verified_at" bson:"phone_number_verified_at" cql:"phone_number_verified_at" dynamo:"phone_number_verified_at"`
3030
Picture *string `json:"picture" bson:"picture" cql:"picture" dynamo:"picture"`
3131
Roles string `json:"roles" bson:"roles" cql:"roles" dynamo:"roles"`

server/db/providers/cassandradb/user.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,6 @@ func (p *provider) AddUser(ctx context.Context, user models.User) (models.User,
9090
func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.User, error) {
9191
user.UpdatedAt = time.Now().Unix()
9292

93-
if user.PhoneNumber != nil && strings.TrimSpace(refs.StringValue(user.PhoneNumber)) != "" {
94-
if u, _ := p.GetUserByPhoneNumber(ctx, refs.StringValue(user.PhoneNumber)); u != nil && u.ID != user.ID {
95-
return user, fmt.Errorf("user with given phone number already exists")
96-
}
97-
}
98-
9993
bytes, err := json.Marshal(user)
10094
if err != nil {
10195
return user, err

server/db/providers/dynamodb/env.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ func (p *provider) AddEnv(ctx context.Context, env models.Env) (models.Env, erro
3434

3535
// UpdateEnv to update environment information in database
3636
func (p *provider) UpdateEnv(ctx context.Context, env models.Env) (models.Env, error) {
37-
3837
collection := p.db.Table(models.Collections.Env)
3938
env.UpdatedAt = time.Now().Unix()
4039

server/db/providers/dynamodb/user.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,6 @@ func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.Use
5858

5959
user.UpdatedAt = time.Now().Unix()
6060

61-
if user.PhoneNumber != nil && strings.TrimSpace(refs.StringValue(user.PhoneNumber)) != "" {
62-
if u, _ := p.GetUserByPhoneNumber(ctx, refs.StringValue(user.PhoneNumber)); u != nil && u.ID != user.ID {
63-
return user, fmt.Errorf("user with given phone number already exists")
64-
}
65-
}
66-
6761
err := UpdateByHashKey(collection, "id", user.ID, user)
6862
if err != nil {
6963
return user, err
@@ -215,7 +209,7 @@ func (p *provider) GetUserByPhoneNumber(ctx context.Context, phoneNumber string)
215209
var user models.User
216210

217211
collection := p.db.Table(models.Collections.User)
218-
err := collection.Scan().Index("phone_number").Filter("'phone_number' = ?", phoneNumber).AllWithContext(ctx, &users)
212+
err := collection.Scan().Filter("'phone_number' = ?", phoneNumber).AllWithContext(ctx, &users)
219213

220214
if err != nil {
221215
return nil, err

server/db/providers/sql/user.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,6 @@ func (p *provider) AddUser(ctx context.Context, user models.User) (models.User,
5656
func (p *provider) UpdateUser(ctx context.Context, user models.User) (models.User, error) {
5757
user.UpdatedAt = time.Now().Unix()
5858

59-
if user.PhoneNumber != nil && strings.TrimSpace(refs.StringValue(user.PhoneNumber)) != "" {
60-
if u, _ := p.GetUserByPhoneNumber(ctx, refs.StringValue(user.PhoneNumber)); u != nil && u.ID != user.ID {
61-
return user, fmt.Errorf("user with given phone number already exists")
62-
}
63-
}
64-
6559
result := p.db.Save(&user)
6660

6761
if result.Error != nil {

server/env/persist_env.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ func GetEnvData() (map[string]interface{}, error) {
7575
}
7676

7777
memorystore.Provider.UpdateEnvVariable(constants.EnvKeyEncryptionKey, decryptedEncryptionKey)
78-
7978
b64DecryptedConfig, err := crypto.DecryptB64(env.EnvData)
8079
if err != nil {
8180
log.Debug("Error while decrypting env data from B64: ", err)

server/graph/generated/generated.go

Lines changed: 239 additions & 52 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/graph/model/models_gen.go

Lines changed: 9 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/graph/schema.graphqls

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ input AdminSignupInput {
269269
admin_secret: String!
270270
}
271271

272-
input MobileBasicAuthSignUpUpInput {
272+
input MobileSignUpInput {
273273
email: String
274274
given_name: String
275275
family_name: String
@@ -324,6 +324,17 @@ input LoginInput {
324324
state: String
325325
}
326326

327+
input MobileLoginInput {
328+
phone_number: String!
329+
password: String!
330+
roles: [String!]
331+
scope: [String!]
332+
# state is used for authorization code grant flow
333+
# it is used to get code for an on-going auth process during login
334+
# and use that code for setting `c_hash` in id_token
335+
state: String
336+
}
337+
327338
input VerifyEmailInput {
328339
token: String!
329340
# state is used for authorization code grant flow
@@ -506,8 +517,9 @@ input ResendOTPRequest {
506517

507518
type Mutation {
508519
signup(params: SignUpInput!): AuthResponse!
509-
mobile_basic_auth_signup(params: MobileBasicAuthSignUpUpInput): AuthResponse!
520+
mobile_signup(params: MobileSignUpInput): AuthResponse!
510521
login(params: LoginInput!): AuthResponse!
522+
mobile_login(params: MobileLoginInput!): AuthResponse!
511523
magic_link_login(params: MagicLinkLoginInput!): Response!
512524
logout: Response!
513525
update_profile(params: UpdateProfileInput!): Response!

server/graph/schema.resolvers.go

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,21 @@ func (r *mutationResolver) Signup(ctx context.Context, params model.SignUpInput)
1616
return resolvers.SignupResolver(ctx, params)
1717
}
1818

19-
// MobileBasicAuthSignup is the resolver for the mobile_basic_auth_signup field.
20-
func (r *mutationResolver) MobileBasicAuthSignup(ctx context.Context, params *model.MobileBasicAuthSignUpUpInput) (*model.AuthResponse, error) {
21-
return resolvers.MobileBasicAuthSignupResolver(ctx, params)
19+
// MobileSignup is the resolver for the mobile_signup field.
20+
func (r *mutationResolver) MobileSignup(ctx context.Context, params *model.MobileSignUpInput) (*model.AuthResponse, error) {
21+
return resolvers.MobileSignupResolver(ctx, params)
2222
}
2323

2424
// Login is the resolver for the login field.
2525
func (r *mutationResolver) Login(ctx context.Context, params model.LoginInput) (*model.AuthResponse, error) {
2626
return resolvers.LoginResolver(ctx, params)
2727
}
2828

29+
// MobileLogin is the resolver for the mobile_login field.
30+
func (r *mutationResolver) MobileLogin(ctx context.Context, params model.MobileLoginInput) (*model.AuthResponse, error) {
31+
return resolvers.MobileLoginResolver(ctx, params)
32+
}
33+
2934
// MagicLinkLogin is the resolver for the magic_link_login field.
3035
func (r *mutationResolver) MagicLinkLogin(ctx context.Context, params model.MagicLinkLoginInput) (*model.Response, error) {
3136
return resolvers.MagicLinkLoginResolver(ctx, params)

0 commit comments

Comments
 (0)