Пример #1
0
        public async Task <string> CreateFromBase64(
            FilesTypes fileType,
            Guid entityId,
            Guid creatorId,
            SrbacRoles creatorRole,
            string contentBase64 = null,
            string fileName      = null
            )
        {
            try
            {
                if (string.IsNullOrWhiteSpace(contentBase64))
                {
                    return(null);
                }

                if (string.IsNullOrWhiteSpace(fileName))
                {
                    fileName = Guid.NewGuid().ToString();
                }

                var name      = Path.GetFileNameWithoutExtension(fileName);
                var extension = GetFileExtension(contentBase64);

                using var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled);
                var fileModel = await _fileRepository.Create(new FileModel
                {
                    EntityType = fileType,
                    Extension  = extension,
                    Name       = name,
                    EntityId   = entityId, CreatorId = creatorId
                });

                var path = Path.Combine(
                    _fileStorageConfiguration.AbsolutePath,
                    fileType.ToString(),
                    entityId.ToString()
                    );
                Directory.CreateDirectory(path);

                var filePath = Path.Combine(path, $"{fileModel.Id.ToString()}.{extension}");
                await File.WriteAllBytesAsync(filePath, Convert.FromBase64String(contentBase64));

                await _auditService.Success(
                    AuditOperationTypes.CreateFile,
                    "",
                    fileModel,
                    fileModel.Id,
                    creatorId,
                    creatorRole
                    );

                scope.Complete();
                return(await GetFileUrl(entityId, fileType));
            }
            catch (Exception e)
            {
                await _auditService.Error(
                    AuditOperationTypes.CreateFile,
                    e.Message,
                    new AuditErrorObjectContainer
                {
                    Model = new FileModel
                    {
                        EntityType = fileType,
                        Name       = fileName,
                        EntityId   = entityId
                    },
                    Error = e
                },
                    null,
                    creatorId,
                    creatorRole
                    );

                throw;
            }
        }
Пример #2
0
 public IEnumerable <string> GetFileUrls(Guid entityId, FilesTypes filesType)
 {
     throw new NotImplementedException();
 }
Пример #3
0
        public IFileReader UseRoleBaseSystem(FilesTypes fileType, FileData fileData)
        {
            while (true)
            {
                Console.WriteLine("Do you want to use role based security system?");
                Console.WriteLine("  1 - Yes");
                Console.WriteLine("  2 - No");
                string input = Console.ReadLine();

                switch (input)
                {
                case "1":
                    if (fileType == FilesTypes.Text)
                    {
                        if (fileData == FileData.Decrypted)
                        {
                            return(Factory(ReaderType.TextFileRoleBased));
                        }
                        else
                        {
                            return(Factory(ReaderType.TextFileEncryptRoleBased));
                        }
                    }
                    else if (fileType == FilesTypes.XML)
                    {
                        if (fileData == FileData.Decrypted)
                        {
                            return(Factory(ReaderType.XmlFileRoleBased));
                        }
                        else
                        {
                            return(Factory(ReaderType.XmlFileEncryptRoleBased));
                        }
                    }
                    else
                    {
                        if (fileData == FileData.Decrypted)
                        {
                            return(Factory(ReaderType.JsonFileRoleBased));
                        }
                        else
                        {
                            return(Factory(ReaderType.JsonFileEncryptRoleBased));
                        }
                    }

                case "2":
                    if (fileType == FilesTypes.Text)
                    {
                        if (fileData == FileData.Decrypted)
                        {
                            return(Factory(ReaderType.TextFile));
                        }
                        else
                        {
                            return(Factory(ReaderType.TextFileEncrypt));
                        }
                    }
                    else if (fileType == FilesTypes.XML)
                    {
                        if (fileData == FileData.Decrypted)
                        {
                            return(Factory(ReaderType.XmlFile));
                        }
                        else
                        {
                            return(Factory(ReaderType.XmlFileEncrypt));
                        }
                    }
                    else
                    {
                        if (fileData == FileData.Decrypted)
                        {
                            return(Factory(ReaderType.JsonFile));
                        }
                        else
                        {
                            return(Factory(ReaderType.JsonFileEncrypt));
                        }
                    }

                default:
                    Console.WriteLine("Invalid option!");
                    break;
                }
            }
        }
Пример #4
0
 public async Task <string> GetFileUrl(Guid entityId, FilesTypes filesType)
 {
     throw new NotImplementedException();
 }
Пример #5
0
        public IFileReader SubMenuEncryptSystem(FilesTypes fileType)
        {
            IFileReader reader;

            while (true)
            {
                Console.WriteLine("Do you want to use encryption system?");
                Console.WriteLine("  1 - Yes");
                Console.WriteLine("  2 - No");
                string inputEncryptSystem = Console.ReadLine();

                switch (inputEncryptSystem)
                {
                case "1":
                    reader = UseRoleBaseSystem(fileType, FileData.Encrypted);

                    if (reader != null)
                    {
                        return(reader);
                    }

                    if (fileType == FilesTypes.Text)
                    {
                        return(GenerateReaderTextFileEncrypt());
                    }
                    else if (fileType == FilesTypes.XML)
                    {
                        return(GenerateReaderXmlFileEncrypt());
                    }
                    else
                    {
                        return(GenerateReaderJsonFileEncrypt());
                    }

                case "2":
                    reader = UseRoleBaseSystem(fileType, FileData.Decrypted);

                    if (reader != null)
                    {
                        return(reader);
                    }

                    if (fileType == FilesTypes.Text)
                    {
                        return(GenerateReaderTextFile());
                    }
                    else if (fileType == FilesTypes.XML)
                    {
                        return(GenerateReaderXmlFile());
                    }
                    else
                    {
                        return(GenerateReaderJsonFile());
                    }

                default:
                    Console.WriteLine("Invalid option!");
                    break;
                }
            }
        }