Пример #1
0
        public async Task <IActionResult> CreateStorage([FromBody] StorageRequestModel model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    model.Storage.User = User.Identity.Name;
                    model.Storage.IV   = encryptor.GenerateIV();

                    var result = storageContext.Storages
                                 .Where(s => s.Name == model.Storage.Name && s.User == User.Identity.Name);

                    if (model.Storage.Name == null)
                    {
                        return(new BadRequestObjectResult("Отсутствует имя хранилища"));
                    }

                    if (result.Count() != 0)
                    {
                        return(new BadRequestObjectResult("Хранилище с таким именем существует"));
                    }

                    if (!encryptor.CheckSizeKey(model.Key))
                    {
                        return(new BadRequestObjectResult("Размер ключа [16, 24, 32]"));
                    }

                    await storageContext.Storages.AddAsync(model.Storage);

                    HttpContext.Session.SetString("StorageIV", encryptor.ToString(model.Storage.IV));
                    HttpContext.Session.SetString("StorageKey", model.Key);

                    await storageContext.Words.AddAsync(
                        new WordModel()
                    {
                        User        = User.Identity.Name,
                        Storage     = model.Storage.Name,
                        ControlWord = encryptor.Encrypt(encryptor.ToByte("ControlWord"))
                    });

                    await storageContext.SaveChangesAsync();

                    //LoadStorages(storageDB, model.Storage.Name);
                    //storageDB.Connection.Close();
                    dataLite.Initializing(model.Storage.Name);
                    dataLite.Close();

                    logger.LogInformation("Хранилище создано");
                    return(new OkObjectResult("Хранилище создано"));
                }
                catch (Exception ex)
                {
                    logger.LogInformation("##### " + ex.StackTrace);
                    return(new BadRequestObjectResult(ex.Message));
                }
            }

            return(new BadRequestObjectResult("Модель данных не корректна"));
        }