fixed auth
This commit is contained in:
parent
a074f264df
commit
5d359cbd5e
3 changed files with 54 additions and 7 deletions
30
auth/auth.go
30
auth/auth.go
|
|
@ -54,3 +54,33 @@ func (a *Authenticator) Middleware(in http.Handler) http.Handler {
|
|||
})
|
||||
return handler
|
||||
}
|
||||
|
||||
// func (s *Store) AddUser(login, password string) error {
|
||||
// _, exists := s.GetUser(login)
|
||||
// if exists {
|
||||
// return errors.New("the user already exists")
|
||||
// }
|
||||
// query := "insert into user (login, password, salt) values(?, ?, ?)"
|
||||
// salt := crypto.GenerateKey()
|
||||
// hash := crypto.PasswordHash(password, salt)
|
||||
// _, err := s.db.Exec(query, login, hash, salt)
|
||||
// if err == nil {
|
||||
// s.users[login] = models.User{Password: hash, Salt: salt}
|
||||
// }
|
||||
// return err
|
||||
// }
|
||||
func (a *Authenticator) AddUser(login, password string) error {
|
||||
var user models.User
|
||||
|
||||
result := a.db.First(&user, "login = ?", login)
|
||||
if result.Error != gorm.ErrRecordNotFound {
|
||||
return errors.New("user already exists")
|
||||
}
|
||||
|
||||
salt := crypto.GenerateKey()
|
||||
hash := crypto.PasswordHash(password, salt)
|
||||
|
||||
result = a.db.Save(&models.User{Login: login, Password: hash, Salt: salt})
|
||||
|
||||
return result.Error
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ func (a *Authenticator) getSession(r *http.Request) (models.Token, error) {
|
|||
return models.Token{}, err
|
||||
}
|
||||
var session models.Token
|
||||
result := a.db.First(&session, c.Value)
|
||||
result := a.db.First(&session, "token = ?", c.Value)
|
||||
if result.Error != nil {
|
||||
return models.Token{}, errors.New("session not found")
|
||||
}
|
||||
|
|
@ -58,9 +58,11 @@ func (a *Authenticator) logout(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
func (a *Authenticator) newSession(user string) http.Cookie {
|
||||
key := crypto.GenerateKey()
|
||||
var session models.Token
|
||||
session.User = user
|
||||
session.Expiration = time.Now().Add(time.Hour * 24)
|
||||
session := models.Token{
|
||||
User: user,
|
||||
Expiration: time.Now().Add(time.Hour * 24),
|
||||
Token: key,
|
||||
}
|
||||
a.db.Create(&session)
|
||||
|
||||
cookie := http.Cookie{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue