ERP/internal/models/user.go
2026-02-06 17:35:29 +01:00

34 lines
685 B
Go

package models
import (
"database/sql"
"fmt"
"time"
"golang.org/x/crypto/bcrypt"
)
type User struct {
ID int
Username string
PasswordHash string
CreatedAt time.Time
}
func Authenticate(db *sql.DB, username, password string) (*User, error) {
u := &User{}
err := db.QueryRow(
"SELECT id, username, password_hash, created_at FROM users WHERE username = ?",
username,
).Scan(&u.ID, &u.Username, &u.PasswordHash, &u.CreatedAt)
if err != nil {
return nil, fmt.Errorf("user not found")
}
if err := bcrypt.CompareHashAndPassword([]byte(u.PasswordHash), []byte(password)); err != nil {
return nil, fmt.Errorf("invalid password")
}
return u, nil
}