/// <summary> /// /// </summary> /// <param name="validationType"></param> /// <param name="missingPermissions"></param> private void LogPermissionErrorMessage(PermissionValidationType validationType, IEnumerable <string> missingPermissions) { var perms = string.Join(", ", missingPermissions); switch (validationType) { case PermissionValidationType.RequireOneOf: this.Logger.LogInformation(Resource.ERROR_PERMISSION_MISSING_SINGLE_LOGGER, this.SystemUser.DisplayName, perms); break; case PermissionValidationType.RequireAll: this.Logger.LogInformation(Resource.ERROR_PERMISSION_MISSING_MULTI_LOGGER, this.SystemUser.DisplayName, perms); break; } }
/// <summary> /// Método construtor /// </summary> /// <param name="method"></param> /// <param name="validationType"></param> /// <param name="requiredPermissions"></param> public PermissionsAuthorizationRequirement(Method method, PermissionValidationType validationType = PermissionValidationType.RequireOneOf, params string[] requiredPermissions) { this.Permissions = new HashSet <string>(); if (requiredPermissions == null || !requiredPermissions.Any()) { this.Permissions.Add(IdentityConstants.PERMISSION_DEFAULT_TAG); } else { this.Permissions = requiredPermissions; } if (method == Method.None && this.Permissions.Contains(IdentityConstants.PERMISSION_DEFAULT_TAG) && (validationType == PermissionValidationType.RequireAll || validationType == PermissionValidationType.RequireOneOf)) { throw new InvalidEnumArgumentException(Resource.ERROR_PERMISSION_DEFAULT_METHOD_REQUIRED); } this.Method = method; this.ValidationType = validationType; }
/// <summary> /// Método construtor. /// </summary> /// <param name="method">Método de execução do endpoint</param> /// <param name="validationType">Tipo de validação de permissão. Veja <see cref="PermissionValidationType"/></param> /// <param name="permissions">Permissões requeridas para autorização</param> public PermissionAttribute(Method method, PermissionValidationType validationType, params string[] permissions) : base(typeof(PermissionAttributeImpl)) { var permission = new PermissionsAuthorizationRequirement(method, validationType, permissions); Arguments = new[] { permission }; }
/// <summary> /// Método construtor. /// </summary> /// <param name="validationType">Tipo de validação de permissão. Veja <see cref="PermissionValidationType"/></param> /// <param name="permissions">Permissões requeridas para autorização</param> public PermissionAttribute(PermissionValidationType validationType, params string[] permissions) : this(Method.None, validationType, permissions) { }