Authenticate Subsonic API calls using the DB
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user