Ejemplo n.º 1
0
        public async Task <Unit> Handle(RemoveVaultCommand request, CancellationToken cancellationToken)
        {
            if (!VaultService.ValidateVaultPassword(request.VaultId, request.MasterPassword))
            {
                throw new Exception("Podano nie poprawne hasło");
            }
            var vault = await(from v in PmContext.Vaults
                              where v.Username == UserResolverService.GetUsername() && v.Id == request.VaultId
                              select v).FirstOrDefaultAsync();

            if (vault == null)
            {
                throw new Exception();
            }
            var entries = await(from en in PmContext.Entries
                                where en.VaultId == vault.Id
                                select en
                                ).ToListAsync();

            using var trans = PmContext.Database.BeginTransaction();

            PmContext.Entries.RemoveRange(entries);
            PmContext.Vaults.Remove(vault);
            PmContext.SaveChanges();
            await trans.CommitAsync();

            return(Unit.Value);
        }
Ejemplo n.º 2
0
        public async Task <Unit> Handle(CreateVaultCommand request, CancellationToken cancellationToken)
        {
            var vault = new Vault()
            {
                MasterSalt     = Encryptor.GenerateSalt(),
                MasterPassword = "",
                Name           = request.Name,
                Username       = UserResolverService.GetUsername()
            };

            vault.MasterPassword = CryptoService.HashString(request.MasterPassword, vault.MasterSalt);
            PmContext.Add(vault);
            await PmContext.SaveChangesAsync();

            return(Unit.Value);
        }