fleet/server/datastore/inmem/password_reset.go

109 lines
2.3 KiB
Go

package inmem
import (
"fmt"
"github.com/fleetdm/fleet/server/kolide"
)
func (d *Datastore) NewPasswordResetRequest(req *kolide.PasswordResetRequest) (*kolide.PasswordResetRequest, error) {
d.mtx.Lock()
defer d.mtx.Unlock()
req.ID = d.nextID(req)
d.passwordResets[req.ID] = req
return req, nil
}
func (d *Datastore) SavePasswordResetRequest(req *kolide.PasswordResetRequest) error {
d.mtx.Lock()
defer d.mtx.Unlock()
if _, ok := d.passwordResets[req.ID]; !ok {
return notFound("PasswordResetRequest").WithID(req.ID)
}
d.passwordResets[req.ID] = req
return nil
}
func (d *Datastore) DeletePasswordResetRequest(req *kolide.PasswordResetRequest) error {
d.mtx.Lock()
defer d.mtx.Unlock()
if _, ok := d.passwordResets[req.ID]; !ok {
return notFound("PasswordResetRequest").WithID(req.ID)
}
delete(d.passwordResets, req.ID)
return nil
}
func (d *Datastore) DeletePasswordResetRequestsForUser(userID uint) error {
d.mtx.Lock()
defer d.mtx.Unlock()
for _, pr := range d.passwordResets {
if pr.UserID == userID {
delete(d.passwordResets, pr.ID)
}
}
return nil
}
func (d *Datastore) FindPassswordResetByID(id uint) (*kolide.PasswordResetRequest, error) {
d.mtx.Lock()
defer d.mtx.Unlock()
if req, ok := d.passwordResets[id]; ok {
return req, nil
}
return nil, notFound("PasswordResetRequest").WithID(id)
}
func (d *Datastore) FindPassswordResetsByUserID(userID uint) ([]*kolide.PasswordResetRequest, error) {
d.mtx.Lock()
defer d.mtx.Unlock()
resets := make([]*kolide.PasswordResetRequest, 0)
for _, pr := range d.passwordResets {
if pr.UserID == userID {
resets = append(resets, pr)
}
}
if len(resets) == 0 {
return nil, notFound("PasswordResetRequest").
WithMessage(fmt.Sprintf("for user id %d", userID))
}
return resets, nil
}
func (d *Datastore) FindPassswordResetByToken(token string) (*kolide.PasswordResetRequest, error) {
d.mtx.Lock()
defer d.mtx.Unlock()
for _, pr := range d.passwordResets {
if pr.Token == token {
return pr, nil
}
}
return nil, notFound("PasswordResetRequest")
}
func (d *Datastore) FindPassswordResetByTokenAndUserID(token string, userID uint) (*kolide.PasswordResetRequest, error) {
d.mtx.Lock()
defer d.mtx.Unlock()
for _, pr := range d.passwordResets {
if pr.Token == token && pr.UserID == userID {
return pr, nil
}
}
return nil, notFound("PasswordResetRequest")
}