/// <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]); }
/// <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)); } }
/// <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); }
/// <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); } }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); } } }
/// <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) { }