2020-03-04 10:29:00 +00:00
|
|
|
package users
|
|
|
|
|
|
|
|
import (
|
2020-03-05 05:38:56 +00:00
|
|
|
"errors"
|
2020-03-04 10:29:00 +00:00
|
|
|
"github.com/hunterlong/statping/database"
|
|
|
|
"github.com/hunterlong/statping/utils"
|
2020-03-06 09:33:46 +00:00
|
|
|
"github.com/prometheus/common/log"
|
2020-03-04 10:29:00 +00:00
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
2020-03-04 14:20:47 +00:00
|
|
|
func DB() database.Database {
|
|
|
|
return database.DB().Model(&User{})
|
|
|
|
}
|
|
|
|
|
2020-03-04 10:29:00 +00:00
|
|
|
func Find(id int64) (*User, error) {
|
2020-03-06 03:03:18 +00:00
|
|
|
var user User
|
2020-03-06 09:33:46 +00:00
|
|
|
db := DB().Where("id = ?", id).Find(&user)
|
2020-03-06 03:03:18 +00:00
|
|
|
return &user, db.Error()
|
2020-03-04 10:29:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func FindByUsername(username string) (*User, error) {
|
2020-03-06 09:33:46 +00:00
|
|
|
var user User
|
|
|
|
db := DB().Where("username = ?", username).Find(&user)
|
|
|
|
return &user, db.Error()
|
2020-03-04 10:29:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func All() []*User {
|
|
|
|
var users []*User
|
2020-03-04 14:20:47 +00:00
|
|
|
DB().Find(&users)
|
2020-03-04 10:29:00 +00:00
|
|
|
return users
|
|
|
|
}
|
|
|
|
|
|
|
|
func (u *User) Create() error {
|
|
|
|
u.CreatedAt = time.Now().UTC()
|
2020-03-05 05:38:56 +00:00
|
|
|
if u.Password == "" {
|
|
|
|
return errors.New("did not supply user password")
|
|
|
|
}
|
2020-03-04 10:29:00 +00:00
|
|
|
u.Password = utils.HashPassword(u.Password)
|
2020-03-06 09:33:46 +00:00
|
|
|
u.ApiKey = utils.NewSHA1Hash(16)
|
|
|
|
u.ApiSecret = utils.NewSHA1Hash(16)
|
2020-03-04 10:29:00 +00:00
|
|
|
|
2020-03-06 03:03:18 +00:00
|
|
|
db := DB().Create(u)
|
2020-03-06 09:33:46 +00:00
|
|
|
if db.Error() == nil {
|
|
|
|
log.Warnf("User #%d (%s) has been created", u.Id, u.Username)
|
|
|
|
}
|
2020-03-04 10:29:00 +00:00
|
|
|
return db.Error()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (u *User) Update() error {
|
2020-03-06 09:33:46 +00:00
|
|
|
//u.ApiKey = utils.NewSHA1Hash(5)
|
|
|
|
//u.ApiSecret = utils.NewSHA1Hash(10)
|
|
|
|
db := DB().Update(u)
|
2020-03-04 10:29:00 +00:00
|
|
|
return db.Error()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (u *User) Delete() error {
|
2020-03-06 03:03:18 +00:00
|
|
|
db := DB().Delete(u)
|
2020-03-06 09:33:46 +00:00
|
|
|
if db.Error() == nil {
|
|
|
|
log.Warnf("User #%d (%s) has been deleted")
|
|
|
|
}
|
2020-03-04 10:29:00 +00:00
|
|
|
return db.Error()
|
|
|
|
}
|