47 lines
748 B
Go
47 lines
748 B
Go
package database
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"golang.org/x/crypto/bcrypt"
|
|
)
|
|
|
|
type Model interface {
|
|
Id() (int, error)
|
|
SetId(int)
|
|
Saved() bool
|
|
}
|
|
|
|
type identity struct {
|
|
id int
|
|
saved bool
|
|
}
|
|
|
|
var (
|
|
ErrNotSaved = fmt.Errorf("primary key id não foi salva")
|
|
)
|
|
|
|
func (p *identity) Id() (int, error) {
|
|
if !p.saved {
|
|
return 0, ErrNotSaved
|
|
}
|
|
return p.id, nil
|
|
}
|
|
|
|
func (p *identity) SetId(i int) {
|
|
p.id = i
|
|
p.saved = true
|
|
}
|
|
|
|
func (p *identity) Saved() bool {
|
|
return p.saved
|
|
}
|
|
|
|
func checkPasswordHash(password, hash string) error {
|
|
return bcrypt.CompareHashAndPassword([]byte(hash), []byte(password))
|
|
}
|
|
|
|
func HashPassword(password string) (string, error) {
|
|
bytes, err := bcrypt.GenerateFromPassword([]byte(password), 14)
|
|
return string(bytes), err
|
|
}
|