public override async Task ProcessAsync(Auth0ResourceTemplate template) { using var managementClient = await _managementApiClientFactory.CreateAsync(); var rule = _converter.Convert(template); //todo support proper pagination - how to do this where every api call is different?! var getRulesRequest = new GetRulesRequest { IncludeFields = true, Fields = "name,id" }; var results = managementClient.Rules.GetAllAsync(getRulesRequest, Reporter); var matchingRule = await results.FirstOrDefaultAsync(x => string.Equals(x.Name, rule.Name)); if (matchingRule == null) { var createRequest = Reflectorisor.CopyMembers <Rule, RuleCreateRequest>(rule); await Create( async() => await managementClient.Rules.CreateAsync(createRequest), request => request.Id, rule.Name); } else { var updateRequest = Reflectorisor.CopyMembers <Rule, RuleUpdateRequest>(rule); await Update( async() => await managementClient.Rules.UpdateAsync(matchingRule.Id, updateRequest), matchingRule.Id, rule.Name ); } }
public override async Task ProcessAsync(Auth0ResourceTemplate template) { using var managementClient = await _managementApiClientFactory.CreateAsync(); var templatedResourceServer = _converter.Convert(template); var results = managementClient.ResourceServers.GetAllAsync(_reporter); FixIllegalOptions(templatedResourceServer); var matchingResourceServer = await results.FirstOrDefaultAsync(x => string.Equals(x.Name, templatedResourceServer.Name)); if (matchingResourceServer == null) { var createRequest = Reflectorisor.CopyMembers <ResourceServer, ResourceServerCreateRequest>(templatedResourceServer); await Create( async() => await managementClient.ResourceServers.CreateAsync(createRequest), request => request.Id, templatedResourceServer.Name ); } else { var updateRequest = Reflectorisor.CopyMembers <ResourceServer, ResourceServerUpdateRequest>(templatedResourceServer); await Update( async() => await managementClient.ResourceServers.UpdateAsync(matchingResourceServer.Id, updateRequest), matchingResourceServer.Id, templatedResourceServer.Name ); } }
public override async Task ProcessAsync(Auth0ResourceTemplate template) { using var managementClient = await _managementApiClientFactory.CreateAsync(); var client = _converter.Convert(template); var getClientsRequest = new GetClientsRequest { IsGlobal = false, IncludeFields = true, Fields = "name,client_id" }; var results = managementClient.Clients.GetAllAsync(getClientsRequest, Reporter); FixIllegalOptions(client); var matchingClient = await results.FirstOrDefaultAsync(x => string.Equals(x.Name, client.Name)); if (matchingClient == null) { var createRequest = Reflectorisor.CopyMembers <Client, ClientCreateRequest>(client); await Create( async() => await managementClient.Clients.CreateAsync(createRequest), request => request.ClientId, client.Name); } else { var updateRequest = Reflectorisor.CopyMembers <Client, ClientUpdateRequest>(client); await Update( async() => await managementClient.Clients.UpdateAsync(matchingClient.ClientId, updateRequest), matchingClient.ClientId, client.Name ); } }
public override async Task ProcessAsync(Auth0ResourceTemplate template) { using var managementClient = await _managementApiClientFactory.CreateAsync(); var role = _converter.Convert(template); var results = managementClient.Roles.GetAllAsync(new GetRolesRequest(), Reporter); var matchingRole = await results.FirstOrDefaultAsync(x => string.Equals(x.Name, role.Name)); if (matchingRole == null) { var createRequest = Reflectorisor.CopyMembers <Role, RoleCreateRequest>(role); await Create( async() => await managementClient.Roles.CreateAsync(createRequest), request => request.Id, role.Name); } else { var updateRequest = Reflectorisor.CopyMembers <Role, RoleUpdateRequest>(role); await Update( async() => await managementClient.Roles.UpdateAsync(matchingRole.Id, updateRequest), matchingRole.Id, role.Name ); } }
public override async Task ProcessAsync(Auth0ResourceTemplate template) { var settings = _converter.Convert(template); using var managementClient = await _managementApiClientFactory.CreateAsync(); var updateRequest = Reflectorisor.CopyMembers <TenantSettings, TenantSettingsUpdateRequest>(settings); await Update(async() => await managementClient.TenantSettings.UpdateAsync(updateRequest), template.Type.Name); }
public override async Task ProcessAsync(Auth0ResourceTemplate template) { //get the client that matches the ClientGrant.ClientId so we get Client.Id using var managementClient = await _managementApiClientFactory.CreateAsync(); var templatedGrant = _converter.Convert(template); var getClientsRequest = new GetClientsRequest { IsGlobal = false, IncludeFields = true, Fields = "name,client_id" }; var allClients = await managementClient.Clients.GetAllAsync(getClientsRequest, new PaginationInfo()); var matchingClient = allClients.FirstOrDefault(x => x.Name == templatedGrant.ClientId); if (matchingClient == null) { throw new Auth0ResourceNotFoundException($"No {ResourceType.Clients.Name} exists with name " + $"{templatedGrant.ClientId}. Cannot create/update " + $"{ResourceType.ClientGrants.Name} {template.Filename}"); } templatedGrant.ClientId = matchingClient.ClientId; var allGrants = managementClient.ClientGrants.GetAllAsync(new GetClientGrantsRequest(), Reporter); var existingGrant = await allGrants.FirstOrDefaultAsync( x => string.Equals(x.ClientId, templatedGrant.ClientId) && string.Equals(x.Audience, templatedGrant.Audience)); if (existingGrant == null) { var createRequest = Reflectorisor.CopyMembers <ClientGrant, ClientGrantCreateRequest>(templatedGrant); await Create( async() => await managementClient.ClientGrants.CreateAsync(createRequest), request => request.Id, $"[{matchingClient.Name}|{createRequest.Audience}]"); } else { var updateRequest = Reflectorisor.CopyMembers <ClientGrant, ClientGrantUpdateRequest>(templatedGrant); await Update( async() => await managementClient.ClientGrants.UpdateAsync(existingGrant.Id, updateRequest), existingGrant.Id, $"[{matchingClient.Name}|{existingGrant.Audience}]"); } }
public override async Task ProcessAsync(Auth0ResourceTemplate template) { using var managementClient = await _managementApiClientFactory.CreateAsync(); var templatedConnection = _converter.Convert(template); var getConnectionsRequest = new GetConnectionsRequest { IncludeFields = true, Fields = "name,id" }; var allConnections = managementClient.Connections.GetAllAsync(getConnectionsRequest, Reporter); var matchingConnection = await allConnections.FirstOrDefaultAsync(x => string.Equals(x.Name, templatedConnection.Name)); if (matchingConnection == null) { var createRequest = Reflectorisor.CopyMembers <Connection, ConnectionCreateRequest>(templatedConnection); await Create( async() => await managementClient.Connections.CreateAsync(createRequest), request => request.Id, templatedConnection.Name ); } else { var updateRequest = Reflectorisor.CopyMembers <Connection, ConnectionUpdateRequest>(templatedConnection); //Remove the name property. It's not allowed on an update. updateRequest.Name = null; await Update( async() => await managementClient.Connections.UpdateAsync(matchingConnection.Id, updateRequest), matchingConnection.Id, templatedConnection.Name ); } }
public async Task TestClient() { var from = JsonConvert.DeserializeObject <Client>(await File.ReadAllTextAsync("./SampleData/Templates/clients/tones-localhost.template.json")); var to = Reflectorisor.CopyMembers <Client, ClientCreateRequest>(from); to.AddOns?.ShouldBe(from.AddOns); to.AllowedClients.ShouldBe(from.AllowedClients); to.AllowedLogoutUrls.ShouldBe(from.AllowedLogoutUrls); to.AllowedOrigins.ShouldBe(from.AllowedOrigins); //Application is declared with the same sig on both typeof(to) and typeof(from) so should be copied. to.ApplicationType.ShouldBe(from.ApplicationType); to.Callbacks.ShouldBe(from.Callbacks); to.ClientAliases.ShouldBe(from.ClientAliases); to.ClientMetaData?.ShouldBe(from.ClientMetaData); to.ClientSecret.ShouldBe(from.ClientSecret); to.CustomLoginPage.ShouldBe(from.CustomLoginPage); to.CustomLoginPagePreview.ShouldBe(from.CustomLoginPagePreview); to.Description.ShouldBe(from.Description); to.EncryptionKey.ShouldBe(from.EncryptionKey); to.FormTemplate.ShouldBe(from.FormTemplate); to.InitiateLoginUri.ShouldBe(from.InitiateLoginUri); to.IsCustomLoginPageOn.ShouldBe(from.IsCustomLoginPageOn); to.IsFirstParty.ShouldBe(from.IsFirstParty); // to.IsHerokuApp.ShouldBe(from...); //IsHerokuApp doesn't exist on CreateClientRequest to.JwtConfiguration.ShouldDeepEqual(from.JwtConfiguration); to.LogoUri.ShouldBe(from.LogoUri); to.Mobile.ShouldBe(from.Mobile); to.Name.ShouldBe(from.Name); to.OidcConformant.ShouldBe(from.OidcConformant); to.ResourceServers.ShouldBe(from.ResourceServers); to.Sso.ShouldBe(from.Sso); //TokenEndpointAuthMethod is declared with the same sig on both typeof(to) and typeof(from) so should be copied. to.TokenEndpointAuthMethod.ShouldBe(from.TokenEndpointAuthMethod); to.WebOrigins.ShouldBe(from.WebOrigins); }