File: AuthorizeDataAdapter.cs
Web Access
Project: src\src\Components\Authorization\src\Microsoft.AspNetCore.Components.Authorization.csproj (Microsoft.AspNetCore.Components.Authorization)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.AspNetCore.Authorization;
 
namespace Microsoft.AspNetCore.Components.Authorization;
 
// This is so the AuthorizeView can avoid implementing IAuthorizeData (even privately)
internal sealed class AuthorizeDataAdapter : IAuthorizeData
{
    private readonly AuthorizeView _component;
 
    public AuthorizeDataAdapter(AuthorizeView component)
    {
        _component = component ?? throw new ArgumentNullException(nameof(component));
    }
 
    public string? Policy
    {
        get => _component.Policy;
        set => throw new NotSupportedException();
    }
 
    public string? Roles
    {
        get => _component.Roles;
        set => throw new NotSupportedException();
    }
 
    // AuthorizeView doesn't expose any such parameter, as it wouldn't be used anyway,
    // since we already have the ClaimsPrincipal by the time AuthorizeView gets involved.
    public string? AuthenticationSchemes
    {
        get => null;
        set => throw new NotSupportedException();
    }
}