mirror of
https://github.com/bitwarden/server.git
synced 2024-11-22 12:15:36 +01:00
share service setup
This commit is contained in:
parent
0caea4ab8b
commit
48cf44f5b2
@ -16,13 +16,16 @@ namespace Bit.Api.Controllers
|
|||||||
{
|
{
|
||||||
private readonly IShareRepository _shareRepository;
|
private readonly IShareRepository _shareRepository;
|
||||||
private readonly IUserService _userService;
|
private readonly IUserService _userService;
|
||||||
|
private readonly ICipherService _cipherService;
|
||||||
|
|
||||||
public SharesController(
|
public SharesController(
|
||||||
IShareRepository shareRepository,
|
IShareRepository shareRepository,
|
||||||
IUserService userService)
|
IUserService userService,
|
||||||
|
ICipherService cipherService)
|
||||||
{
|
{
|
||||||
_shareRepository = shareRepository;
|
_shareRepository = shareRepository;
|
||||||
_userService = userService;
|
_userService = userService;
|
||||||
|
_cipherService = cipherService;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("{id}")]
|
[HttpGet("{id}")]
|
||||||
@ -42,7 +45,7 @@ namespace Bit.Api.Controllers
|
|||||||
public async Task<ShareResponseModel> Post([FromBody]ShareRequestModel model)
|
public async Task<ShareResponseModel> Post([FromBody]ShareRequestModel model)
|
||||||
{
|
{
|
||||||
var share = model.ToShare(_userService.GetProperUserId(User).Value);
|
var share = model.ToShare(_userService.GetProperUserId(User).Value);
|
||||||
await _shareRepository.CreateAsync(share);
|
await _cipherService.ShareAsync(share, model.Email);
|
||||||
|
|
||||||
var response = new ShareResponseModel(share);
|
var response = new ShareResponseModel(share);
|
||||||
return response;
|
return response;
|
||||||
|
@ -8,8 +8,7 @@ namespace Bit.Api.Models
|
|||||||
public class ShareRequestModel
|
public class ShareRequestModel
|
||||||
{
|
{
|
||||||
[Required]
|
[Required]
|
||||||
[StringLength(36)]
|
public string Email { get; set; }
|
||||||
public string UserId { get; set; }
|
|
||||||
[Required]
|
[Required]
|
||||||
[StringLength(36)]
|
[StringLength(36)]
|
||||||
public string CipherId { get; set; }
|
public string CipherId { get; set; }
|
||||||
@ -25,7 +24,6 @@ namespace Bit.Api.Models
|
|||||||
|
|
||||||
public Share ToShare(Share existingShare)
|
public Share ToShare(Share existingShare)
|
||||||
{
|
{
|
||||||
existingShare.UserId = new Guid(UserId);
|
|
||||||
existingShare.CipherId = new Guid(CipherId);
|
existingShare.CipherId = new Guid(CipherId);
|
||||||
existingShare.Key = Key;
|
existingShare.Key = Key;
|
||||||
|
|
||||||
|
@ -8,6 +8,8 @@ namespace Bit.Core.Services
|
|||||||
{
|
{
|
||||||
Task SaveAsync(Cipher cipher);
|
Task SaveAsync(Cipher cipher);
|
||||||
Task DeleteAsync(Cipher cipher);
|
Task DeleteAsync(Cipher cipher);
|
||||||
Task ImportCiphersAsync(List<Cipher> folders, List<Cipher> ciphers, IEnumerable<KeyValuePair<int, int>> folderRelationships);
|
Task ImportCiphersAsync(List<Cipher> folders, List<Cipher> ciphers,
|
||||||
|
IEnumerable<KeyValuePair<int, int>> folderRelationships);
|
||||||
|
Task ShareAsync(Share share, string email);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,13 +10,19 @@ namespace Bit.Core.Services
|
|||||||
public class CipherService : ICipherService
|
public class CipherService : ICipherService
|
||||||
{
|
{
|
||||||
private readonly ICipherRepository _cipherRepository;
|
private readonly ICipherRepository _cipherRepository;
|
||||||
|
private readonly IShareRepository _shareRepository;
|
||||||
|
private readonly IUserRepository _userRepository;
|
||||||
private readonly IPushService _pushService;
|
private readonly IPushService _pushService;
|
||||||
|
|
||||||
public CipherService(
|
public CipherService(
|
||||||
ICipherRepository cipherRepository,
|
ICipherRepository cipherRepository,
|
||||||
|
IShareRepository shareRepository,
|
||||||
|
IUserRepository userRepository,
|
||||||
IPushService pushService)
|
IPushService pushService)
|
||||||
{
|
{
|
||||||
_cipherRepository = cipherRepository;
|
_cipherRepository = cipherRepository;
|
||||||
|
_shareRepository = shareRepository;
|
||||||
|
_userRepository = userRepository;
|
||||||
_pushService = pushService;
|
_pushService = pushService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -84,5 +90,24 @@ namespace Bit.Core.Services
|
|||||||
await _pushService.PushSyncCiphersAsync(userId.Value);
|
await _pushService.PushSyncCiphersAsync(userId.Value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task ShareAsync(Share share, string email)
|
||||||
|
{
|
||||||
|
// TODO: Make sure share does not already exist between these two users.
|
||||||
|
|
||||||
|
var user = await _userRepository.GetByEmailAsync(email);
|
||||||
|
if(user == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
share.UserId = user.Id;
|
||||||
|
|
||||||
|
// TODO: Permissions and status
|
||||||
|
share.Permissions = null;
|
||||||
|
share.Status = Enums.ShareStatusType.Accepted;
|
||||||
|
|
||||||
|
await _shareRepository.CreateAsync(share);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user