refactor: remove unused library access functions and related tests

Signed-off-by: Deluan <deluan@navidrome.org>
This commit is contained in:
Deluan 2025-07-16 18:49:25 -04:00
commit 72006fab4c
3 changed files with 0 additions and 153 deletions

View file

@ -145,68 +145,3 @@ func getEncKey() []byte {
sum := sha256.Sum256([]byte(key))
return sum[:]
}
// Library-based permission helpers
// HasLibraryAccess checks if a user has access to a specific library
func HasLibraryAccess(ctx context.Context, ds model.DataStore, userID string, libraryID int) bool {
user, ok := request.UserFrom(ctx)
if !ok {
return false
}
// Admin users have access to all libraries
if user.IsAdmin {
return true
}
// Check if user has explicit access to this library
libraries, err := ds.User(ctx).GetUserLibraries(userID)
if err != nil {
log.Error(ctx, "Error checking library access", "userID", userID, "libraryID", libraryID, err)
return false
}
for _, lib := range libraries {
if lib.ID == libraryID {
return true
}
}
return false
}
// GetUserLibraryIDs returns a list of library IDs the user has access to
func GetUserLibraryIDs(ctx context.Context, ds model.DataStore, userID string) []int {
user, ok := request.UserFrom(ctx)
if !ok {
return []int{}
}
// Admin users have access to all libraries
if user.IsAdmin {
libraries, err := ds.Library(ctx).GetAll()
if err != nil {
log.Error(ctx, "Error getting all libraries for admin", "userID", userID, err)
return []int{}
}
var ids []int
for _, lib := range libraries {
ids = append(ids, lib.ID)
}
return ids
}
// Get user's accessible libraries
libraries, err := ds.User(ctx).GetUserLibraries(userID)
if err != nil {
log.Error(ctx, "Error getting user libraries", "userID", userID, err)
return []int{}
}
var ids []int
for _, lib := range libraries {
ids = append(ids, lib.ID)
}
return ids
}

View file

@ -39,25 +39,6 @@ func (u User) HasLibraryAccess(libraryID int) bool {
return false
}
// AccessibleLibraryIDs returns a slice of library IDs that the user has access to
func (u User) AccessibleLibraryIDs() []int {
return u.Libraries.IDs()
}
func (u User) FilteredLibraries(libraryIds []int) Libraries {
libMap := make(map[int]Library, len(u.Libraries))
for _, lib := range u.Libraries {
libMap[lib.ID] = lib
}
var filtered Libraries
for _, id := range libraryIds {
if lib, ok := libMap[id]; ok {
filtered = append(filtered, lib)
}
}
return filtered
}
type Users []User
type UserRepository interface {

View file

@ -80,73 +80,4 @@ var _ = Describe("User", func() {
})
})
})
Describe("FilteredLibraries", func() {
It("returns only libraries that match the filter", func() {
filtered := user.FilteredLibraries([]int{1, 3})
expected := model.Libraries{
{ID: 1, Name: "Rock Library", Path: "/music/rock"},
{ID: 3, Name: "Classical Library", Path: "/music/classical"},
}
Expect(filtered).To(Equal(expected))
})
It("returns single library when filter contains one matching ID", func() {
filtered := user.FilteredLibraries([]int{2})
expected := model.Libraries{
{ID: 2, Name: "Jazz Library", Path: "/music/jazz"},
}
Expect(filtered).To(Equal(expected))
})
It("returns nil slice when filter has no matching IDs", func() {
filtered := user.FilteredLibraries([]int{99, 100})
Expect(filtered).To(BeNil())
})
It("returns nil slice when filter is empty", func() {
filtered := user.FilteredLibraries([]int{})
Expect(filtered).To(BeNil())
})
It("returns nil slice when filter is nil", func() {
filtered := user.FilteredLibraries(nil)
Expect(filtered).To(BeNil())
})
It("returns nil slice when user has no libraries", func() {
user.Libraries = nil
filtered := user.FilteredLibraries([]int{1, 2, 3})
Expect(filtered).To(BeNil())
})
It("returns nil slice when user has empty libraries", func() {
user.Libraries = model.Libraries{}
filtered := user.FilteredLibraries([]int{1, 2, 3})
Expect(filtered).To(BeNil())
})
It("handles partial matches correctly", func() {
filtered := user.FilteredLibraries([]int{1, 99, 2, 100})
expected := model.Libraries{
{ID: 1, Name: "Rock Library", Path: "/music/rock"},
{ID: 2, Name: "Jazz Library", Path: "/music/jazz"},
}
Expect(filtered).To(Equal(expected))
})
})
Describe("AccessibleLibraryIDs", func() {
It("returns all library IDs when user has libraries", func() {
ids := user.AccessibleLibraryIDs()
expected := []int{1, 2, 3}
Expect(ids).To(Equal(expected))
})
It("returns nil when user has no libraries", func() {
user.Libraries = nil
ids := user.AccessibleLibraryIDs()
Expect(ids).To(BeEmpty())
})
})
})