api: adding ListPasswords() method to the storage interface.

This commit is contained in:
rithu john
2016-11-16 14:57:27 -08:00
parent 57178fd5f3
commit 19c22807a7
7 changed files with 92 additions and 4 deletions

View File

@@ -60,6 +60,8 @@ func (s staticClientsStorage) UpdateClient(id string, updater func(old Client) (
type staticPasswordsStorage struct {
Storage
// A read-only set of passwords.
passwords []Password
passwordsByEmail map[string]Password
}
@@ -71,7 +73,7 @@ func WithStaticPasswords(s Storage, staticPasswords []Password) Storage {
p.Email = strings.ToLower(p.Email)
passwordsByEmail[p.Email] = p
}
return staticPasswordsStorage{s, passwordsByEmail}
return staticPasswordsStorage{s, staticPasswords, passwordsByEmail}
}
func (s staticPasswordsStorage) GetPassword(email string) (Password, error) {
@@ -81,6 +83,12 @@ func (s staticPasswordsStorage) GetPassword(email string) (Password, error) {
return Password{}, ErrNotFound
}
func (s staticPasswordsStorage) ListPasswords() ([]Password, error) {
passwords := make([]Password, len(s.passwords))
copy(passwords, s.passwords)
return passwords, nil
}
func (s staticPasswordsStorage) CreatePassword(p Password) error {
return errors.New("static passwords: read-only cannot create password")
}