/// <summary> /// salvataggio del documento nella directory del definitivo /// </summary> /// <param name="LocalFilePath"></param> /// <param name="Storage"></param> /// <param name="StorageArea"></param> /// <param name="Document"></param> /// <param name="attributeValue"></param> /// <returns></returns> /// <remarks>piuttosto di trovarsi in situazioni, che non dovrebbero succedere, di documenti /// nel transito aventi lo stesso nome di documenti nel definitivo e l'impossibilità di sovrascriverli, /// viene permesso la sovrascrittura /// </remarks> protected override long SaveDocument(string LocalFilePath, DocumentStorage Storage, DocumentStorageArea StorageArea, Document Document, System.ComponentModel.BindingList <DocumentAttributeValue> attributeValue) { string saveFileName = Path.Combine(GetStorageDir(Document.Storage, Document.StorageArea), GetFileName(Document)); File.Copy(LocalFilePath, saveFileName, true); FileInfo fInfo = new FileInfo(saveFileName); FileSecurity fSec = null; if (Document.Permissions != null) { fSec = fInfo.GetAccessControl(); AuthorizationRuleCollection fileRoles = fSec.GetAccessRules(true, true, typeof(NTAccount)); foreach (AuthorizationRule item in fileRoles) { fSec.RemoveAuditRuleAll(new FileSystemAuditRule(item.IdentityReference.ToString(), FileSystemRights.FullControl, AuditFlags.Success)); } // foreach (var item in Document.Permissions) { fSec.AddAccessRule(new FileSystemAccessRule(item.Name, FileSystemRights.Read, AccessControlType.Allow)); } fInfo.SetAccessControl(fSec); } //Write attributes on file system WriteAttributes(Document); if (!fInfo.Exists) { throw new Exception(); } return(fInfo.Length); }
public void RemoveAuditRuleAll_Succeeds() { var auditRuleAppend = new FileSystemAuditRule(Helpers.s_LocalSystemNTAccount, FileSystemRights.AppendData, AuditFlags.Success); var auditRuleWrite = new FileSystemAuditRule(Helpers.s_LocalSystemNTAccount, FileSystemRights.Write, AuditFlags.Success); var auditRuleNetworkService = new FileSystemAuditRule(Helpers.s_NetworkServiceNTAccount, FileSystemRights.Read, AuditFlags.Failure); var fileSecurity = new FileSecurity(); fileSecurity.AddAuditRule(auditRuleAppend); fileSecurity.AddAuditRule(auditRuleNetworkService); fileSecurity.RemoveAuditRuleAll(auditRuleWrite); AuthorizationRuleCollection rules = fileSecurity.GetAuditRules(true, true, typeof(System.Security.Principal.NTAccount)); Assert.Equal(1, rules.Count); var existingAuditRule = (FileSystemAuditRule)rules[0]; Assert.Equal(Helpers.s_NetworkServiceNTAccount, existingAuditRule.IdentityReference); Assert.Equal(FileSystemRights.Read, existingAuditRule.FileSystemRights); Assert.Equal(AuditFlags.Failure, existingAuditRule.AuditFlags); }