| File: Authorization\AuthorizationOptionsTypes.cs | Web Access |
| Project: src\aspnetcore\src\Framework\AspNetCoreAnalyzers\src\Analyzers\Microsoft.AspNetCore.App.Analyzers.csproj (Microsoft.AspNetCore.App.Analyzers) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Linq; using Microsoft.AspNetCore.App.Analyzers.Infrastructure; using Microsoft.CodeAnalysis; namespace Microsoft.AspNetCore.Analyzers.Authorization; using WellKnownType = WellKnownTypeData.WellKnownType; internal sealed class AuthorizationOptionsTypes { public AuthorizationOptionsTypes(WellKnownTypes wellKnownTypes) { AuthorizationOptions = wellKnownTypes.Get(WellKnownType.Microsoft_AspNetCore_Authorization_AuthorizationOptions); if (AuthorizationOptions is not null) { var authorizationOptionsMembers = AuthorizationOptions.GetMembers(); var authorizationOptionsProperties = authorizationOptionsMembers.OfType<IPropertySymbol>(); DefaultPolicy = authorizationOptionsProperties .FirstOrDefault(member => member.Name == "DefaultPolicy"); FallbackPolicy = authorizationOptionsProperties .FirstOrDefault(member => member.Name == "FallbackPolicy"); InvokeHandlersAfterFailure = authorizationOptionsProperties .FirstOrDefault(member => member.Name == "InvokeHandlersAfterFailure"); GetPolicy = authorizationOptionsMembers.OfType<IMethodSymbol>() .FirstOrDefault(member => member.Name == "GetPolicy"); } } public INamedTypeSymbol? AuthorizationOptions { get; } public IPropertySymbol? DefaultPolicy { get; } public IPropertySymbol? FallbackPolicy { get; } public IPropertySymbol? InvokeHandlersAfterFailure { get; } public IMethodSymbol? GetPolicy { get; } public bool HasRequiredTypes => AuthorizationOptions is not null && DefaultPolicy is not null && FallbackPolicy is not null && InvokeHandlersAfterFailure is not null && GetPolicy is not null; }