Skip to content

Commit

Permalink
Merge pull request #21 from masastack/feature/wasm
Browse files Browse the repository at this point in the history
🆕 feat: support wasm
  • Loading branch information
wzh425 authored Sep 10, 2024
2 parents 5efd6c2 + afb54bd commit 6003448
Show file tree
Hide file tree
Showing 90 changed files with 3,173 additions and 16 deletions.
8 changes: 1 addition & 7 deletions Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<MicrosoftPackageVersion Condition="'$(TargetFramework)' == 'net6.0'">6.0.0</MicrosoftPackageVersion>
<MicrosoftPackageVersion Condition="'$(TargetFramework)' == 'net7.0'">7.0.0</MicrosoftPackageVersion>
<MicrosoftPackageVersion Condition="'$(TargetFramework)' == 'net8.0'">8.0.0</MicrosoftPackageVersion>
<MasaFrameworkPackageVersion>1.2.0-preview.2</MasaFrameworkPackageVersion>
<MasaFrameworkPackageVersion>1.2.0-preview.3</MasaFrameworkPackageVersion>

<OpenTelemetryVersion>1.9.0</OpenTelemetryVersion>
<OpenTelemetryContribVersion>1.9.0</OpenTelemetryContribVersion>
Expand All @@ -17,10 +17,4 @@
<CoverletPackageVersion>3.0.2</CoverletPackageVersion>
<MicrosoftTeskSdkPackageVersion>16.9.4</MicrosoftTeskSdkPackageVersion>
</PropertyGroup>

<!--<ItemGroup>
<PackageReference Include="Masa.BuildingBlocks.Ddd.Domain" Version="$(MasaFrameworkPackageVersion)" />
<PackageReference Include="Masa.BuildingBlocks.Data" Version="$(MasaFrameworkPackageVersion)" />
<PackageReference Include="Masa.Contrib.Service.Caller.HttpClient" Version="$(MasaFrameworkPackageVersion)" />
</ItemGroup>-->
</Project>
61 changes: 60 additions & 1 deletion MASA.Stack.Sdks.sln
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,25 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.StackSdks.Pm.T
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.BuildingBlocks.StackSdks.Tsc.Contracts", "src\BuildingBlocks\Tsc\Masa.BuildingBlocks.StackSdks.Tsc.Contracts\Masa.BuildingBlocks.StackSdks.Tsc.Contracts.csproj", "{3712E0BB-946E-43FC-8E38-4E42C24FBA50}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Masa.BuildingBlocks.StackSdks.Base", "src\BuildingBlocks\Masa.BuildingBlocks.StackSdks.Base\Masa.BuildingBlocks.StackSdks.Base.csproj", "{F031FF57-5B4A-4464-83AE-FEDF11104D3F}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Contrib.Wasm", "Contrib.Wasm", "{5D651272-A474-467B-8FAD-FD92FE1295B8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.StackSdks.Config.Wasm", "src\Contrib.Wasm\Masa.Contrib.StackSdks.Config.Wasm\Masa.Contrib.StackSdks.Config.Wasm.csproj", "{7AD38D7B-2DE6-4BF9-B10C-3930B565327B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.StackSdks.Isolation.Wasm", "src\Contrib.Wasm\Masa.Contrib.StackSdks.Isolation.Wasm\Masa.Contrib.StackSdks.Isolation.Wasm.csproj", "{50F1B67A-CE97-4360-AAC6-348E87CF8CA1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.StackSdks.Caller.Wasm", "src\Contrib.Wasm\Masa.Contrib.StackSdks.Caller.Wasm\Masa.Contrib.StackSdks.Caller.Wasm.csproj", "{6EE36620-2A81-4DA5-A250-C83BC6AF461C}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.StackSdks.Dcc.Wasm", "src\Contrib.Wasm\Masa.Contrib.StackSdks.Dcc.Wasm\Masa.Contrib.StackSdks.Dcc.Wasm.csproj", "{F03E359C-F86F-443F-971F-3A32BA3A75A2}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.StackSdks.Auth.Wasm", "src\Contrib.Wasm\Masa.Contrib.StackSdks.Auth.Wasm\Masa.Contrib.StackSdks.Auth.Wasm.csproj", "{6C83F574-8B20-4D38-9356-DDF77326F4B4}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.StackSdks.Pm.Wasm", "src\Contrib.Wasm\Masa.Contrib.StackSdks.Pm.Wasm\Masa.Contrib.StackSdks.Pm.Wasm.csproj", "{99DF687D-F549-4BDD-AD34-985C85DEC606}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.StackSdks.Mc.Wasm", "src\Contrib.Wasm\Masa.Contrib.StackSdks.Mc.Wasm\Masa.Contrib.StackSdks.Mc.Wasm.csproj", "{676212A8-1094-451F-B7D6-1ABC15D6A67F}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.Contrib.StackSdks.Tsc.Wasm", "src\Contrib.Wasm\Masa.Contrib.StackSdks.Tsc.Wasm\Masa.Contrib.StackSdks.Tsc.Wasm.csproj", "{AA18CB28-898E-4E9D-9919-775AF574E9A1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Masa.BuildingBlocks.StackSdks.Base", "src\BuildingBlocks\Masa.BuildingBlocks.StackSdks.Base\Masa.BuildingBlocks.StackSdks.Base.csproj", "{F031FF57-5B4A-4464-83AE-FEDF11104D3F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand Down Expand Up @@ -235,6 +253,38 @@ Global
{3712E0BB-946E-43FC-8E38-4E42C24FBA50}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3712E0BB-946E-43FC-8E38-4E42C24FBA50}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3712E0BB-946E-43FC-8E38-4E42C24FBA50}.Release|Any CPU.Build.0 = Release|Any CPU
{7AD38D7B-2DE6-4BF9-B10C-3930B565327B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7AD38D7B-2DE6-4BF9-B10C-3930B565327B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7AD38D7B-2DE6-4BF9-B10C-3930B565327B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7AD38D7B-2DE6-4BF9-B10C-3930B565327B}.Release|Any CPU.Build.0 = Release|Any CPU
{50F1B67A-CE97-4360-AAC6-348E87CF8CA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{50F1B67A-CE97-4360-AAC6-348E87CF8CA1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{50F1B67A-CE97-4360-AAC6-348E87CF8CA1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{50F1B67A-CE97-4360-AAC6-348E87CF8CA1}.Release|Any CPU.Build.0 = Release|Any CPU
{6EE36620-2A81-4DA5-A250-C83BC6AF461C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6EE36620-2A81-4DA5-A250-C83BC6AF461C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6EE36620-2A81-4DA5-A250-C83BC6AF461C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6EE36620-2A81-4DA5-A250-C83BC6AF461C}.Release|Any CPU.Build.0 = Release|Any CPU
{F03E359C-F86F-443F-971F-3A32BA3A75A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F03E359C-F86F-443F-971F-3A32BA3A75A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F03E359C-F86F-443F-971F-3A32BA3A75A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F03E359C-F86F-443F-971F-3A32BA3A75A2}.Release|Any CPU.Build.0 = Release|Any CPU
{6C83F574-8B20-4D38-9356-DDF77326F4B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6C83F574-8B20-4D38-9356-DDF77326F4B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6C83F574-8B20-4D38-9356-DDF77326F4B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6C83F574-8B20-4D38-9356-DDF77326F4B4}.Release|Any CPU.Build.0 = Release|Any CPU
{99DF687D-F549-4BDD-AD34-985C85DEC606}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{99DF687D-F549-4BDD-AD34-985C85DEC606}.Debug|Any CPU.Build.0 = Debug|Any CPU
{99DF687D-F549-4BDD-AD34-985C85DEC606}.Release|Any CPU.ActiveCfg = Release|Any CPU
{99DF687D-F549-4BDD-AD34-985C85DEC606}.Release|Any CPU.Build.0 = Release|Any CPU
{676212A8-1094-451F-B7D6-1ABC15D6A67F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{676212A8-1094-451F-B7D6-1ABC15D6A67F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{676212A8-1094-451F-B7D6-1ABC15D6A67F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{676212A8-1094-451F-B7D6-1ABC15D6A67F}.Release|Any CPU.Build.0 = Release|Any CPU
{AA18CB28-898E-4E9D-9919-775AF574E9A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AA18CB28-898E-4E9D-9919-775AF574E9A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AA18CB28-898E-4E9D-9919-775AF574E9A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AA18CB28-898E-4E9D-9919-775AF574E9A1}.Release|Any CPU.Build.0 = Release|Any CPU
{F031FF57-5B4A-4464-83AE-FEDF11104D3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F031FF57-5B4A-4464-83AE-FEDF11104D3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F031FF57-5B4A-4464-83AE-FEDF11104D3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand Down Expand Up @@ -285,6 +335,15 @@ Global
{57F819F4-B50A-4E99-BCB4-D9BABDFFEF4F} = {E9F8566C-353D-4B97-98AE-ED0A0D3D00DF}
{639F796D-B15B-443A-8D86-20194466706F} = {E9F8566C-353D-4B97-98AE-ED0A0D3D00DF}
{3712E0BB-946E-43FC-8E38-4E42C24FBA50} = {E05154EB-0EF4-4974-AFDC-DD196BF5A75F}
{5D651272-A474-467B-8FAD-FD92FE1295B8} = {66AAB813-41F7-473D-8A05-4A71F3CA9EC0}
{7AD38D7B-2DE6-4BF9-B10C-3930B565327B} = {5D651272-A474-467B-8FAD-FD92FE1295B8}
{50F1B67A-CE97-4360-AAC6-348E87CF8CA1} = {5D651272-A474-467B-8FAD-FD92FE1295B8}
{6EE36620-2A81-4DA5-A250-C83BC6AF461C} = {5D651272-A474-467B-8FAD-FD92FE1295B8}
{F03E359C-F86F-443F-971F-3A32BA3A75A2} = {5D651272-A474-467B-8FAD-FD92FE1295B8}
{6C83F574-8B20-4D38-9356-DDF77326F4B4} = {5D651272-A474-467B-8FAD-FD92FE1295B8}
{99DF687D-F549-4BDD-AD34-985C85DEC606} = {5D651272-A474-467B-8FAD-FD92FE1295B8}
{676212A8-1094-451F-B7D6-1ABC15D6A67F} = {5D651272-A474-467B-8FAD-FD92FE1295B8}
{AA18CB28-898E-4E9D-9919-775AF574E9A1} = {5D651272-A474-467B-8FAD-FD92FE1295B8}
{F031FF57-5B4A-4464-83AE-FEDF11104D3F} = {CF02987E-1244-4597-9B0D-0971BF9833B2}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
namespace Masa.BuildingBlocks.StackSdks.Auth.Contracts.Model;

public class SecurityTokenModel
{
public string Region { get; set; }

public string AccessKeyId { get; set; }

public string AccessKeySecret { get; set; }

public string StsToken { get; set; }

public string Bucket { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,7 @@ public interface IAuthClient
ICustomLoginService CustomLoginService { get; }

IThirdPartyIdpService ThirdPartyIdpService { get; }

IOssService OssService { get; }
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace Masa.BuildingBlocks.StackSdks.Auth.Service;

public interface IOssService
{
Task<SecurityTokenModel> GetSecurityTokenAsync();
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,4 @@ public interface ITeamService
Task<List<TeamModel>> GetAllAsync(string environment);

Task<List<TeamModel>> GetUserTeamsAsync();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,6 @@ namespace Masa.BuildingBlocks.StackSdks.Dcc;
public interface IDccClient
{
public ILabelService LabelService { get; }

public IOpenApiService OpenApiService { get; }
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace Masa.BuildingBlocks.StackSdks.Dcc.Service;

public interface IOpenApiService
{
Task<T> GetPublicConfigAsync<T>(string configObject, string environment = "", string cluster = "") where T : class, new();
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,8 @@
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Masa.BuildingBlocks.Data.Contracts" Version="$(MasaFrameworkPackageVersion)" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// Copyright (c) MASA Stack All rights reserved.
// Licensed under the MIT License. See LICENSE.txt in the project root for license information.

global using Masa.BuildingBlocks.Data.Contracts;
global using Masa.BuildingBlocks.StackSdks.Config;
global using Masa.BuildingBlocks.StackSdks.Config.Models;
global using System.Security.Cryptography;
global using System.Text;
global using System.Text;
36 changes: 36 additions & 0 deletions src/Contrib.Wasm/Masa.Contrib.StackSdks.Auth.Wasm/AuthClient.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// Copyright (c) MASA Stack All rights reserved.
// Licensed under the MIT License. See LICENSE.txt in the project root for license information.

namespace Masa.Contrib.StackSdks.Auth;

public class AuthClient : IAuthClient
{
public AuthClient(ICaller caller, IMultiEnvironmentUserContext userContext)
{
UserService = new UserService(caller, userContext);
SubjectService = new SubjectService(caller);
TeamService = new TeamService(caller, userContext);
ProjectService = new ProjectService(caller, userContext);
PermissionService = new PermissionService(caller, userContext);
CustomLoginService = new CustomLoginService(caller);
ThirdPartyIdpService = new ThirdPartyIdpService(caller);
OssService = new OssService(caller);
}

public IUserService UserService { get; }

public ISubjectService SubjectService { get; }

public ITeamService TeamService { get; }

public IPermissionService PermissionService { get; }

public IProjectService ProjectService { get; }

public ICustomLoginService CustomLoginService { get; }

public IThirdPartyIdpService ThirdPartyIdpService { get; }

public IOssService OssService { get; }
}

12 changes: 12 additions & 0 deletions src/Contrib.Wasm/Masa.Contrib.StackSdks.Auth.Wasm/Constants.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// Copyright (c) MASA Stack All rights reserved.
// Licensed under the MIT License. See LICENSE.txt in the project root for license information.

namespace Masa.Contrib.StackSdks.Auth;

public static class Constants
{
public const string DEFAULT_CLIENT_NAME = "masa.contrib.basicability.auth";
public const string DEFAULT_SSO_CLIENT_NAME = "masa.contrib.basicability.auth.sso";
public const string DEFAULT_SUBSCRIBE_KEY_PREFIX = "masa.auth:";
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="IdentityModel" Version="$(IdentityModelPackageVersion)" />
<PackageReference Include="Masa.BuildingBlocks.Authentication.OpenIdConnect.Models" Version="$(MasaFrameworkPackageVersion)" />
<PackageReference Include="Masa.BuildingBlocks.Authentication.Identity" Version="$(MasaFrameworkPackageVersion)" />
<ProjectReference Include="..\..\BuildingBlocks\Auth\Masa.BuildingBlocks.StackSdks.Auth\Masa.BuildingBlocks.StackSdks.Auth.csproj" />
<ProjectReference Include="..\Masa.Contrib.StackSdks.Caller.Wasm\Masa.Contrib.StackSdks.Caller.Wasm.csproj" />
<ProjectReference Include="..\Masa.Contrib.StackSdks.Isolation.Wasm\Masa.Contrib.StackSdks.Isolation.Wasm.csproj" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
// Copyright (c) MASA Stack All rights reserved.
// Licensed under the MIT License. See LICENSE.txt in the project root for license information.

namespace Masa.Contrib.StackSdks.Auth.Service;

public class CustomLoginService : ICustomLoginService
{
readonly ICaller _caller;

public CustomLoginService(ICaller caller)
{
_caller = caller;
}

public async Task<CustomLoginModel?> GetCustomLoginByClientIdAsync(string environment, string clientId)
{
var requestUri = $"api/sso/customLogin/getByClientId";
return await _caller.GetAsync<object, CustomLoginModel>(requestUri, new { environment, clientId });
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
// Copyright (c) MASA Stack All rights reserved.
// Licensed under the MIT License. See LICENSE.txt in the project root for license information.

namespace Masa.Contrib.StackSdks.Auth.Service;

public class LoginService : ILoginService
{
readonly IHttpClientFactory _httpClientFactory;

public LoginService(IHttpClientFactory httpClientFactory)
{
_httpClientFactory = httpClientFactory;
}

public async Task<TokenModel> LoginByPasswordAsync(LoginByPasswordModel login)
{
var httpClient = CreateHttpClient();
var request = new PasswordTokenRequest()
{
ClientId = login.ClientId,
ClientSecret = login.ClientSecret,
GrantType = GrantType.RESOURCE_OWNER_PASSWORD,
UserName = login.Account,
Password = login.Password,
Scope = string.Join(' ', login.Scope),
};
var tokenResponse = await httpClient.RequestPasswordTokenAsync(request);

return ToModel(tokenResponse);
}

public async Task<TokenModel> LoginByPhoneNumberAsync(LoginByPhoneNumberFromSsoModel login)
{
var client = CreateHttpClient();

var paramter = new Dictionary<string, string>
{
["client_Id"] = login.ClientId,
["client_secret"] = login.ClientSecret,
["grant_type"] = GrantType.PHONE_CODE,
["scope"] = string.Join(' ', login.Scope),
["PhoneNumber"] = login.PhoneNumber,
["code"] = login.Code
};

var tokenResponse = await RequestTokenRawAsync(client, paramter);

return ToModel(tokenResponse);
}

public async Task<LoginByThirdPartyIdpResultModel> LoginByThirdPartyIdpAsync(LoginByThirdPartyIdpModel login)
{
var client = CreateHttpClient();

var paramter = new Dictionary<string, string>
{
["client_Id"] = login.ClientId,
["client_secret"] = login.ClientSecret,
["grant_type"] = GrantType.THIRD_PARTY_IDP,
["scope"] = string.Join(' ', login.Scope),
["scheme"] = login.Scheme,
["code"] = login.Code ?? "",
["idToken"] = login.IdToken ?? "",
};

var tokenResponse = await RequestTokenRawAsync(client, paramter);
var tokenModel = ToModel(tokenResponse);
var thirdPartyUser = tokenResponse.Json.GetProperty("thirdPartyUserData").Deserialize<ThirdPartyIdentityModel>();
var registerSuccess = tokenResponse.Json.TryGetBoolean("registerSuccess");

return new LoginByThirdPartyIdpResultModel
{
ThirdPartyIdpLoginResultType = registerSuccess is true ? ThirdPartyIdpLoginResultTypes.Success : ThirdPartyIdpLoginResultTypes.NotRegister,
Token = tokenModel,
ThirdPartyIdentity = thirdPartyUser
};
}

public async Task<TokenModel> LoginByLdapAsync(LoginByLdapModel login)
{
var client = CreateHttpClient();

var paramter = new Dictionary<string, string>
{
["client_Id"] = login.ClientId,
["client_secret"] = login.ClientSecret,
["grant_type"] = GrantType.LDAP,
["scope"] = string.Join(' ', login.Scope),
["userName"] = login.UserName,
["scheme"] = login.Scheme
};

var tokenResponse = await RequestTokenRawAsync(client, paramter);

return ToModel(tokenResponse);
}

HttpClient CreateHttpClient()
{
return _httpClientFactory.CreateClient(DEFAULT_SSO_CLIENT_NAME);
}

static async Task<DiscoveryDocumentResponse> GetDiscoveryDocumentAsync(HttpClient httpClient)
{
var disco = await httpClient.GetDiscoveryDocumentAsync();
if (disco.IsError)
throw new UserFriendlyException(disco.Error);

return disco;
}

static async Task<TokenResponse> RequestTokenRawAsync(HttpClient httpClient, Dictionary<string, string> paramter)
{
var disco = await GetDiscoveryDocumentAsync(httpClient);
var tokenResponse = await httpClient.RequestTokenRawAsync(disco.TokenEndpoint, new Parameters(paramter));

return tokenResponse;
}

static TokenModel ToModel(TokenResponse tokenResponse)
{
if (tokenResponse.IsError)
throw new UserFriendlyException(tokenResponse.Error);

return new TokenModel
{
AccessToken = tokenResponse.AccessToken,
IdentityToken = tokenResponse.IdentityToken,
RefreshToken = tokenResponse.RefreshToken,
ExpiresIn = tokenResponse.ExpiresIn,
};
}
}
Loading

0 comments on commit 6003448

Please sign in to comment.