From 697905cbf3b6fc1d8f22322a4f403b4abe2f0c0a Mon Sep 17 00:00:00 2001 From: Paul Martin Date: Mon, 7 Dec 2015 23:09:26 +0000 Subject: fix for #967 filestore menu for all users + Filestore listing filtered by user view permissions + Configuration help for filestore relocated to website files + Added migration example --- .../java/com/gitblit/manager/FilestoreManager.java | 31 +++++++++++++++++++--- .../java/com/gitblit/manager/GitblitManager.java | 4 +-- .../com/gitblit/manager/IFilestoreManager.java | 2 +- 3 files changed, 31 insertions(+), 6 deletions(-) (limited to 'src/main/java/com/gitblit/manager') diff --git a/src/main/java/com/gitblit/manager/FilestoreManager.java b/src/main/java/com/gitblit/manager/FilestoreManager.java index fe65e216..11108557 100644 --- a/src/main/java/com/gitblit/manager/FilestoreManager.java +++ b/src/main/java/com/gitblit/manager/FilestoreManager.java @@ -77,6 +77,8 @@ public class FilestoreManager implements IFilestoreManager { private final Logger logger = LoggerFactory.getLogger(getClass()); private final IRuntimeManager runtimeManager; + + private final IRepositoryManager repositoryManager; private final IStoredSettings settings; @@ -93,8 +95,10 @@ public class FilestoreManager implements IFilestoreManager { @Inject FilestoreManager( - IRuntimeManager runtimeManager) { + IRuntimeManager runtimeManager, + IRepositoryManager repositoryManager) { this.runtimeManager = runtimeManager; + this.repositoryManager = repositoryManager; this.settings = runtimeManager.getSettings(); } @@ -324,8 +328,29 @@ public class FilestoreManager implements IFilestoreManager { } @Override - public List getAllObjects() { - return new ArrayList(fileCache.values()); + public List getAllObjects(UserModel user) { + + final List viewableRepositories = repositoryManager.getRepositoryModels(user); + List viewableRepositoryNames = new ArrayList(viewableRepositories.size()); + + for (RepositoryModel repository : viewableRepositories) { + viewableRepositoryNames.add(repository.name); + } + + if (viewableRepositoryNames.size() == 0) { + return null; + } + + final Collection allFiles = fileCache.values(); + List userViewableFiles = new ArrayList(allFiles.size()); + + for (FilestoreModel file : allFiles) { + if (file.isInRepositoryList(viewableRepositoryNames)) { + userViewableFiles.add(file); + } + } + + return userViewableFiles; } @Override diff --git a/src/main/java/com/gitblit/manager/GitblitManager.java b/src/main/java/com/gitblit/manager/GitblitManager.java index 4a385fc1..85d5c19f 100644 --- a/src/main/java/com/gitblit/manager/GitblitManager.java +++ b/src/main/java/com/gitblit/manager/GitblitManager.java @@ -1274,8 +1274,8 @@ public class GitblitManager implements IGitblit { } @Override - public List getAllObjects() { - return filestoreManager.getAllObjects(); + public List getAllObjects(UserModel user) { + return filestoreManager.getAllObjects(user); } @Override diff --git a/src/main/java/com/gitblit/manager/IFilestoreManager.java b/src/main/java/com/gitblit/manager/IFilestoreManager.java index 0720650c..454331a3 100644 --- a/src/main/java/com/gitblit/manager/IFilestoreManager.java +++ b/src/main/java/com/gitblit/manager/IFilestoreManager.java @@ -37,7 +37,7 @@ public interface IFilestoreManager extends IManager { FilestoreModel.Status downloadBlob(String oid, UserModel user, RepositoryModel repo, OutputStream streamOut ); - List getAllObjects(); + List getAllObjects(UserModel user); File getStorageFolder(); -- cgit v1.2.3