From e0208ab25284b937f51d28c133174de448285fec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 8 Jan 2018 16:30:07 +0300 Subject: [PATCH] Added a temp action to switch current tenant. --- .../Controllers/MultiTenancyController.cs | 55 +++++++++++++++++++ .../AbpIdentityServerDomainModule.cs | 4 +- 2 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 src/AbpDesk/AbpDesk.Web.Mvc/Controllers/MultiTenancyController.cs diff --git a/src/AbpDesk/AbpDesk.Web.Mvc/Controllers/MultiTenancyController.cs b/src/AbpDesk/AbpDesk.Web.Mvc/Controllers/MultiTenancyController.cs new file mode 100644 index 0000000000..6374b716df --- /dev/null +++ b/src/AbpDesk/AbpDesk.Web.Mvc/Controllers/MultiTenancyController.cs @@ -0,0 +1,55 @@ +using System; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Volo.Abp.AspNetCore.Mvc; +using Volo.Abp.MultiTenancy; +using Volo.Abp.Ui; + +namespace AbpDesk.Web.Mvc.Controllers +{ + /* TODO: This is temporary solution to switch tenant. + */ + + public class MultiTenancyController : AbpController + { + private readonly ITenantStore _tenantStore; + + public MultiTenancyController(ITenantStore tenantStore) + { + _tenantStore = tenantStore; + } + + public async Task SwitchTenant(string tenant = "") + { + var tenantInfo = await FindTenantAsync(tenant); + if (tenantInfo == null) + { + throw new UserFriendlyException("Unknown tenant: " + tenant); + } + + HttpContext.Response.Cookies.Append( + "__tenant", + tenantInfo.Id.ToString(), + new CookieOptions + { + Expires = DateTimeOffset.Now.AddYears(1) + } + ); + + return Redirect("/"); + } + + private async Task FindTenantAsync(string tenantIdOrName) + { + if (Guid.TryParse(tenantIdOrName, out var parsedTenantId)) + { + return await _tenantStore.FindAsync(parsedTenantId); + } + else + { + return await _tenantStore.FindAsync(tenantIdOrName); + } + } + } +} diff --git a/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerDomainModule.cs b/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerDomainModule.cs index 884979ade4..012282784f 100644 --- a/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerDomainModule.cs +++ b/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerDomainModule.cs @@ -33,8 +33,8 @@ namespace Volo.Abp.IdentityServer //TODO: Remove in-memory stores once EF Core stores are fully completed. identityServerBuilder.AddDeveloperSigningCredential() - //.AddInMemoryClients(IdentityServerConfig.GetClients()) - //.AddInMemoryApiResources(IdentityServerConfig.GetApiResources()) + .AddInMemoryClients(IdentityServerConfig.GetClients()) + .AddInMemoryApiResources(IdentityServerConfig.GetApiResources()) .AddAbpIdentityServer(); services.ExecutePreConfiguredActions(identityServerBuilder);