1
0
mirror of https://github.com/bitwarden/server.git synced 2024-11-26 12:55:17 +01:00

backwards compat for folders in cipher listing

This commit is contained in:
Kyle Spearrin 2017-04-19 16:47:12 -04:00
parent d87441c9fe
commit 54f58ba14d
4 changed files with 49 additions and 3 deletions

View File

@ -16,6 +16,7 @@ namespace Bit.Api.Controllers
public class CiphersController : Controller public class CiphersController : Controller
{ {
private readonly ICipherRepository _cipherRepository; private readonly ICipherRepository _cipherRepository;
private readonly IFolderRepository _folderRepository;
private readonly ISubvaultCipherRepository _subvaultCipherRepository; private readonly ISubvaultCipherRepository _subvaultCipherRepository;
private readonly ICipherService _cipherService; private readonly ICipherService _cipherService;
private readonly IUserService _userService; private readonly IUserService _userService;
@ -23,12 +24,14 @@ namespace Bit.Api.Controllers
public CiphersController( public CiphersController(
ICipherRepository cipherRepository, ICipherRepository cipherRepository,
IFolderRepository folderRepository,
ISubvaultCipherRepository subvaultCipherRepository, ISubvaultCipherRepository subvaultCipherRepository,
ICipherService cipherService, ICipherService cipherService,
IUserService userService, IUserService userService,
CurrentContext currentContext) CurrentContext currentContext)
{ {
_cipherRepository = cipherRepository; _cipherRepository = cipherRepository;
_folderRepository = folderRepository;
_subvaultCipherRepository = subvaultCipherRepository; _subvaultCipherRepository = subvaultCipherRepository;
_cipherService = cipherService; _cipherService = cipherService;
_userService = userService; _userService = userService;
@ -64,11 +67,19 @@ namespace Bit.Api.Controllers
} }
[HttpGet("")] [HttpGet("")]
public async Task<ListResponseModel<CipherResponseModel>> Get() public async Task<ListResponseModel<CipherResponseModel>> Get(bool includeFolders = true)
{ {
var userId = _userService.GetProperUserId(User).Value; var userId = _userService.GetProperUserId(User).Value;
var ciphers = await _cipherRepository.GetManyByUserIdAsync(userId); var ciphers = await _cipherRepository.GetManyByUserIdAsync(userId);
var responses = ciphers.Select(c => new CipherResponseModel(c)); var responses = ciphers.Select(c => new CipherResponseModel(c)).ToList();
// Folders are included for backwards compat. Can be removed in a future release.
if(includeFolders)
{
var folders = await _folderRepository.GetManyByUserIdAsync(userId);
responses.AddRange(folders.Select(f => new CipherResponseModel(f)));
}
return new ListResponseModel<CipherResponseModel>(responses); return new ListResponseModel<CipherResponseModel>(responses);
} }

View File

@ -2,7 +2,8 @@
{ {
public enum CipherType : byte public enum CipherType : byte
{ {
//Folder = 0, // Folder is deprecated
Folder = 0,
Login = 1 Login = 1
} }
} }

View File

@ -0,0 +1,14 @@
using Bit.Core.Models.Table;
namespace Bit.Core.Models.Api
{
public class FolderDataModel
{
public FolderDataModel(Folder folder)
{
Name = folder.Name;
}
public string Name { get; set; }
}
}

View File

@ -31,6 +31,21 @@ namespace Bit.Core.Models.Api
} }
} }
[Obsolete]
public CipherMiniResponseModel(Folder folder, string obj = "cipherMini")
: base(obj)
{
if(folder == null)
{
throw new ArgumentNullException(nameof(folder));
}
Id = folder.Id.ToString();
Type = Enums.CipherType.Folder;
RevisionDate = folder.RevisionDate;
Data = new FolderDataModel(folder);
}
public string Id { get; set; } public string Id { get; set; }
public string OrganizationId { get; set; } public string OrganizationId { get; set; }
public Enums.CipherType Type { get; set; } public Enums.CipherType Type { get; set; }
@ -47,6 +62,11 @@ namespace Bit.Core.Models.Api
Favorite = cipher.Favorite; Favorite = cipher.Favorite;
} }
[Obsolete]
public CipherResponseModel(Folder folder, string obj = "cipher")
: base(folder, obj)
{ }
public string FolderId { get; set; } public string FolderId { get; set; }
public bool Favorite { get; set; } public bool Favorite { get; set; }
} }