Procházet zdrojové kódy

check password helper

sunguroku před 5 roky
rodič
revize
9d322b1e95
2 změnil soubory, kde provedl 17 přidání a 0 odebrání
  1. 16 0
      internal/repository/gorm/user.go
  2. 1 0
      internal/repository/user.go

+ 16 - 0
internal/repository/gorm/user.go

@@ -3,6 +3,7 @@ package gorm
 import (
 	"github.com/porter-dev/porter/internal/models"
 	"github.com/porter-dev/porter/internal/repository"
+	"golang.org/x/crypto/bcrypt"
 	"gorm.io/gorm"
 )
 
@@ -59,3 +60,18 @@ func (repo *UserRepository) DeleteUser(user *models.User) (*models.User, error)
 	}
 	return user, nil
 }
+
+// CheckPassword checks the input password is correct for the provided user id.
+func (repo *UserRepository) CheckPassword(id int, pwd string) (bool, error) {
+	u := &models.User{}
+
+	if err := repo.db.First(u, id).Error; err != nil {
+		return false, err
+	}
+
+	if err := bcrypt.CompareHashAndPassword([]byte(u.Password), []byte(pwd)); err != nil {
+		return false, err
+	}
+
+	return true, nil
+}

+ 1 - 0
internal/repository/user.go

@@ -10,6 +10,7 @@ type WriteUser func(user *models.User) (*models.User, error)
 // UserRepository represents the set of queries on the User model
 type UserRepository interface {
 	CreateUser(user *models.User) (*models.User, error)
+	CheckPassword(id int, pwd string) (bool, error)
 	ReadUser(id uint) (*models.User, error)
 	ReadUserByEmail(email string) (*models.User, error)
 	UpdateUser(user *models.User) (*models.User, error)