Add SwitchTenant method to AccountPageModel.

pull/9369/head
maliming 4 years ago
parent a5fd8d2195
commit 89e560edfa

@ -1,13 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Extensions;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Volo.Abp.Account.Localization;
using Volo.Abp.AspNetCore.ExceptionHandling;
using Volo.Abp.AspNetCore.MultiTenancy;
using Volo.Abp.AspNetCore.Mvc.UI.RazorPages;
using Volo.Abp.ExceptionHandling;
using Volo.Abp.Identity;
using Volo.Abp.MultiTenancy;
using IdentityUser = Volo.Abp.Identity.IdentityUser;
namespace Volo.Abp.Account.Web.Pages.Account
@ -21,12 +27,50 @@ namespace Volo.Abp.Account.Web.Pages.Account
public IOptions<IdentityOptions> IdentityOptions { get; set; }
public IExceptionToErrorInfoConverter ExceptionToErrorInfoConverter { get; set; }
public ITenantResolveResultAccessor TenantResolveResultAccessor { get; set; }
public IOptions<AbpAspNetCoreMultiTenancyOptions> AspNetCoreMultiTenancyOptions { get; set; }
public IOptions<AbpMultiTenancyOptions> MultiTenancyOptions { get; set; }
protected AccountPageModel()
{
LocalizationResourceType = typeof(AccountResource);
ObjectMapperContext = typeof(AbpAccountWebModule);
}
protected virtual bool SwitchTenant(Guid? tenantId)
{
if (MultiTenancyOptions.Value.IsEnabled &&
TenantResolveResultAccessor.Result?.AppliedResolvers?.Contains(CookieTenantResolveContributor.ContributorName) == true)
{
if (CurrentTenant.Id != tenantId)
{
if (tenantId != null)
{
Response.Cookies.Append(
AspNetCoreMultiTenancyOptions.Value.TenantKey,
tenantId.ToString(),
new CookieOptions
{
Path = "/",
HttpOnly = false,
Expires = DateTimeOffset.Now.AddYears(10)
}
);
}
else
{
Response.Cookies.Delete(AspNetCoreMultiTenancyOptions.Value.TenantKey);
}
return true;
}
}
return false;
}
protected virtual void CheckIdentityErrors(IdentityResult identityResult)
{
if (!identityResult.Succeeded)

@ -1,14 +1,10 @@
using System;
using System.ComponentModel.DataAnnotations;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.Extensions;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.MultiTenancy;
using Volo.Abp.Auditing;
using Volo.Abp.Identity;
using Volo.Abp.MultiTenancy;
using Volo.Abp.Validation;
namespace Volo.Abp.Account.Web.Pages.Account
@ -53,49 +49,11 @@ namespace Volo.Abp.Account.Web.Pages.Account
[DisableAuditing]
public string ConfirmPassword { get; set; }
protected virtual ITenantResolveResultAccessor TenantResolveResultAccessor { get; }
protected virtual AbpAspNetCoreMultiTenancyOptions AspNetCoreMultiTenancyOptions { get; }
protected virtual AbpMultiTenancyOptions MultiTenancyOptions { get; }
public ResetPasswordModel(
ITenantResolveResultAccessor tenantResolveResultAccessor,
IOptions<AbpAspNetCoreMultiTenancyOptions> aspNetCoreMultiTenancyOptions,
IOptions<AbpMultiTenancyOptions> multiTenancyOptions)
{
TenantResolveResultAccessor = tenantResolveResultAccessor;
AspNetCoreMultiTenancyOptions = aspNetCoreMultiTenancyOptions.Value;
MultiTenancyOptions = multiTenancyOptions.Value;
}
public virtual Task<IActionResult> OnGetAsync()
{
if (MultiTenancyOptions.IsEnabled &&
TenantResolveResultAccessor.Result?.AppliedResolvers?.Contains(CookieTenantResolveContributor.ContributorName) == true)
if (SwitchTenant(TenantId))
{
if (CurrentTenant.Id != TenantId)
{
if (TenantId != null)
{
Response.Cookies.Append(
AspNetCoreMultiTenancyOptions.TenantKey,
TenantId.ToString(),
new CookieOptions
{
Path = "/",
HttpOnly = false,
Expires = DateTimeOffset.Now.AddYears(10)
}
);
}
else
{
Response.Cookies.Delete(AspNetCoreMultiTenancyOptions.TenantKey);
}
return Task.FromResult<IActionResult>(Redirect(HttpContext.Request.GetEncodedUrl()));
}
return Task.FromResult<IActionResult>(Redirect(HttpContext.Request.GetEncodedUrl()));
}
return Task.FromResult<IActionResult>(Page());

Loading…
Cancel
Save