private async Task <JsonResult> SaveAccountSwitchTokenAndGetTargetUrl(int?targetTenantId, long targetUserId) { //Create a cache item var cacheItem = new SwitchToLinkedAccountCacheItem( targetTenantId, targetUserId, AbpSession.ImpersonatorTenantId, AbpSession.ImpersonatorUserId ); //Create a random token and save to the cache var tokenId = Guid.NewGuid().ToString(); await _cacheManager .GetSwitchToLinkedAccountCache() .SetAsync(tokenId, cacheItem, TimeSpan.FromMinutes(1)); //Find tenancy name string tenancyName = null; if (targetTenantId.HasValue) { tenancyName = (await _tenantManager.GetByIdAsync(targetTenantId.Value)).TenancyName; } //Create target URL var targetUrl = _webUrlService.GetSiteRootAddress(tenancyName) + "Account/SwitchToLinkedAccountSignIn?tokenId=" + tokenId; return(Json(new MvcAjaxResponse { TargetUrl = targetUrl })); }
public async Task <string> GetAccountSwitchToken(long targetUserId, int?targetTenantId) { //Create a cache item var cacheItem = new SwitchToLinkedAccountCacheItem( targetTenantId, targetUserId, AbpSession.ImpersonatorTenantId, AbpSession.ImpersonatorUserId ); //Create a random token and save to the cache var token = Guid.NewGuid().ToString(); await _cacheManager .GetSwitchToLinkedAccountCache() .SetAsync(token, cacheItem, TimeSpan.FromMinutes(1)); return(token); }