@using LANCommander.Server.Settings.Enums
@using LANCommander.Server.Settings.Models
@inject IJSRuntime JSRuntime
@if (!_providers.Any())
{
}
@foreach (var externalProvider in _providers)
{
}
@code {
[Parameter] public IEnumerable Values { get; set; }
[Parameter] public EventCallback> ValuesChanged { get; set; }
List _templates = new();
List _providers = new();
AuthenticationProvider _selectedTemplate;
protected override async Task OnInitializedAsync()
{
_templates = await AuthenticationService.GetAuthenticationProviderTemplatesAsync();
}
protected override void OnParametersSet()
{
_providers = Values.ToList();
}
void OpenDocumentation(AuthenticationProvider authenticationProvider)
{
JSRuntime.InvokeVoidAsync("open", authenticationProvider.Documentation, "_blank");
}
async Task Add()
{
_providers.Add(new AuthenticationProvider());
if (ValuesChanged.HasDelegate)
await ValuesChanged.InvokeAsync(_providers);
}
async Task Remove(AuthenticationProvider authenticationProvider)
{
_providers.Remove(authenticationProvider);
if (ValuesChanged.HasDelegate)
await ValuesChanged.InvokeAsync(_providers);
}
async Task UseTemplate(AuthenticationProvider authenticationProvider, AuthenticationProvider template)
{
authenticationProvider.ClaimMappings = template.ClaimMappings;
authenticationProvider.ClientId = template.ClientId;
authenticationProvider.ClientSecret = template.ClientSecret;
authenticationProvider.Color = template.Color;
authenticationProvider.Documentation = template.Documentation;
authenticationProvider.Icon = template.Icon;
authenticationProvider.Name = template.Name;
authenticationProvider.Scopes = template.Scopes;
authenticationProvider.ConfigurationUrl = template.ConfigurationUrl;
authenticationProvider.AuthorizationEndpoint = template.AuthorizationEndpoint;
authenticationProvider.TokenEndpoint = template.TokenEndpoint;
authenticationProvider.UserInfoEndpoint = template.UserInfoEndpoint;
await InvokeAsync(StateHasChanged);
}
}