public async Task <IActionResult> Edit(string id, string returnUrl = null) { if (!await _authorizationService.AuthorizeAsync(User, Permissions.ManageApplications)) { return(Unauthorized()); } var application = await _applicationManager.FindByPhysicalIdAsync(id); if (application == null) { return(NotFound()); } Task <bool> HasPermissionAsync(string permission) => _applicationManager.HasPermissionAsync(application, permission); var model = new EditOpenIdApplicationViewModel { AllowAuthorizationCodeFlow = await HasPermissionAsync(OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode), AllowClientCredentialsFlow = await HasPermissionAsync(OpenIddictConstants.Permissions.GrantTypes.ClientCredentials), AllowImplicitFlow = await HasPermissionAsync(OpenIddictConstants.Permissions.GrantTypes.Implicit), AllowPasswordFlow = await HasPermissionAsync(OpenIddictConstants.Permissions.GrantTypes.Password), AllowRefreshTokenFlow = await HasPermissionAsync(OpenIddictConstants.Permissions.GrantTypes.RefreshToken), AllowLogoutEndpoint = await HasPermissionAsync(OpenIddictConstants.Permissions.Endpoints.Logout), ClientId = await _applicationManager.GetClientIdAsync(application), ConsentType = await _applicationManager.GetConsentTypeAsync(application), DisplayName = await _applicationManager.GetDisplayNameAsync(application), Id = await _applicationManager.GetPhysicalIdAsync(application), PostLogoutRedirectUris = string.Join(" ", await _applicationManager.GetPostLogoutRedirectUrisAsync(application)), RedirectUris = string.Join(" ", await _applicationManager.GetRedirectUrisAsync(application)), Type = await _applicationManager.GetClientTypeAsync(application) }; var roleService = HttpContext.RequestServices?.GetService <IRoleService>(); if (roleService != null) { foreach (var role in await roleService.GetRoleNamesAsync()) { model.RoleEntries.Add(new EditOpenIdApplicationViewModel.RoleEntry { Name = role, Selected = await _applicationManager.IsInRoleAsync(application, role) }); } } else { _notifier.Warning(H["There are no registered services to provide roles."]); } ViewData[nameof(OpenIdServerSettings)] = await GetServerSettingsAsync(); ViewData["ReturnUrl"] = returnUrl; return(View(model)); }