Rename the area IdentityService to Identity
This commit is contained in:
parent
0fbef1ec0b
commit
f11d692976
|
|
@ -17,8 +17,8 @@ using Microsoft.Net.Http.Headers;
|
||||||
|
|
||||||
namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
{
|
{
|
||||||
[Area("IdentityService")]
|
[Area("Identity")]
|
||||||
[Route("tfp/IdentityService/[controller]/[action]")]
|
[Route("tfp/Identity/[controller]/[action]")]
|
||||||
[Authorize(IdentityServiceOptions.LoginPolicyName)]
|
[Authorize(IdentityServiceOptions.LoginPolicyName)]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public class AccountController : Controller
|
public class AccountController : Controller
|
||||||
|
|
@ -12,7 +12,7 @@ using Microsoft.IdentityModel.Protocols.OpenIdConnect;
|
||||||
namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
{
|
{
|
||||||
[Authorize(IdentityServiceOptions.ManagementPolicyName)]
|
[Authorize(IdentityServiceOptions.ManagementPolicyName)]
|
||||||
[Area("IdentityService")]
|
[Area("Identity")]
|
||||||
public class ApplicationsController : Controller
|
public class ApplicationsController : Controller
|
||||||
{
|
{
|
||||||
private readonly UserManager<ApplicationUser> _userManager;
|
private readonly UserManager<ApplicationUser> _userManager;
|
||||||
|
|
@ -26,7 +26,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
_applicationManager = applicationManager;
|
_applicationManager = applicationManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications")]
|
[HttpGet("tfp/Identity/signinsignup/Applications")]
|
||||||
public async Task<IActionResult> Index()
|
public async Task<IActionResult> Index()
|
||||||
{
|
{
|
||||||
var id = _userManager.GetUserId(User);
|
var id = _userManager.GetUserId(User);
|
||||||
|
|
@ -34,13 +34,13 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(applications);
|
return View(applications);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/Create")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/Create")]
|
||||||
public IActionResult Create()
|
public IActionResult Create()
|
||||||
{
|
{
|
||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/Create")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/Create")]
|
||||||
public async Task<IActionResult> Create(CreateApplicationViewModel model)
|
public async Task<IActionResult> Create(CreateApplicationViewModel model)
|
||||||
{
|
{
|
||||||
var application = new IdentityServiceApplication
|
var application = new IdentityServiceApplication
|
||||||
|
|
@ -56,7 +56,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return RedirectToAction(nameof(CreateScope), new { id = application.Id });
|
return RedirectToAction(nameof(CreateScope), new { id = application.Id });
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/Scopes/Create")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/Scopes/Create")]
|
||||||
public async Task<IActionResult> CreateScope([FromRoute] string id)
|
public async Task<IActionResult> CreateScope([FromRoute] string id)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -66,7 +66,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(new CreateScopeViewModel(applicationName, scopes));
|
return View(new CreateScopeViewModel(applicationName, scopes));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/Scopes/Create")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/Scopes/Create")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
public async Task<IActionResult> CreateScope(
|
public async Task<IActionResult> CreateScope(
|
||||||
[FromRoute] string id,
|
[FromRoute] string id,
|
||||||
|
|
@ -90,7 +90,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return RedirectToAction(nameof(CreateScope), new { id });
|
return RedirectToAction(nameof(CreateScope), new { id });
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/RedirectUris/Create")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/RedirectUris/Create")]
|
||||||
public async Task<IActionResult> CreateRedirectUri([FromRoute] string id)
|
public async Task<IActionResult> CreateRedirectUri([FromRoute] string id)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -100,7 +100,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(new CreateRedirectUriViewModel(applicationName, redirectUris));
|
return View(new CreateRedirectUriViewModel(applicationName, redirectUris));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/RedirectUris/Create")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/RedirectUris/Create")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
public async Task<IActionResult> CreateRedirectUri(
|
public async Task<IActionResult> CreateRedirectUri(
|
||||||
[FromRoute] string id,
|
[FromRoute] string id,
|
||||||
|
|
@ -124,7 +124,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return RedirectToAction(nameof(CreateRedirectUri), new { id });
|
return RedirectToAction(nameof(CreateRedirectUri), new { id });
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/LogoutUris/Create")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/LogoutUris/Create")]
|
||||||
public async Task<IActionResult> CreateLogoutUri([FromRoute] string id)
|
public async Task<IActionResult> CreateLogoutUri([FromRoute] string id)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -134,7 +134,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(new CreateLogoutUriViewModel(id, applicationName, logoutUris));
|
return View(new CreateLogoutUriViewModel(id, applicationName, logoutUris));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/LogoutUris/Create")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/LogoutUris/Create")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
public async Task<IActionResult> CreateLogoutUri(
|
public async Task<IActionResult> CreateLogoutUri(
|
||||||
[FromRoute] string id,
|
[FromRoute] string id,
|
||||||
|
|
@ -158,7 +158,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return RedirectToAction(nameof(CreateLogoutUri), new { id });
|
return RedirectToAction(nameof(CreateLogoutUri), new { id });
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/Remove")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/Remove")]
|
||||||
public async Task<IActionResult> RemoveApplication([FromRoute] string id)
|
public async Task<IActionResult> RemoveApplication([FromRoute] string id)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -167,7 +167,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(new RemoveApplicationViewModel(applicationName));
|
return View(new RemoveApplicationViewModel(applicationName));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/Remove")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/Remove")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
[ActionName(nameof(RemoveApplicationViewModel))]
|
[ActionName(nameof(RemoveApplicationViewModel))]
|
||||||
public async Task<IActionResult> RemoveApplicationConfirmed([FromRoute] string id)
|
public async Task<IActionResult> RemoveApplicationConfirmed([FromRoute] string id)
|
||||||
|
|
@ -189,7 +189,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return RedirectToAction(nameof(Index));
|
return RedirectToAction(nameof(Index));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}")]
|
||||||
public async Task<IActionResult> Details([FromRoute]string id)
|
public async Task<IActionResult> Details([FromRoute]string id)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -211,7 +211,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/ChangeName")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/ChangeName")]
|
||||||
public async Task<IActionResult> ChangeName([FromRoute]string id)
|
public async Task<IActionResult> ChangeName([FromRoute]string id)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -220,7 +220,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(new ChangeApplicationNameViewModel(applicationName));
|
return View(new ChangeApplicationNameViewModel(applicationName));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/ChangeName")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/ChangeName")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
public async Task<IActionResult> ChangeName([FromRoute]string id, [FromForm] ChangeApplicationNameViewModel model)
|
public async Task<IActionResult> ChangeName([FromRoute]string id, [FromForm] ChangeApplicationNameViewModel model)
|
||||||
{
|
{
|
||||||
|
|
@ -242,7 +242,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/GenerateClientSecret")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/GenerateClientSecret")]
|
||||||
public async Task<IActionResult> GenerateClientSecret([FromRoute]string id)
|
public async Task<IActionResult> GenerateClientSecret([FromRoute]string id)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -251,7 +251,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/GenerateClientSecret")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/GenerateClientSecret")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
[ActionName(nameof(GenerateClientSecret))]
|
[ActionName(nameof(GenerateClientSecret))]
|
||||||
public async Task<IActionResult> GenerateClientSecretConfirmed([FromRoute]string id)
|
public async Task<IActionResult> GenerateClientSecretConfirmed([FromRoute]string id)
|
||||||
|
|
@ -270,7 +270,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View("GeneratedClientSecret", new GeneratedClientSecretViewModel(name, clientSecret));
|
return View("GeneratedClientSecret", new GeneratedClientSecretViewModel(name, clientSecret));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/RemoveClientSecret")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/RemoveClientSecret")]
|
||||||
public async Task<IActionResult> RemoveClientSecret([FromRoute]string id)
|
public async Task<IActionResult> RemoveClientSecret([FromRoute]string id)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -279,7 +279,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/RemoveClientSecret")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/RemoveClientSecret")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
[ActionName(nameof(RemoveClientSecret))]
|
[ActionName(nameof(RemoveClientSecret))]
|
||||||
public async Task<IActionResult> RemoveClientSecretConfirmed([FromRoute]string id)
|
public async Task<IActionResult> RemoveClientSecretConfirmed([FromRoute]string id)
|
||||||
|
|
@ -297,7 +297,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return RedirectToAction(nameof(Details), new { id });
|
return RedirectToAction(nameof(Details), new { id });
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/RegenerateClientSecret")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/RegenerateClientSecret")]
|
||||||
public async Task<IActionResult> RegenerateClientSecret([FromRoute]string id)
|
public async Task<IActionResult> RegenerateClientSecret([FromRoute]string id)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -305,7 +305,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(model: name);
|
return View(model: name);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/RegenerateClientSecret")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/RegenerateClientSecret")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
[ActionName(nameof(RegenerateClientSecret))]
|
[ActionName(nameof(RegenerateClientSecret))]
|
||||||
public async Task<IActionResult> RegenerateClientSecretConfirmed([FromRoute]string id)
|
public async Task<IActionResult> RegenerateClientSecretConfirmed([FromRoute]string id)
|
||||||
|
|
@ -323,7 +323,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View("GeneratedClientSecret", new GeneratedClientSecretViewModel(name, clientSecret));
|
return View("GeneratedClientSecret", new GeneratedClientSecretViewModel(name, clientSecret));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/Scopes/Add")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/Scopes/Add")]
|
||||||
public async Task<IActionResult> AddScope([FromRoute] string id)
|
public async Task<IActionResult> AddScope([FromRoute] string id)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -333,7 +333,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(new CreateScopeViewModel(applicationName, scopes));
|
return View(new CreateScopeViewModel(applicationName, scopes));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/Scopes/Add")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/Scopes/Add")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
public async Task<IActionResult> AddScope(
|
public async Task<IActionResult> AddScope(
|
||||||
[FromRoute] string id,
|
[FromRoute] string id,
|
||||||
|
|
@ -357,7 +357,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return RedirectToAction(nameof(AddScope), new { id });
|
return RedirectToAction(nameof(AddScope), new { id });
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/Scopes/Edit/{scope}")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/Scopes/Edit/{scope}")]
|
||||||
public async Task<IActionResult> EditScope([FromRoute] string id, [FromRoute] string scope)
|
public async Task<IActionResult> EditScope([FromRoute] string id, [FromRoute] string scope)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -366,7 +366,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(new EditScopeViewModel(applicationName, scope));
|
return View(new EditScopeViewModel(applicationName, scope));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/Scopes/Edit/{scope}")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/Scopes/Edit/{scope}")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
public async Task<IActionResult> EditScope(
|
public async Task<IActionResult> EditScope(
|
||||||
[FromRoute] string id,
|
[FromRoute] string id,
|
||||||
|
|
@ -390,7 +390,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return RedirectToAction(nameof(Details), new { id });
|
return RedirectToAction(nameof(Details), new { id });
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/RedirectUri/Edit")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/RedirectUri/Edit")]
|
||||||
public async Task<IActionResult> EditRedirectUri([FromRoute] string id, [FromQuery] string redirectUri)
|
public async Task<IActionResult> EditRedirectUri([FromRoute] string id, [FromQuery] string redirectUri)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -399,7 +399,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(new EditRedirectUriViewModel(applicationName, redirectUri));
|
return View(new EditRedirectUriViewModel(applicationName, redirectUri));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/RedirectUri/Edit")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/RedirectUri/Edit")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
public async Task<IActionResult> EditRedirectUri(
|
public async Task<IActionResult> EditRedirectUri(
|
||||||
[FromRoute] string id,
|
[FromRoute] string id,
|
||||||
|
|
@ -423,7 +423,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return RedirectToAction(nameof(Details), new { id });
|
return RedirectToAction(nameof(Details), new { id });
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/LogoutUri/Edit")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/LogoutUri/Edit")]
|
||||||
public async Task<IActionResult> EditLogoutUri([FromRoute] string id, [FromQuery] string logoutUri)
|
public async Task<IActionResult> EditLogoutUri([FromRoute] string id, [FromQuery] string logoutUri)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -432,7 +432,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(new EditLogoutUriViewModel(applicationName, logoutUri));
|
return View(new EditLogoutUriViewModel(applicationName, logoutUri));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/LogoutUri/Edit")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/LogoutUri/Edit")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
public async Task<IActionResult> EditLogoutUri(
|
public async Task<IActionResult> EditLogoutUri(
|
||||||
[FromRoute] string id,
|
[FromRoute] string id,
|
||||||
|
|
@ -456,7 +456,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return RedirectToAction(nameof(Details), new { id });
|
return RedirectToAction(nameof(Details), new { id });
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/Scopes/Remove/{scope}")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/Scopes/Remove/{scope}")]
|
||||||
public async Task<IActionResult> RemoveScope([FromRoute] string id, [FromRoute] string scope)
|
public async Task<IActionResult> RemoveScope([FromRoute] string id, [FromRoute] string scope)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -465,7 +465,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(new RemoveScopeViewModel(applicationName, scope));
|
return View(new RemoveScopeViewModel(applicationName, scope));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/Scopes/Remove/{scope}")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/Scopes/Remove/{scope}")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
[ActionName(nameof(RemoveScope))]
|
[ActionName(nameof(RemoveScope))]
|
||||||
public async Task<IActionResult> RemoveScopeConfirmed([FromRoute] string id, [FromRoute] string scope)
|
public async Task<IActionResult> RemoveScopeConfirmed([FromRoute] string id, [FromRoute] string scope)
|
||||||
|
|
@ -487,7 +487,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return RedirectToAction(nameof(Details), new { id });
|
return RedirectToAction(nameof(Details), new { id });
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/RedirectUri/Remove")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/RedirectUri/Remove")]
|
||||||
public async Task<IActionResult> RemoveRedirectUri([FromRoute] string id, [FromQuery] string redirectUri)
|
public async Task<IActionResult> RemoveRedirectUri([FromRoute] string id, [FromQuery] string redirectUri)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -496,7 +496,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(new RemoveRedirectUriViewModel(applicationName, redirectUri));
|
return View(new RemoveRedirectUriViewModel(applicationName, redirectUri));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/RedirectUri/Remove")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/RedirectUri/Remove")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
[ActionName(nameof(RemoveRedirectUri))]
|
[ActionName(nameof(RemoveRedirectUri))]
|
||||||
public async Task<IActionResult> RemoveRedirectUriConfirmed([FromRoute] string id, [FromQuery] string redirectUri)
|
public async Task<IActionResult> RemoveRedirectUriConfirmed([FromRoute] string id, [FromQuery] string redirectUri)
|
||||||
|
|
@ -518,7 +518,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return RedirectToAction(nameof(Details), new { id });
|
return RedirectToAction(nameof(Details), new { id });
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/LogoutUri/Remove")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/LogoutUri/Remove")]
|
||||||
public async Task<IActionResult> RemoveLogoutUri([FromRoute] string id, [FromQuery] string logoutUri)
|
public async Task<IActionResult> RemoveLogoutUri([FromRoute] string id, [FromQuery] string logoutUri)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -527,7 +527,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(new RemoveLogoutUriViewModel(applicationName, logoutUri));
|
return View(new RemoveLogoutUriViewModel(applicationName, logoutUri));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/LogoutUri/Remove")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/LogoutUri/Remove")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
[ActionName(nameof(RemoveLogoutUri))]
|
[ActionName(nameof(RemoveLogoutUri))]
|
||||||
public async Task<IActionResult> RemoveLogoutUriConfirmed([FromRoute] string id, [FromQuery] string logoutUri)
|
public async Task<IActionResult> RemoveLogoutUriConfirmed([FromRoute] string id, [FromQuery] string logoutUri)
|
||||||
|
|
@ -549,7 +549,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return RedirectToAction(nameof(Details), new { id });
|
return RedirectToAction(nameof(Details), new { id });
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/RedirectUris/Add")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/RedirectUris/Add")]
|
||||||
public async Task<IActionResult> AddRedirectUri([FromRoute] string id)
|
public async Task<IActionResult> AddRedirectUri([FromRoute] string id)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -559,7 +559,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(new CreateRedirectUriViewModel(applicationName, redirectUris));
|
return View(new CreateRedirectUriViewModel(applicationName, redirectUris));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/RedirectUris/Add")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/RedirectUris/Add")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
public async Task<IActionResult> AddRedirectUri(
|
public async Task<IActionResult> AddRedirectUri(
|
||||||
[FromRoute] string id,
|
[FromRoute] string id,
|
||||||
|
|
@ -583,7 +583,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return RedirectToAction(nameof(AddRedirectUri), new { id });
|
return RedirectToAction(nameof(AddRedirectUri), new { id });
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/Applications/{id}/LogoutUris/Add")]
|
[HttpGet("tfp/Identity/signinsignup/Applications/{id}/LogoutUris/Add")]
|
||||||
public async Task<IActionResult> AddLogoutUri([FromRoute] string id)
|
public async Task<IActionResult> AddLogoutUri([FromRoute] string id)
|
||||||
{
|
{
|
||||||
var application = await _applicationManager.FindByIdAsync(id);
|
var application = await _applicationManager.FindByIdAsync(id);
|
||||||
|
|
@ -593,7 +593,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return View(new CreateLogoutUriViewModel(id, applicationName, logoutUris));
|
return View(new CreateLogoutUriViewModel(id, applicationName, logoutUris));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/Applications/{id}/LogoutUris/Add")]
|
[HttpPost("tfp/Identity/signinsignup/Applications/{id}/LogoutUris/Add")]
|
||||||
[ValidateAntiForgeryToken]
|
[ValidateAntiForgeryToken]
|
||||||
public async Task<IActionResult> AddLogoutUri(
|
public async Task<IActionResult> AddLogoutUri(
|
||||||
[FromRoute] string id,
|
[FromRoute] string id,
|
||||||
|
|
@ -4,7 +4,7 @@ using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
{
|
{
|
||||||
[Area("IdentityService")]
|
[Area("Identity")]
|
||||||
public class IdentityServiceConfigurationController : Controller
|
public class IdentityServiceConfigurationController : Controller
|
||||||
{
|
{
|
||||||
private readonly IConfigurationManager _configurationProvider;
|
private readonly IConfigurationManager _configurationProvider;
|
||||||
|
|
@ -18,7 +18,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
_keySetProvider = keySetProvider;
|
_keySetProvider = keySetProvider;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/v2.0/.well-known/openid-configuration")]
|
[HttpGet("tfp/Identity/signinsignup/v2.0/.well-known/openid-configuration")]
|
||||||
[Produces("application/json")]
|
[Produces("application/json")]
|
||||||
public async Task<IActionResult> Metadata()
|
public async Task<IActionResult> Metadata()
|
||||||
{
|
{
|
||||||
|
|
@ -35,7 +35,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return Ok(await _configurationProvider.GetConfigurationAsync(configurationContext));
|
return Ok(await _configurationProvider.GetConfigurationAsync(configurationContext));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/discovery/v2.0/keys")]
|
[HttpGet("tfp/Identity/signinsignup/discovery/v2.0/keys")]
|
||||||
[Produces("application/json")]
|
[Produces("application/json")]
|
||||||
public async Task<IActionResult> Keys()
|
public async Task<IActionResult> Keys()
|
||||||
{
|
{
|
||||||
|
|
@ -10,7 +10,7 @@ using Microsoft.IdentityModel.Protocols.OpenIdConnect;
|
||||||
|
|
||||||
namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
{
|
{
|
||||||
[Area("IdentityService")]
|
[Area("Identity")]
|
||||||
public class IdentityServiceController : Controller
|
public class IdentityServiceController : Controller
|
||||||
{
|
{
|
||||||
private readonly IOptions<IdentityServiceOptions> _options;
|
private readonly IOptions<IdentityServiceOptions> _options;
|
||||||
|
|
@ -33,7 +33,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
_tokenResponseFactory = tokenResponseFactory;
|
_tokenResponseFactory = tokenResponseFactory;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/oauth2/v2.0/authorize/")]
|
[HttpGet("tfp/Identity/signinsignup/oauth2/v2.0/authorize/")]
|
||||||
public async Task<IActionResult> Authorize(
|
public async Task<IActionResult> Authorize(
|
||||||
[EnableIntegratedWebClient, ModelBinder(typeof(AuthorizationRequestModelBinder))] AuthorizationRequest authorization)
|
[EnableIntegratedWebClient, ModelBinder(typeof(AuthorizationRequestModelBinder))] AuthorizationRequest authorization)
|
||||||
{
|
{
|
||||||
|
|
@ -69,7 +69,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return this.ValidAuthorization(response);
|
return this.ValidAuthorization(response);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost("tfp/IdentityService/signinsignup/oauth2/v2.0/token")]
|
[HttpPost("tfp/Identity/signinsignup/oauth2/v2.0/token")]
|
||||||
[Produces("application/json")]
|
[Produces("application/json")]
|
||||||
public async Task<IActionResult> Token(
|
public async Task<IActionResult> Token(
|
||||||
[ModelBinder(typeof(TokenRequestModelBinder))] TokenRequest request)
|
[ModelBinder(typeof(TokenRequestModelBinder))] TokenRequest request)
|
||||||
|
|
@ -92,7 +92,7 @@ namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
return Ok(response.Parameters);
|
return Ok(response.Parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("tfp/IdentityService/signinsignup/oauth2/v2.0/logout")]
|
[HttpGet("tfp/Identity/signinsignup/oauth2/v2.0/logout")]
|
||||||
public async Task<IActionResult> Logout(
|
public async Task<IActionResult> Logout(
|
||||||
[EnableIntegratedWebClient, ModelBinder(typeof(LogoutRequestModelBinder))] LogoutRequest request)
|
[EnableIntegratedWebClient, ModelBinder(typeof(LogoutRequestModelBinder))] LogoutRequest request)
|
||||||
{
|
{
|
||||||
|
|
@ -13,8 +13,8 @@ using Microsoft.Extensions.Logging;
|
||||||
namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
namespace IdentityOIDCWebApplicationSample.Identity.Controllers
|
||||||
{
|
{
|
||||||
[Authorize(IdentityServiceOptions.LoginPolicyName)]
|
[Authorize(IdentityServiceOptions.LoginPolicyName)]
|
||||||
[Area("IdentityService")]
|
[Area("Identity")]
|
||||||
[Route("tfp/IdentityService/[controller]/[action]")]
|
[Route("tfp/Identity/[controller]/[action]")]
|
||||||
public class ManageController : Controller
|
public class ManageController : Controller
|
||||||
{
|
{
|
||||||
private readonly UserManager<ApplicationUser> _userManager;
|
private readonly UserManager<ApplicationUser> _userManager;
|
||||||
|
|
@ -23,7 +23,7 @@ namespace IdentityOIDCWebApplicationSample.Controllers
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult Manage()
|
public IActionResult Manage()
|
||||||
{
|
{
|
||||||
return RedirectToAction("Index", "Manage", new { area = "IdentityService" });
|
return RedirectToAction("Index", "Manage", new { area = "Identity" });
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
// GET: /Account/SignOut
|
// GET: /Account/SignOut
|
||||||
|
|
|
||||||
|
|
@ -39,8 +39,4 @@
|
||||||
<ProjectReference Include="..\..\src\Microsoft.AspNetCore.Identity.Service.AzureKeyVault\Microsoft.AspNetCore.Identity.Service.AzureKeyVault.csproj" />
|
<ProjectReference Include="..\..\src\Microsoft.AspNetCore.Identity.Service.AzureKeyVault\Microsoft.AspNetCore.Identity.Service.AzureKeyVault.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="Areas\IdentityService\Views\Shared\" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@
|
||||||
var applicationConfig = {
|
var applicationConfig = {
|
||||||
clientID: 'CDA53D17-6683-4EA7-B6D7-B6DB23E60DED',
|
clientID: 'CDA53D17-6683-4EA7-B6D7-B6DB23E60DED',
|
||||||
redirectUri: "https://localhost:44324/Spa.html",
|
redirectUri: "https://localhost:44324/Spa.html",
|
||||||
authority: "https://localhost:44324/tfp/IdentityService/signinsignup",
|
authority: "https://localhost:44324/tfp/Identity/signinsignup",
|
||||||
b2cScopes: ["https://localhost/DFC7191F-FF74-42B9-A292-08FEA80F5B20/v2.0/ProtectedApi/read"], // <<issuer>>/<<resourceAppName>>/<<resourceAppScope>>.
|
b2cScopes: ["https://localhost/DFC7191F-FF74-42B9-A292-08FEA80F5B20/v2.0/ProtectedApi/read"], // <<issuer>>/<<resourceAppName>>/<<resourceAppScope>>.
|
||||||
webApi: 'https://localhost:44324/Home/Contact',
|
webApi: 'https://localhost:44324/Home/Contact',
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace NativeWPFClient
|
||||||
{
|
{
|
||||||
BaseAddress = "https://localhost:44324/",
|
BaseAddress = "https://localhost:44324/",
|
||||||
RedirectUri = "urn:ietf:wg:oauth:2.0:oob",
|
RedirectUri = "urn:ietf:wg:oauth:2.0:oob",
|
||||||
Tenant = "IdentityService",
|
Tenant = "Identity",
|
||||||
Policy = "signinsignup",
|
Policy = "signinsignup",
|
||||||
ClientId = "06D7C2FB-A66A-41AD-9509-77BDDFAB111B",
|
ClientId = "06D7C2FB-A66A-41AD-9509-77BDDFAB111B",
|
||||||
Scopes = "https://localhost/DFC7191F-FF74-42B9-A292-08FEA80F5B20/v2.0/ProtectedApi/read"
|
Scopes = "https://localhost/DFC7191F-FF74-42B9-A292-08FEA80F5B20/v2.0/ProtectedApi/read"
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ namespace Microsoft.AspNetCore.Identity.Service.IntegratedWebClient
|
||||||
var baseUrl = $"{ctx.Request.Scheme}://{ctx.Request.Host.ToUriComponent()}{ctx.Request.PathBase}";
|
var baseUrl = $"{ctx.Request.Scheme}://{ctx.Request.Host.ToUriComponent()}{ctx.Request.PathBase}";
|
||||||
if (!Uri.TryCreate(configurationContext.AuthorizationEndpoint, UriKind.RelativeOrAbsolute, out var authorizationUri))
|
if (!Uri.TryCreate(configurationContext.AuthorizationEndpoint, UriKind.RelativeOrAbsolute, out var authorizationUri))
|
||||||
{
|
{
|
||||||
configurationContext.AuthorizationEndpoint = $"{baseUrl}/tfp/IdentityService/signinsignup/oauth2/v2.0/authorize";
|
configurationContext.AuthorizationEndpoint = $"{baseUrl}/tfp/Identity/signinsignup/oauth2/v2.0/authorize";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -52,7 +52,7 @@ namespace Microsoft.AspNetCore.Identity.Service.IntegratedWebClient
|
||||||
|
|
||||||
if (!Uri.TryCreate(configurationContext.TokenEndpoint, UriKind.RelativeOrAbsolute, out var tokenUri))
|
if (!Uri.TryCreate(configurationContext.TokenEndpoint, UriKind.RelativeOrAbsolute, out var tokenUri))
|
||||||
{
|
{
|
||||||
configurationContext.TokenEndpoint = $"{baseUrl}/tfp/IdentityService/signinsignup/oauth2/v2.0/token";
|
configurationContext.TokenEndpoint = $"{baseUrl}/tfp/Identity/signinsignup/oauth2/v2.0/token";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -61,7 +61,7 @@ namespace Microsoft.AspNetCore.Identity.Service.IntegratedWebClient
|
||||||
|
|
||||||
if (!Uri.TryCreate(configurationContext.EndSessionEndpoint, UriKind.RelativeOrAbsolute, out var logoutUri))
|
if (!Uri.TryCreate(configurationContext.EndSessionEndpoint, UriKind.RelativeOrAbsolute, out var logoutUri))
|
||||||
{
|
{
|
||||||
configurationContext.EndSessionEndpoint = $"{baseUrl}/tfp/IdentityService/signinsignup/oauth2/v2.0/logout";
|
configurationContext.EndSessionEndpoint = $"{baseUrl}/tfp/Identity/signinsignup/oauth2/v2.0/logout";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -57,19 +57,19 @@ namespace Microsoft.Extensions.DependencyInjection
|
||||||
{
|
{
|
||||||
options.Cookie.HttpOnly = true;
|
options.Cookie.HttpOnly = true;
|
||||||
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
|
options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
|
||||||
options.Cookie.Path = "/tfp/IdentityService/signinsignup";
|
options.Cookie.Path = "/tfp";
|
||||||
options.Cookie.Name = IdentityServiceOptions.AuthenticationCookieName;
|
options.Cookie.Name = IdentityServiceOptions.AuthenticationCookieName;
|
||||||
});
|
});
|
||||||
services.ConfigureApplicationCookie(options =>
|
services.ConfigureApplicationCookie(options =>
|
||||||
{
|
{
|
||||||
options.LoginPath = $"/tfp/IdentityService/Account/Login";
|
options.LoginPath = "/tfp/Identity/Account/Login";
|
||||||
options.AccessDeniedPath = $"/tfp/IdentityService/Account/Denied";
|
options.AccessDeniedPath = "/tfp/Identity/Account/Denied";
|
||||||
options.Cookie.Path = $"/tfp/IdentityService";
|
options.Cookie.Path = "/tfp";
|
||||||
});
|
});
|
||||||
services.ConfigureApplicationCookie(options => options.Cookie.Path = $"/tfp/IdentityService");
|
|
||||||
services.Configure<CookieAuthenticationOptions>(IdentityConstants.TwoFactorRememberMeScheme, options => options.Cookie.Path = $"/tfp/IdentityService");
|
|
||||||
services.Configure<CookieAuthenticationOptions>(IdentityConstants.TwoFactorUserIdScheme, options => options.Cookie.Path = $"/tfp/IdentityService");
|
|
||||||
|
|
||||||
|
services.ConfigureExternalCookie(options => options.Cookie.Path = "/tfp");
|
||||||
|
services.Configure<CookieAuthenticationOptions>(IdentityConstants.TwoFactorRememberMeScheme, options => options.Cookie.Path = "/tfp");
|
||||||
|
services.Configure<CookieAuthenticationOptions>(IdentityConstants.TwoFactorUserIdScheme, options => options.Cookie.Path = "/tfp");
|
||||||
services.AddTransient<IConfigureOptions<AuthorizationOptions>, IdentityServiceAuthorizationOptionsSetup>();
|
services.AddTransient<IConfigureOptions<AuthorizationOptions>, IdentityServiceAuthorizationOptionsSetup>();
|
||||||
|
|
||||||
// Other stuff
|
// Other stuff
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue