コード例 #1
0
 /// <summary>
 /// Recupera a lista de caminhos com o acesso informado.
 /// </summary>
 /// <param name="access"></param>
 /// <returns></returns>
 public string[] GetPathList(SystemPermissionAccess access)
 {
     this.VerifyAccess(access);
     this.ExclusiveAccess(access);
     if (this.AccessIsSet(access, SystemPermissionAccess.Read))
     {
         if (this._read == null)
         {
             return(null);
         }
         return(this._read.ToStringArray());
     }
     if (this.AccessIsSet(access, SystemPermissionAccess.Write))
     {
         if (this._write == null)
         {
             return(null);
         }
         return(this._write.ToStringArray());
     }
     if (this.AccessIsSet(access, SystemPermissionAccess.Execute))
     {
         if (this._execute == null)
         {
             return(null);
         }
         return(this._execute.ToStringArray());
     }
     return(new string[0]);
 }
コード例 #2
0
 /// <summary>
 /// Verifica a permissão de acesso.
 /// </summary>
 /// <param name="access"></param>
 private void VerifyAccess(SystemPermissionAccess access)
 {
     if ((access & ~SystemPermissionAccess.AllAccess) != SystemPermissionAccess.NoAccess)
     {
         throw new ArgumentException(string.Format(System.Globalization.CultureInfo.CurrentCulture, Properties.Resources.Arg_EnumIllegalVal, access));
     }
 }
コード例 #3
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="access">Tipo de acesso.</param>
 /// <param name="control">Ações de controle de acesso.</param>
 /// <param name="path">Caminho do sistema onde a permissão será aplicada.</param>
 public SystemPermission(SystemPermissionAccess access, AccessControlActions control, string path)
 {
     this.VerifyAccess(access);
     string[] pathListOrig = new string[] {
         path
     };
     this.AddPathList(access, control, pathListOrig, false, true, false);
 }
コード例 #4
0
 /// <summary>
 /// Verifica um acesso exclusivo.
 /// </summary>
 /// <param name="access"></param>
 private void ExclusiveAccess(SystemPermissionAccess access)
 {
     if (access == SystemPermissionAccess.NoAccess)
     {
         throw new ArgumentException(Properties.Resources.Arg_EnumNotSingleFlag);
     }
     if ((access & (access - 1)) != SystemPermissionAccess.NoAccess)
     {
         throw new ArgumentException(Properties.Resources.Arg_EnumNotSingleFlag);
     }
 }
コード例 #5
0
 /// <summary>
 /// Adiciona um caminho e o acesso para a permissão.
 /// </summary>
 /// <param name="access"></param>
 /// <param name="path"></param>
 public void AddPathList(SystemPermissionAccess access, string path)
 {
     string[] strArray;
     if (path == null)
     {
         strArray = new string[0];
     }
     else
     {
         strArray = new string[] {
             path
         }
     };
     AddPathList(access, strArray, false, true, false);
 }
コード例 #6
0
 /// <summary>
 /// Adiciona uma lista de caminhos e o acesso para a permissão.
 /// </summary>
 /// <param name="access"></param>
 /// <param name="pathList"></param>
 public void AddPathList(SystemPermissionAccess access, string[] pathList)
 {
     AddPathList(access, pathList, true, true, true);
 }
コード例 #7
0
 /// <summary>
 /// Verifica a permissão de acesso.
 /// </summary>
 /// <param name="access"></param>
 /// <param name="question"></param>
 /// <returns></returns>
 private bool AccessIsSet(SystemPermissionAccess access, SystemPermissionAccess question)
 {
     return((access & question) != SystemPermissionAccess.NoAccess);
 }
コード例 #8
0
 /// <summary>
 /// Adiciona uma lista de caminhos e acesso para a permissão.
 /// </summary>
 /// <param name="access"></param>
 /// <param name="pathListOrig"></param>
 /// <param name="checkForDuplicates"></param>
 /// <param name="needFullPath"></param>
 /// <param name="copyPathList"></param>
 internal void AddPathList(SystemPermissionAccess access, string[] pathListOrig, bool checkForDuplicates, bool needFullPath, bool copyPathList)
 {
     this.AddPathList(access, AccessControlActions.None, pathListOrig, checkForDuplicates, needFullPath, copyPathList);
 }
コード例 #9
0
 /// <summary>
 /// Adiciona uma lista de caminhos e acesso para a permissão.
 /// </summary>
 /// <param name="access"></param>
 /// <param name="control"></param>
 /// <param name="pathListOrig"></param>
 /// <param name="checkForDuplicates"></param>
 /// <param name="needFullPath"></param>
 /// <param name="copyPathList"></param>
 internal void AddPathList(SystemPermissionAccess access, AccessControlActions control, string[] pathListOrig, bool checkForDuplicates, bool needFullPath, bool copyPathList)
 {
     this.VerifyAccess(access);
     if (pathListOrig == null)
     {
         throw new ArgumentNullException("pathList");
     }
     if (pathListOrig.Length == 0)
     {
         throw new ArgumentException(Properties.Resources.Argument_EmptyPath);
     }
     if (!_unrestricted)
     {
         string[] destinationArray = pathListOrig;
         if (copyPathList)
         {
             destinationArray = new string[pathListOrig.Length];
             Array.Copy(pathListOrig, destinationArray, pathListOrig.Length);
         }
         HasIllegalCharacters(destinationArray);
         var values = StringExpressionSet.CreateListFromExpressions(destinationArray, needFullPath);
         if ((access & SystemPermissionAccess.Read) != SystemPermissionAccess.NoAccess)
         {
             if (_read == null)
             {
                 this._read = new SystemAccess();
             }
             this._read.AddExpressions(values, checkForDuplicates);
         }
         if ((access & SystemPermissionAccess.Write) != SystemPermissionAccess.NoAccess)
         {
             if (this._write == null)
             {
                 this._write = new SystemAccess();
             }
             this._write.AddExpressions(values, checkForDuplicates);
         }
         if ((access & SystemPermissionAccess.Execute) != SystemPermissionAccess.NoAccess)
         {
             if (this._execute == null)
             {
                 this._execute = new SystemAccess();
             }
             this._execute.AddExpressions(values, checkForDuplicates);
         }
         if ((control & AccessControlActions.View) != AccessControlActions.None)
         {
             if (this._viewAcl == null)
             {
                 this._viewAcl = new SystemAccess();
             }
             this._viewAcl.AddExpressions(values, checkForDuplicates);
         }
         if ((control & AccessControlActions.Change) != AccessControlActions.None)
         {
             if (this._changeAcl == null)
             {
                 this._changeAcl = new SystemAccess();
             }
             this._changeAcl.AddExpressions(values, checkForDuplicates);
         }
     }
 }
コード例 #10
0
 /// <summary>
 /// Cria a permissão com o caminho informado.
 /// </summary>
 /// <param name="access">Tipo de acesso.</param>
 /// <param name="path">Caminho do sistema onde a permissão será aplicada.</param>
 public SystemPermission(SystemPermissionAccess access, string path) : this(access, AccessControlActions.None, path)
 {
 }