diff --git a/src/IdServer/SimpleIdServer.IdServer.Fido/Apis/U2FRegisterController.cs b/src/IdServer/SimpleIdServer.IdServer.Fido/Apis/U2FRegisterController.cs index ddbabc83a..514c8ca08 100644 --- a/src/IdServer/SimpleIdServer.IdServer.Fido/Apis/U2FRegisterController.cs +++ b/src/IdServer/SimpleIdServer.IdServer.Fido/Apis/U2FRegisterController.cs @@ -21,6 +21,7 @@ using SimpleIdServer.IdServer.UI; using System.Security.Claims; using System.Text; +using static MassTransit.ValidationResultExtensions; namespace SimpleIdServer.IdServer.Fido.Apis { @@ -141,6 +142,23 @@ public async Task End([FromRoute] string prefix, [FromBody] EndU2 }, cancellationToken: cancellationToken); user.AddFidoCredential(sessionRecord.CredentialType, success.Result); + if (request.DeviceData != null) + { + user.Devices.Add(new UserDevice + { + CreateDateTime = DateTime.UtcNow, + DeviceType = request.DeviceData.DeviceType, + Id = Guid.NewGuid().ToString(), + Manufacturer = request.DeviceData.Manufacturer, + Model = request.DeviceData.Model, + Name = request.DeviceData.Name, + PushToken = request.DeviceData.PushToken, + PushType = request.DeviceData.PushType, + Version = request.DeviceData.Version + }); + user.NotificationMode = request.DeviceData.PushType ?? "console"; + } + sessionRecord.IsValidated = true; await _distributedCache.SetStringAsync(request.SessionId, System.Text.Json.JsonSerializer.Serialize(sessionRecord), new DistributedCacheEntryOptions { @@ -164,23 +182,6 @@ User BuildUser() if (_idServerHostOptions.IsEmailUsedDuringAuthentication) user.Email = login; } - if (request.DeviceData != null) - { - result.Devices.Add(new UserDevice - { - CreateDateTime = DateTime.UtcNow, - DeviceType = request.DeviceData.DeviceType, - Id = Guid.NewGuid().ToString(), - Manufacturer = request.DeviceData.Manufacturer, - Model = request.DeviceData.Model, - Name = request.DeviceData.Name, - PushToken = request.DeviceData.PushToken, - PushType = request.DeviceData.PushType, - Version = request.DeviceData.Version - }); - result.NotificationMode = request.DeviceData.PushType ?? "console"; - } - return result; } diff --git a/src/IdServer/SimpleIdServer.IdServer.Startup/Program.cs b/src/IdServer/SimpleIdServer.IdServer.Startup/Program.cs index 81b8fb45c..a3313e811 100644 --- a/src/IdServer/SimpleIdServer.IdServer.Startup/Program.cs +++ b/src/IdServer/SimpleIdServer.IdServer.Startup/Program.cs @@ -380,7 +380,14 @@ void SeedData(WebApplication application, string scimBaseUrl) dbContext.CertificateAuthorities.AddRange(SimpleIdServer.IdServer.Startup.IdServerConfiguration.CertificateAuthorities); if (!dbContext.PresentationDefinitions.Any()) - dbContext.PresentationDefinitions.AddRange(SimpleIdServer.IdServer.Startup.IdServerConfiguration.PresentationDefinitions); + { + foreach(var processDefinition in SimpleIdServer.IdServer.Startup.IdServerConfiguration.PresentationDefinitions) + { + var realm = dbContext.Realms.Single(r => r.Name == processDefinition.Realm.Name); + processDefinition.Realm = realm; + dbContext.PresentationDefinitions.Add(processDefinition); + } + } if (!dbContext.Acrs.Any()) { diff --git a/src/IdServer/SimpleIdServer.IdServer/Api/ApiResources/ApiResourcesController.cs b/src/IdServer/SimpleIdServer.IdServer/Api/ApiResources/ApiResourcesController.cs index 12ce061a7..1469bc726 100644 --- a/src/IdServer/SimpleIdServer.IdServer/Api/ApiResources/ApiResourcesController.cs +++ b/src/IdServer/SimpleIdServer.IdServer/Api/ApiResources/ApiResourcesController.cs @@ -64,6 +64,8 @@ public async Task Search([FromRoute] string prefix, [FromBody] Se if (!string.IsNullOrWhiteSpace(request.OrderBy)) query = query.OrderBy(request.OrderBy); + else + query = query.OrderBy(r => r.Name); var nb = query.Count(); var apiResources = await query.Skip(request.Skip.Value).Take(request.Take.Value).ToListAsync(); return new OkObjectResult(new SearchResult