Skip to content

Commit c48e6b2

Browse files
committed
Added Identifier Client
1 parent cc15c73 commit c48e6b2

File tree

19 files changed

+591
-95
lines changed

19 files changed

+591
-95
lines changed

src/CodeBeam.UltimateAuth.Client/Extensions/UltimateAuthClientServiceCollectionExtensions.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,10 +97,11 @@ private static IServiceCollection AddUltimateAuthClientInternal(this IServiceCol
9797
o.Refresh.Interval ??= TimeSpan.FromMinutes(5);
9898
});
9999

100-
services.AddScoped<IUAuthRequestClient, UAuthRequestClient>();
101-
services.AddScoped<IUAuthClient, UAuthClient>();
102-
services.AddScoped<IFlowClient, DefaultFlowClient>();
100+
services.TryAddScoped<IUAuthRequestClient, UAuthRequestClient>();
101+
services.TryAddScoped<IUAuthClient, UAuthClient>();
102+
services.TryAddScoped<IFlowClient, DefaultFlowClient>();
103103
services.TryAddScoped<IUserClient, DefaultUserClient>();
104+
services.TryAddScoped<IUserIdentifierClient, DefaultUserIdentifierClient>();
104105

105106
services.AddScoped<ISessionCoordinator>(sp =>
106107
{

src/CodeBeam.UltimateAuth.Client/Services/DefaultUserClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public async Task<UAuthResult<UserCreateResult>> CreateAsync(CreateUserRequest r
4141

4242
public async Task<UAuthResult<UserStatusChangeResult>> ChangeStatusSelfAsync(ChangeUserStatusSelfRequest request)
4343
{
44-
var url = UAuthUrlBuilder.Combine(_options.Endpoints.Authority, $"/users/status");
44+
var url = UAuthUrlBuilder.Combine(_options.Endpoints.Authority, $"/users/me/status");
4545
var raw = await _request.SendJsonAsync(url, request);
4646
return UAuthResultMapper.FromJson<UserStatusChangeResult>(raw);
4747
}
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
using CodeBeam.UltimateAuth.Client.Infrastructure;
2+
using CodeBeam.UltimateAuth.Client.Options;
3+
using CodeBeam.UltimateAuth.Core.Contracts;
4+
using CodeBeam.UltimateAuth.Core.Domain;
5+
using CodeBeam.UltimateAuth.Users.Contracts;
6+
using Microsoft.Extensions.Options;
7+
8+
namespace CodeBeam.UltimateAuth.Client.Services
9+
{
10+
public class DefaultUserIdentifierClient : IUserIdentifierClient
11+
{
12+
private readonly IUAuthRequestClient _request;
13+
private readonly UAuthClientOptions _options;
14+
15+
public DefaultUserIdentifierClient(IUAuthRequestClient request, IOptions<UAuthClientOptions> options)
16+
{
17+
_request = request;
18+
_options = options.Value;
19+
}
20+
21+
public async Task<UAuthResult> AddSelfAsync(AddUserIdentifierRequest request)
22+
{
23+
var url = UAuthUrlBuilder.Combine(_options.Endpoints.Authority, $"/users/me/identifiers/add");
24+
var raw = await _request.SendJsonAsync(url, request);
25+
return UAuthResultMapper.FromStatus(raw);
26+
}
27+
28+
public async Task<UAuthResult> UpdateSelfAsync(UpdateUserIdentifierRequest request)
29+
{
30+
var url = UAuthUrlBuilder.Combine(_options.Endpoints.Authority, $"/users/me/identifiers/update");
31+
var raw = await _request.SendJsonAsync(url, request);
32+
return UAuthResultMapper.FromStatus(raw);
33+
}
34+
35+
public async Task<UAuthResult> SetPrimarySelfAsync(SetPrimaryUserIdentifierRequest request)
36+
{
37+
var url = UAuthUrlBuilder.Combine(_options.Endpoints.Authority, $"/users/me/identifiers/set-primary");
38+
var raw = await _request.SendJsonAsync(url, request);
39+
return UAuthResultMapper.FromStatus(raw);
40+
}
41+
42+
public async Task<UAuthResult> UnsetPrimarySelfAsync(UnsetPrimaryUserIdentifierRequest request)
43+
{
44+
var url = UAuthUrlBuilder.Combine(_options.Endpoints.Authority, $"/users/me/identifiers/unset-primary");
45+
var raw = await _request.SendJsonAsync(url, request);
46+
return UAuthResultMapper.FromStatus(raw);
47+
}
48+
49+
public async Task<UAuthResult> VerifySelfAsync(VerifyUserIdentifierRequest request)
50+
{
51+
var url = UAuthUrlBuilder.Combine(_options.Endpoints.Authority, $"/users/me/identifiers/verify");
52+
var raw = await _request.SendJsonAsync(url, request);
53+
return UAuthResultMapper.FromStatus(raw);
54+
}
55+
56+
public async Task<UAuthResult> DeleteSelfAsync(DeleteUserIdentifierRequest request)
57+
{
58+
var url = UAuthUrlBuilder.Combine(_options.Endpoints.Authority, $"/users/me/identifiers/delete");
59+
var raw = await _request.SendJsonAsync(url, request);
60+
return UAuthResultMapper.FromStatus(raw);
61+
}
62+
63+
public async Task<UAuthResult> AddAdminAsync(UserKey userKey, AddUserIdentifierRequest request)
64+
{
65+
var url = UAuthUrlBuilder.Combine(_options.Endpoints.Authority, $"/admin/users/{userKey}/identifiers/add");
66+
var raw = await _request.SendJsonAsync(url, request);
67+
return UAuthResultMapper.FromStatus(raw);
68+
}
69+
70+
public async Task<UAuthResult> UpdateAdminAsync(UserKey userKey, UpdateUserIdentifierRequest request)
71+
{
72+
var url = UAuthUrlBuilder.Combine(_options.Endpoints.Authority, $"/admin/users/{userKey}/identifiers/update");
73+
var raw = await _request.SendJsonAsync(url, request);
74+
return UAuthResultMapper.FromStatus(raw);
75+
}
76+
77+
public async Task<UAuthResult> SetPrimaryAdminAsync(UserKey userKey, SetPrimaryUserIdentifierRequest request)
78+
{
79+
var url = UAuthUrlBuilder.Combine(_options.Endpoints.Authority, $"/admin/users/{userKey}/identifiers/set-primary");
80+
var raw = await _request.SendJsonAsync(url, request);
81+
return UAuthResultMapper.FromStatus(raw);
82+
}
83+
84+
public async Task<UAuthResult> UnsetPrimaryAdminAsync(UserKey userKey, UnsetPrimaryUserIdentifierRequest request)
85+
{
86+
var url = UAuthUrlBuilder.Combine(_options.Endpoints.Authority, $"/admin/users/{userKey}/identifiers/unset-primary");
87+
var raw = await _request.SendJsonAsync(url, request);
88+
return UAuthResultMapper.FromStatus(raw);
89+
}
90+
91+
public async Task<UAuthResult> VerifyAdminAsync(UserKey userKey, VerifyUserIdentifierRequest request)
92+
{
93+
var url = UAuthUrlBuilder.Combine(_options.Endpoints.Authority, $"/admin/users/{userKey}/identifiers/verify");
94+
var raw = await _request.SendJsonAsync(url, request);
95+
return UAuthResultMapper.FromStatus(raw);
96+
}
97+
98+
public async Task<UAuthResult> DeleteAdminAsync(UserKey userKey, DeleteUserIdentifierRequest request)
99+
{
100+
var url = UAuthUrlBuilder.Combine(_options.Endpoints.Authority, $"/admin/users/{userKey}/identifiers/delete");
101+
var raw = await _request.SendJsonAsync(url, request);
102+
return UAuthResultMapper.FromStatus(raw);
103+
}
104+
105+
}
106+
}

src/CodeBeam.UltimateAuth.Client/Services/IUAuthClient.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ public interface IUAuthClient
66
{
77
IFlowClient Flows { get; }
88
IUserClient Users { get; }
9+
IUserIdentifierClient Identifiers { get; }
910
}
1011
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using CodeBeam.UltimateAuth.Core.Contracts;
2+
using CodeBeam.UltimateAuth.Core.Domain;
3+
using CodeBeam.UltimateAuth.Users.Contracts;
4+
5+
namespace CodeBeam.UltimateAuth.Client.Services
6+
{
7+
public interface IUserIdentifierClient
8+
{
9+
Task<UAuthResult> AddSelfAsync(AddUserIdentifierRequest request);
10+
Task<UAuthResult> UpdateSelfAsync(UpdateUserIdentifierRequest request);
11+
Task<UAuthResult> SetPrimarySelfAsync(SetPrimaryUserIdentifierRequest request);
12+
Task<UAuthResult> UnsetPrimarySelfAsync(UnsetPrimaryUserIdentifierRequest request);
13+
Task<UAuthResult> VerifySelfAsync(VerifyUserIdentifierRequest request);
14+
Task<UAuthResult> DeleteSelfAsync(DeleteUserIdentifierRequest request);
15+
16+
Task<UAuthResult> AddAdminAsync(UserKey userKey, AddUserIdentifierRequest request);
17+
Task<UAuthResult> UpdateAdminAsync(UserKey userKey, UpdateUserIdentifierRequest request);
18+
Task<UAuthResult> SetPrimaryAdminAsync(UserKey userKey, SetPrimaryUserIdentifierRequest request);
19+
Task<UAuthResult> UnsetPrimaryAdminAsync(UserKey userKey, UnsetPrimaryUserIdentifierRequest request);
20+
Task<UAuthResult> VerifyAdminAsync(UserKey userKey, VerifyUserIdentifierRequest request);
21+
Task<UAuthResult> DeleteAdminAsync(UserKey userKey, DeleteUserIdentifierRequest request);
22+
}
23+
}

src/CodeBeam.UltimateAuth.Client/Services/UAuthClient.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ internal sealed class UAuthClient : IUAuthClient
66
{
77
public IFlowClient Flows { get; }
88
public IUserClient Users { get; }
9+
public IUserIdentifierClient Identifiers { get; }
910

10-
public UAuthClient(IFlowClient flows, IUserClient users)
11+
public UAuthClient(IFlowClient flows, IUserClient users, IUserIdentifierClient identifiers)
1112
{
1213
Flows = flows;
1314
Users = users;
15+
Identifiers = identifiers;
1416
}
1517
}

src/CodeBeam.UltimateAuth.Server/Defaults/UAuthActions.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ public static class UAuthActions
55
public static class Users
66
{
77
public const string Create = "users.create";
8-
public const string Delete = "users.delete";
8+
public const string DeleteAdmin = "users.delete.admin";
99
public const string ChangeStatusSelf = "users.status.change.self";
1010
public const string ChangeStatusAdmin = "users.status.change.admin";
1111
}
@@ -21,9 +21,18 @@ public static class UserProfiles
2121
public static class UserIdentifiers
2222
{
2323
public const string Get = "users.identifiers.get";
24-
public const string Change = "users.identifiers.change";
25-
public const string Verify = "users.identifiers.verify";
26-
public const string Delete = "users.identifiers.delete";
24+
public const string AddSelf = "users.identifiers.add.self";
25+
public const string AddAdmin = "users.identifiers.add.admin";
26+
public const string UpdateSelf = "users.identifiers.update.self";
27+
public const string UpdateAdmin = "users.identifiers.update.admin";
28+
public const string SetPrimarySelf = "users.identifiers.setprimary.self";
29+
public const string SetPrimaryAdmin = "users.identifiers.setprimary.admin";
30+
public const string UnsetPrimarySelf = "users.identifiers.unsetprimary.self";
31+
public const string UnsetPrimaryAdmin = "users.identifiers.unsetprimary.admin";
32+
public const string VerifySelf = "users.identifiers.verify.self";
33+
public const string VerifyAdmin = "users.identifiers.verify.admin";
34+
public const string DeleteSelf = "users.identifiers.delete.self";
35+
public const string DeleteAdmin = "users.identifiers.delete.admin";
2736
}
2837

2938
public static class Credentials

src/CodeBeam.UltimateAuth.Server/Endpoints/Abstractions/IUserEndpointHandler.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,25 @@ public interface IUserEndpointHandler
88
Task<IResult> CreateAsync(HttpContext ctx);
99
Task<IResult> ChangeStatusSelfAsync(HttpContext ctx);
1010
Task<IResult> ChangeStatusAdminAsync(UserKey userKey, HttpContext ctx);
11-
Task<IResult> DeleteAsync(HttpContext ctx);
11+
Task<IResult> DeleteAsync(UserKey userKey, HttpContext ctx);
1212

1313
Task<IResult> GetMeAsync(HttpContext ctx);
1414
Task<IResult> UpdateMeAsync(HttpContext ctx);
1515

1616
Task<IResult> GetUserAsync(UserKey userKey, HttpContext ctx);
1717
Task<IResult> UpdateUserAsync(UserKey userKey, HttpContext ctx);
18+
19+
Task<IResult> AddUserIdentifierSelfAsync(HttpContext ctx);
20+
Task<IResult> UpdateUserIdentifierSelfAsync(HttpContext ctx);
21+
Task<IResult> SetPrimaryUserIdentifierSelfAsync(HttpContext ctx);
22+
Task<IResult> UnsetPrimaryUserIdentifierSelfAsync(HttpContext ctx);
23+
Task<IResult> VerifyUserIdentifierSelfAsync(HttpContext ctx);
24+
Task<IResult> DeleteUserIdentifierSelfAsync(HttpContext ctx);
25+
26+
Task<IResult> AddUserIdentifierAdminAsync(UserKey userKey, HttpContext ctx);
27+
Task<IResult> UpdateUserIdentifierAdminAsync(UserKey userKey, HttpContext ctx);
28+
Task<IResult> SetPrimaryUserIdentifierAdminAsync(UserKey userKey, HttpContext ctx);
29+
Task<IResult> UnsetPrimaryUserIdentifierAdminAsync(UserKey userKey, HttpContext ctx);
30+
Task<IResult> VerifyUserIdentifierAdminAsync(UserKey userKey, HttpContext ctx);
31+
Task<IResult> DeleteUserIdentifierAdminAsync(UserKey userKey, HttpContext ctx);
1832
}

0 commit comments

Comments
 (0)