diff --git a/src/Api/Controllers/CiphersController.cs b/src/Api/Controllers/CiphersController.cs index 1c8ce75815..ec216ae6c3 100644 --- a/src/Api/Controllers/CiphersController.cs +++ b/src/Api/Controllers/CiphersController.cs @@ -90,7 +90,7 @@ namespace Bit.Api.Controllers } [HttpGet("")] - public async Task> Get([FromQuery]Core.Enums.CipherType? type = null) + public async Task> Get([FromQuery]Core.Enums.CipherType? type = null) { var userId = _userService.GetProperUserId(User).Value; @@ -104,8 +104,16 @@ namespace Bit.Api.Controllers ciphers = await _cipherRepository.GetManyByUserIdAsync(userId); } - var responses = ciphers.Select(c => new CipherResponseModel(c, _globalSettings)).ToList(); - return new ListResponseModel(responses); + Dictionary> collectionCiphersGroupDict = null; + if(_currentContext.Organizations.Any()) + { + var collectionCiphers = await _collectionCipherRepository.GetManyByUserIdAsync(userId); + collectionCiphersGroupDict = collectionCiphers.GroupBy(c => c.CipherId).ToDictionary(s => s.Key); + } + + var responses = ciphers.Select(c => new CipherDetailsResponseModel(c, _globalSettings, + collectionCiphersGroupDict)).ToList(); + return new ListResponseModel(responses); } [HttpPost("")] @@ -179,14 +187,19 @@ namespace Bit.Api.Controllers return response; } + [Obsolete] [HttpGet("details")] public async Task> GetCollections() { var userId = _userService.GetProperUserId(User).Value; var ciphers = await _cipherRepository.GetManyByUserIdHasCollectionsAsync(userId); - var collectionCiphers = await _collectionCipherRepository.GetManyByUserIdAsync(userId); - var collectionCiphersGroupDict = collectionCiphers.GroupBy(c => c.CipherId).ToDictionary(s => s.Key); + Dictionary> collectionCiphersGroupDict = null; + if(_currentContext.Organizations.Any()) + { + var collectionCiphers = await _collectionCipherRepository.GetManyByUserIdAsync(userId); + collectionCiphersGroupDict = collectionCiphers.GroupBy(c => c.CipherId).ToDictionary(s => s.Key); + } var responses = ciphers.Select(c => new CipherDetailsResponseModel(c, _globalSettings, collectionCiphersGroupDict)); return new ListResponseModel(responses); diff --git a/src/Api/Controllers/SyncController.cs b/src/Api/Controllers/SyncController.cs index 286d778c7b..0adec41a4d 100644 --- a/src/Api/Controllers/SyncController.cs +++ b/src/Api/Controllers/SyncController.cs @@ -58,9 +58,8 @@ namespace Bit.Api.Controllers var folders = await _folderRepository.GetManyByUserIdAsync(user.Id); var ciphers = await _cipherRepository.GetManyByUserIdAsync(user.Id); - IEnumerable collections = new List(); - IDictionary> collectionCiphersGroupDict = - new Dictionary>(); + IEnumerable collections = null; + IDictionary> collectionCiphersGroupDict = null; if(organizationUserDetails.Any(o => o.Enabled)) { collections = await _collectionRepository.GetManyByUserIdAsync(user.Id, false); diff --git a/src/Core/Models/Api/Response/SyncResponseModel.cs b/src/Core/Models/Api/Response/SyncResponseModel.cs index da7e2645cd..069a26a09b 100644 --- a/src/Core/Models/Api/Response/SyncResponseModel.cs +++ b/src/Core/Models/Api/Response/SyncResponseModel.cs @@ -22,7 +22,7 @@ namespace Bit.Core.Models.Api Profile = new ProfileResponseModel(user, organizationUserDetails); Folders = folders.Select(f => new FolderResponseModel(f)); Ciphers = ciphers.Select(c => new CipherDetailsResponseModel(c, globalSettings, collectionCiphersDict)); - Collections = collections.Select(c => new CollectionResponseModel(c)); + Collections = collections?.Select(c => new CollectionResponseModel(c)) ?? new List(); Domains = new DomainsResponseModel(user, false); }