mirror of
https://github.com/empayre/fleet.git
synced 2024-11-07 01:15:22 +00:00
132 lines
3.4 KiB
Go
132 lines
3.4 KiB
Go
package mysql
|
|
|
|
import (
|
|
"github.com/kolide/fleet/server/kolide"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
func (d *Datastore) NewPasswordResetRequest(req *kolide.PasswordResetRequest) (*kolide.PasswordResetRequest, error) {
|
|
sqlStatement := `
|
|
INSERT INTO password_reset_requests
|
|
( user_id, token, expires_at)
|
|
VALUES (?,?, NOW())
|
|
`
|
|
response, err := d.db.Exec(sqlStatement, req.UserID, req.Token)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "inserting password reset requests")
|
|
}
|
|
|
|
id, _ := response.LastInsertId()
|
|
req.ID = uint(id)
|
|
return req, nil
|
|
|
|
}
|
|
|
|
func (d *Datastore) SavePasswordResetRequest(req *kolide.PasswordResetRequest) error {
|
|
sqlStatement := `
|
|
UPDATE password_reset_requests SET
|
|
expires_at = ?,
|
|
user_id = ?,
|
|
token = ?
|
|
WHERE id = ?
|
|
`
|
|
result, err := d.db.Exec(sqlStatement, req.ExpiresAt, req.UserID, req.Token, req.ID)
|
|
if err != nil {
|
|
return errors.Wrap(err, "updating password reset requests")
|
|
}
|
|
rows, err := result.RowsAffected()
|
|
if err != nil {
|
|
return errors.Wrap(err, "rows affected updating password reset requests")
|
|
}
|
|
if rows == 0 {
|
|
return notFound("PasswordResetRequest").WithID(req.ID)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (d *Datastore) DeletePasswordResetRequest(req *kolide.PasswordResetRequest) error {
|
|
|
|
sqlStatement := `
|
|
DELETE FROM password_reset_requests WHERE id = ?
|
|
`
|
|
_, err := d.db.Exec(sqlStatement, req.ID)
|
|
if err != nil {
|
|
return errors.Wrap(err, "deleting from password reset request")
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (d *Datastore) DeletePasswordResetRequestsForUser(userID uint) error {
|
|
sqlStatement := `
|
|
DELETE FROM password_reset_requests WHERE user_id = ?
|
|
`
|
|
_, err := d.db.Exec(sqlStatement, userID)
|
|
if err != nil {
|
|
return errors.Wrap(err, "deleting password reset request by user")
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (d *Datastore) FindPassswordResetByID(id uint) (*kolide.PasswordResetRequest, error) {
|
|
sqlStatement := `
|
|
SELECT * FROM password_reset_requests
|
|
WHERE id = ? LIMIT 1
|
|
`
|
|
passwordResetRequest := &kolide.PasswordResetRequest{}
|
|
err := d.db.Get(&passwordResetRequest, sqlStatement, id)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "selecting password reset by id")
|
|
}
|
|
|
|
return passwordResetRequest, nil
|
|
}
|
|
|
|
func (d *Datastore) FindPassswordResetsByUserID(id uint) ([]*kolide.PasswordResetRequest, error) {
|
|
sqlStatement := `
|
|
SELECT * FROM password_reset_requests
|
|
WHERE user_id = ?
|
|
`
|
|
|
|
passwordResetRequests := []*kolide.PasswordResetRequest{}
|
|
err := d.db.Select(&passwordResetRequests, sqlStatement, id)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "finding password resets by user id")
|
|
}
|
|
|
|
return passwordResetRequests, nil
|
|
|
|
}
|
|
|
|
func (d *Datastore) FindPassswordResetByToken(token string) (*kolide.PasswordResetRequest, error) {
|
|
sqlStatement := `
|
|
SELECT * FROM password_reset_requests
|
|
WHERE token = ? LIMIT 1
|
|
`
|
|
passwordResetRequest := &kolide.PasswordResetRequest{}
|
|
err := d.db.Get(passwordResetRequest, sqlStatement, token)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "selecting password reset requests")
|
|
}
|
|
|
|
return passwordResetRequest, nil
|
|
|
|
}
|
|
|
|
func (d *Datastore) FindPassswordResetByTokenAndUserID(token string, id uint) (*kolide.PasswordResetRequest, error) {
|
|
sqlStatement := `
|
|
SELECT * FROM password_reset_requests
|
|
WHERE user_id = ? AND token = ?
|
|
LIMIT 1
|
|
`
|
|
passwordResetRequest := &kolide.PasswordResetRequest{}
|
|
err := d.db.Get(passwordResetRequest, sqlStatement, id, token)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "selecting password reset by token and user id")
|
|
}
|
|
|
|
return passwordResetRequest, nil
|
|
}
|