69 lines
1.1 KiB
Go
69 lines
1.1 KiB
Go
package database
|
|
|
|
import (
|
|
"database/sql"
|
|
"time"
|
|
)
|
|
|
|
type Usuario struct {
|
|
identity
|
|
Email string
|
|
Nome string
|
|
// senhaHash string `json:"-"`
|
|
Ctime time.Time
|
|
}
|
|
|
|
func VerifyUser(tx *sql.Tx, email, senha string) (*Usuario, error) {
|
|
row := tx.QueryRow(
|
|
`SELECT id, nome, ctime, senha_hash FROM usuario WHERE email = $1 LIMIT 1`,
|
|
email,
|
|
)
|
|
if row.Err() != nil {
|
|
return nil, row.Err()
|
|
}
|
|
usuario := &Usuario{
|
|
Email: email,
|
|
}
|
|
|
|
var id int
|
|
var senhaHash string
|
|
err := row.Scan(
|
|
&id,
|
|
&usuario.Nome,
|
|
&usuario.Ctime,
|
|
&senhaHash,
|
|
)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
usuario.SetId(id)
|
|
|
|
if err = checkPasswordHash(senha, senhaHash); err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return usuario, nil
|
|
}
|
|
|
|
func FindUsuarioByID(tx *sql.Tx, id int) (*Usuario, error) {
|
|
row := tx.QueryRow(
|
|
`SELECT id, nome, email, ctime FROM usuario WHERE id = $1 LIMIT 1`,
|
|
id,
|
|
)
|
|
if row.Err() != nil {
|
|
return nil, row.Err()
|
|
}
|
|
usuario := &Usuario{}
|
|
err := row.Scan(
|
|
&id,
|
|
&usuario.Nome,
|
|
&usuario.Email,
|
|
&usuario.Ctime,
|
|
)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
usuario.SetId(id)
|
|
return usuario, nil
|
|
}
|