public virtual async Task <ImpersonateOutput> DelegatedImpersonate(DelegatedImpersonateInput input) { var userDelegation = await _userDelegationManager.GetAsync(input.UserDelegationId); if (userDelegation.TargetUserId != AbpSession.GetUserId()) { throw new UserFriendlyException("User delegation error."); } return(new ImpersonateOutput { ImpersonationToken = await _impersonationManager.GetImpersonationToken(userDelegation.SourceUserId, userDelegation.TenantId), TenancyName = await GetTenancyNameOrNullAsync(userDelegation.TenantId) }); }
public async Task <ImpersonatedAuthenticateResultModel> DelegatedImpersonatedAuthenticate(long userDelegationId, string impersonationToken) { var result = await _impersonationManager.GetImpersonatedUserAndIdentity(impersonationToken); var userDelegation = await _userDelegationManager.GetAsync(userDelegationId); if (!userDelegation.IsCreatedByUser(result.User.Id)) { throw new UserFriendlyException("User delegation error..."); } var expiration = userDelegation.EndTime.Subtract(Clock.Now); var accessToken = CreateAccessToken(await CreateJwtClaims(result.Identity, result.User, expiration), expiration); return(new ImpersonatedAuthenticateResultModel { AccessToken = accessToken, EncryptedAccessToken = GetEncryptedAccessToken(accessToken), ExpireInSeconds = (int)expiration.TotalSeconds }); }