Change status and password method #3

Merged
lqhoang99 merged 3 commits from feature/changeStatus-password into master 2021-11-09 04:03:28 +00:00
2 changed files with 68 additions and 0 deletions
Showing only changes of commit 13b807efd7 - Show all commits

View File

@ -2,6 +2,7 @@ package usermngmt
import ( import (
"context" "context"
"errors"
"github.com/Selly-Modules/mongodb" "github.com/Selly-Modules/mongodb"
"go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson"
@ -55,3 +56,61 @@ func (s Service) UpdateByUserID(userID string, payload UpdateOptions) error {
return nil return nil
} }
// ChangePasswordByUserID ...
func (s Service) ChangePasswordByUserID(userID, oldPassword, newPassword string) error {
namhq1989 commented 2021-11-09 03:42:23 +00:00 (Migrated from github.com)
Review

cái này cũng move về dạng if như trên đi

if a := ...; a {
  // ...
}

chú ý mấy cái khác tương tự luôn, đưa về cách trên cho gọn code

cái này cũng move về dạng if như trên đi ```go if a := ...; a { // ... } ``` chú ý mấy cái khác tương tự luôn, đưa về cách trên cho gọn code
namhq1989 commented 2021-11-09 03:42:50 +00:00 (Migrated from github.com)
Review

fix như trên

fix như trên
lqhoang99 commented 2021-11-09 03:54:32 +00:00 (Migrated from github.com)
Review

done

done
var (
ctx = context.Background()
id, _ = mongodb.NewIDFromString(userID)
)
if oldPassword == "" || newPassword == "" {
return errors.New("new password and old password cannot be empty")
}
// Find user
user, _ := s.userFindByID(ctx, id)
if user.ID.IsZero() {
return errors.New("user does not exist")
}
// Check old password
isValid := checkPasswordHash(oldPassword, user.HashedPassword)
if !isValid {
return errors.New("the password is incorrect")
}
// Update password
err := s.userUpdateOneByCondition(ctx, bson.M{"_id": user.ID}, bson.M{
"$set": bson.M{
"hashedPassword": hashPassword(newPassword),
"updatedAt": now(),
},
})
if err != nil {
return err
}
return nil
}
// ChangeStatusByUserID ...
func (s Service) ChangeStatusByUserID(userID, newStatus string) error {
var (
ctx = context.Background()
id, _ = mongodb.NewIDFromString(userID)
)
// Update password
err := s.userUpdateOneByCondition(ctx, bson.M{"_id": id}, bson.M{
"$set": bson.M{
"status": newStatus,
"updatedAt": now(),
},
})
namhq1989 commented 2021-11-09 03:56:42 +00:00 (Migrated from github.com)
Review

chỗ này cũng check được như trên nè

chỗ này cũng check được như trên nè
if err != nil {
return err
}
return nil
}

9
db.go
View File

@ -100,4 +100,13 @@ func (s Service) userUpdateOneByCondition(ctx context.Context, cond interface{},
} }
return err return err
}
func (s Service) userFindByID(ctx context.Context, id primitive.ObjectID) (User, error) {
var (
col = s.getUserCollection()
doc User
)
err := col.FindOne(ctx, bson.M{"_id": id}).Decode(&doc)
return doc, err
} }