Skip to content
This repository was archived by the owner on Feb 3, 2026. It is now read-only.

Commit 7babd6f

Browse files
authored
[AUTH-6] Use auth-service endpoints for auth-related requests (#317)
<!-- Copy the TICKETID for this task from Jira and add it to the PR name in brackets --> <!-- PR name should look like: [TICKETID] My Pull Request --> <!-- Add link for the ticket here editing the TICKETID--> ## [AUTH-6](https://ready-player-me.atlassian.net/browse/AUTH-6) ## Description - Switched from old authentication endpoints to the new ones in auth-service <!-- Fill the section below with Added, Updated and Removed information. --> <!-- If there is no item under one of the lists remove it's title. --> <!-- Testability --> ## How to Test - Use the Avatar Creator Wizard functionality and verify it works: - Log in with email code - Sign up when clicking Next in the editor <!-- Update your progress with the task here --> ## Checklist - [ ] Tests written or updated for the changes. - [ ] Documentation is updated. - [ ] Changelog is updated. <!--- Remember to copy the Changes Section into the commit message when you close the PR --> [AUTH-6]: https://ready-player-me.atlassian.net/browse/AUTH-6?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
1 parent 187b28d commit 7babd6f

File tree

7 files changed

+68
-18
lines changed

7 files changed

+68
-18
lines changed

Runtime/AvatarCreator/Scripts/Data/Constants/AuthConstants.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@
33
public static class AuthConstants
44
{
55
public const string EMAIL = "email";
6-
public const string AUTH_TYPE = "authType";
7-
public const string AUTH_TYPE_CODE = "code";
8-
public const string AUTH_TYPE_PASSWORD = "password";
6+
public const string CODE = "code";
97
public const string TOKEN = "token";
108
public const string REFRESH_TOKEN = "refreshToken";
119
public const string USER_ID = "id";
10+
public const string APP_NAME = "appName";
1211
}
1312
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
namespace ReadyPlayerMe.AvatarCreator
2+
{
3+
public struct CreatedUser
4+
{
5+
public string Id;
6+
public string Name;
7+
public string Email;
8+
public string Token;
9+
public string RefreshToken;
10+
public string LastModifiedAvatarId;
11+
}
12+
}
13+

Runtime/AvatarCreator/Scripts/Data/UserSession.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,16 @@ public struct UserSession
1111
public string Token;
1212
public string RefreshToken;
1313
public string LastModifiedAvatarId;
14+
15+
public UserSession(CreatedUser createdUser)
16+
{
17+
Id = createdUser.Id;
18+
Name = createdUser.Name;
19+
Email = createdUser.Email;
20+
Token = createdUser.Token;
21+
RefreshToken = createdUser.RefreshToken;
22+
LastModifiedAvatarId = createdUser.LastModifiedAvatarId;
23+
}
1424
}
1525
}
26+

Runtime/AvatarCreator/Scripts/JsonConverters/AuthDataConverter.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,30 @@ public static class AuthDataConverter
99
private const string DATA = "data";
1010

1111
public static string CreatePayload(Dictionary<string, string> data)
12+
{
13+
return JObject.FromObject(data).ToString();
14+
}
15+
16+
public static string CreateDataPayload(Dictionary<string, string> data)
1217
{
1318
return new JObject(
1419
new JProperty(DATA, JObject.FromObject(data))
1520
).ToString();
1621
}
1722

1823
public static JToken ParseResponse(string response)
24+
{
25+
var json = JObject.Parse(response);
26+
27+
if (json == null)
28+
{
29+
throw new Exception("No data received");
30+
}
31+
32+
return json;
33+
}
34+
35+
public static JToken ParseDataResponse(string response)
1936
{
2037
var json = JObject.Parse(response);
2138
var data = json.GetValue(DATA);

Runtime/AvatarCreator/Scripts/WebRequests/AuthAPIRequests.cs

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class AuthAPIRequests
2525
private readonly string domain;
2626
private readonly IDictionary<string, string> headers = CommonHeaders.GetHeadersWithAppId();
2727
private readonly string rpmAuthBaseUrl;
28+
private readonly string appName;
2829

2930
private readonly WebRequestDispatcher webRequestDispatcher;
3031

@@ -33,24 +34,33 @@ public AuthAPIRequests(string domain)
3334
this.domain = domain;
3435
webRequestDispatcher = new WebRequestDispatcher();
3536

36-
rpmAuthBaseUrl = string.Format(Env.RPM_SUBDOMAIN_BASE_URL, domain);
37+
rpmAuthBaseUrl = Env.RPM_API_V1_BASE_URL;
38+
appName = CoreSettingsHandler.CoreSettings.Subdomain;
3739
}
3840

3941
public async Task<UserSession> LoginAsAnonymous(CancellationToken cancellationToken = default)
4042
{
41-
var response = await webRequestDispatcher.SendRequest<ResponseText>($"{rpmAuthBaseUrl}/users", HttpMethod.POST, headers, ctx:cancellationToken);
43+
var payload = JsonConvert.SerializeObject(new {
44+
data = new {
45+
appName = appName,
46+
requestToken = true
47+
}
48+
});
49+
50+
var response = await webRequestDispatcher.SendRequest<ResponseText>($"{rpmAuthBaseUrl}users", HttpMethod.POST, headers, payload, ctx:cancellationToken);
4251
response.ThrowIfError();
4352

44-
var data = AuthDataConverter.ParseResponse(response.Text);
45-
return JsonConvert.DeserializeObject<UserSession>(data!.ToString());
53+
var data = AuthDataConverter.ParseDataResponse(response.Text);
54+
var createdUser = JsonConvert.DeserializeObject<CreatedUser>(data!.ToString());
55+
56+
return new UserSession(createdUser);
4657
}
4758

4859
public async Task SendCodeToEmail(string email, string userId = "",CancellationToken cancellationToken = default)
4960
{
5061
var data = new Dictionary<string, string>
5162
{
5263
{ AuthConstants.EMAIL, email },
53-
{ AuthConstants.AUTH_TYPE, AuthConstants.AUTH_TYPE_CODE }
5464
};
5565

5666
if (!string.IsNullOrEmpty(userId))
@@ -60,23 +70,24 @@ public async Task SendCodeToEmail(string email, string userId = "",CancellationT
6070

6171
var payload = AuthDataConverter.CreatePayload(data);
6272

63-
var response = await webRequestDispatcher.SendRequest<ResponseText>($"{rpmAuthBaseUrl}/auth/start", HttpMethod.POST, headers, payload, ctx:cancellationToken);
73+
var response = await webRequestDispatcher.SendRequest<ResponseText>($"{rpmAuthBaseUrl}auth/request-login-code", HttpMethod.POST, headers, payload, ctx:cancellationToken);
6474
response.ThrowIfError();
6575
}
6676

6777
public async Task<UserSession> LoginWithCode(string code, string userIdToMerge = null, CancellationToken cancellationToken = default)
6878
{
6979
var body = new Dictionary<string, string>
7080
{
71-
{ AuthConstants.AUTH_TYPE_CODE, code }
81+
{ AuthConstants.CODE, code },
82+
{ AuthConstants.APP_NAME, appName }
7283
};
7384
if (userIdToMerge != null)
7485
{
7586
body.Add(AuthConstants.USER_ID, userIdToMerge);
7687
}
7788
var payload = AuthDataConverter.CreatePayload(body);
7889

79-
var response = await webRequestDispatcher.SendRequest<ResponseText>($"{rpmAuthBaseUrl}/auth/login", HttpMethod.POST, headers, payload, ctx:cancellationToken);
90+
var response = await webRequestDispatcher.SendRequest<ResponseText>($"{rpmAuthBaseUrl}auth/login", HttpMethod.POST, headers, payload, ctx:cancellationToken);
8091
response.ThrowIfError();
8192

8293
var data = AuthDataConverter.ParseResponse(response.Text);
@@ -88,12 +99,11 @@ public async Task Signup(string email, string userId, CancellationToken cancella
8899
var data = new Dictionary<string, string>
89100
{
90101
{ AuthConstants.EMAIL, email },
91-
{ AuthConstants.AUTH_TYPE, AuthConstants.AUTH_TYPE_PASSWORD },
92102
{ AuthConstants.USER_ID, userId }
93103
};
94104

95105
var payload = AuthDataConverter.CreatePayload(data);
96-
var response = await webRequestDispatcher.SendRequest<ResponseText>($"{rpmAuthBaseUrl}/auth/start", HttpMethod.POST, headers, payload, ctx:cancellationToken);
106+
var response = await webRequestDispatcher.SendRequest<ResponseText>($"{rpmAuthBaseUrl}auth/signup/passwordless", HttpMethod.POST, headers, payload, ctx:cancellationToken);
97107
response.ThrowIfError();
98108
}
99109

@@ -114,18 +124,16 @@ public async Task<RefreshTokenResponse> GetRefreshToken(string token, string ref
114124

115125
private async Task<JToken> RefreshRequest(string token, string refreshToken, CancellationToken cancellationToken)
116126
{
117-
var url = $"{rpmAuthBaseUrl}/auth/refresh";
118-
119127
var payload = AuthDataConverter.CreatePayload(new Dictionary<string, string>
120128
{
121129
{ AuthConstants.TOKEN, token },
122130
{ AuthConstants.REFRESH_TOKEN, refreshToken }
123131
});
124132

125-
var response = await webRequestDispatcher.SendRequest<ResponseText>(url, HttpMethod.POST, headers, payload, ctx:cancellationToken);
133+
var response = await webRequestDispatcher.SendRequest<ResponseText>($"{rpmAuthBaseUrl}auth/refresh", HttpMethod.POST, headers, payload, ctx:cancellationToken);
126134
response.ThrowIfError();
127135

128-
return AuthDataConverter.ParseResponse(response.Text);
136+
return AuthDataConverter.ParseDataResponse(response.Text);
129137
}
130138
}
131139
}

Runtime/AvatarCreator/Scripts/WebRequests/AvatarAPIRequests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public async Task<AvatarProperties> CreateFromTemplateAvatar(string templateId,
8181
{ BODY_TYPE, CoreSettingsHandler.CoreSettings.BodyType.GetDescription() }
8282
};
8383

84-
var payload = AuthDataConverter.CreatePayload(payloadData);
84+
var payload = AuthDataConverter.CreateDataPayload(payloadData);
8585

8686
var response = await authorizedRequest.SendRequest<ResponseText>(
8787
new RequestData

Samples~/AvatarCreatorSamples/AvatarCreatorWizard/Scripts/UI/SelectionScreens/AvatarCreatorSelection.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public override void ActivateState()
4343
{
4444
saveButton.onClick.AddListener(OnSaveButton);
4545
signupElement.OnContinueWithoutSignup.AddListener(Save);
46+
signupElement.OnSendEmail.AddListener(OnSendEmail);
4647
categoryUICreator.OnCategorySelected += OnCategorySelected;
4748
Setup();
4849
}
@@ -51,6 +52,7 @@ public override void DeactivateState()
5152
{
5253
saveButton.onClick.RemoveListener(OnSaveButton);
5354
signupElement.OnContinueWithoutSignup.RemoveListener(Save);
55+
signupElement.OnSendEmail.RemoveListener(OnSendEmail);
5456
categoryUICreator.OnCategorySelected -= OnCategorySelected;
5557
Cleanup();
5658
}

0 commit comments

Comments
 (0)