Authenticate Subsonic API calls using the DB

This commit is contained in:
Deluan
2020-01-20 13:35:59 -05:00
parent 50c7d3800a
commit 99c28731d4
13 changed files with 210 additions and 93 deletions
+17 -1
View File
@@ -7,6 +7,7 @@ type MockDataStore struct {
MockedAlbum model.AlbumRepository
MockedArtist model.ArtistRepository
MockedMediaFile model.MediaFileRepository
MockedUser model.UserRepository
}
func (db *MockDataStore) Album() model.AlbumRepository {
@@ -50,7 +51,10 @@ func (db *MockDataStore) Property() model.PropertyRepository {
}
func (db *MockDataStore) User() model.UserRepository {
return struct{ model.UserRepository }{}
if db.MockedUser == nil {
db.MockedUser = &mockedUserRepo{}
}
return db.MockedUser
}
func (db *MockDataStore) WithTx(block func(db model.DataStore) error) error {
@@ -60,3 +64,15 @@ func (db *MockDataStore) WithTx(block func(db model.DataStore) error) error {
func (db *MockDataStore) Resource(m interface{}) model.ResourceRepository {
return struct{ model.ResourceRepository }{}
}
type mockedUserRepo struct {
model.UserRepository
}
func (u *mockedUserRepo) FindByUsername(username string) (*model.User, error) {
return &model.User{UserName: "admin", Password: "wordpass"}, nil
}
func (u *mockedUserRepo) UpdateLastAccessAt(id string) error {
return nil
}
+7
View File
@@ -81,5 +81,12 @@ func (r *userRepository) UpdateLastLoginAt(id string) error {
return err
}
func (r *userRepository) UpdateLastAccessAt(id string) error {
now := time.Now()
tu := user{ID: id, LastAccessAt: &now}
_, err := r.ormer.Update(&tu, "last_access_at")
return err
}
var _ = model.User(user{})
var _ model.UserRepository = (*userRepository)(nil)