feat: Implement API client and token models with hashing and JWT authentication
- Added ApiClientModel and ApiTokenModel for managing API clients and tokens. - Introduced ConfigurationDefinitionModel and ConfigurationValueModel for configuration management. - Created CredentialSecretModel for storing credential secrets. - Developed DeploymentArtifactModel and DeploymentBatchModel for deployment management. - Enhanced DeploymentTargetModel and DeploymentTemplateSelectionModel to support template revisions. - Added TemplateRevisionModel and TemplateVersionModel for versioning templates. - Implemented ApiClientSecretHasher for secure secret hashing. - Created ApiTokenService for generating and validating JWT tokens. - Updated QueueJobService to handle deployment requests with artifacts. - Configured authentication settings in appsettings.json for JWT and Negotiate authentication.
This commit is contained in:
@@ -55,6 +55,7 @@ namespace Microsoft.SelfService.Portal.Core.API.Repository
|
||||
|
||||
var templateVersion = requestedTemplateVersionId.HasValue
|
||||
? _context.TemplateVersions
|
||||
.Include(version => version.TemplateRevisions)
|
||||
.Include(version => version.Template)
|
||||
.ThenInclude(template => template.TemplateCategory)
|
||||
.ThenInclude(category => category.Service)
|
||||
@@ -66,6 +67,7 @@ namespace Microsoft.SelfService.Portal.Core.API.Repository
|
||||
.Include(existing => existing.TemplateCategory)
|
||||
.ThenInclude(existing => existing.Service)
|
||||
.Include(existing => existing.TemplateVersions)
|
||||
.ThenInclude(version => version.TemplateRevisions)
|
||||
.FirstOrDefault(existing => existing.Id == deploymentBatch.TemplateId);
|
||||
|
||||
if (template == null)
|
||||
@@ -128,11 +130,32 @@ namespace Microsoft.SelfService.Portal.Core.API.Repository
|
||||
Id = Guid.NewGuid(),
|
||||
DeploymentGroupId = deploymentBatch.Id,
|
||||
TemplateVersionId = templateVersion.Id,
|
||||
TemplateRevisionId = templateVersion.TemplateRevisions?.FirstOrDefault(revision => revision.IsCurrent)?.Id,
|
||||
TemplateRole = "Service",
|
||||
SortOrder = 10,
|
||||
Alias = template.Name
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (var selection in deploymentBatch.TemplateSelections)
|
||||
{
|
||||
if (selection.TemplateRevisionId.HasValue)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var selectedVersion = selection.TemplateVersionId == templateVersion?.Id
|
||||
? templateVersion
|
||||
: _context.TemplateVersions
|
||||
.Include(version => version.TemplateRevisions)
|
||||
.FirstOrDefault(version => version.Id == selection.TemplateVersionId);
|
||||
|
||||
selection.TemplateRevisionId = selectedVersion?.TemplateRevisions
|
||||
?.FirstOrDefault(revision => revision.IsCurrent)
|
||||
?.Id;
|
||||
}
|
||||
}
|
||||
|
||||
if (deploymentBatch.TargetAssignments.Count == 0)
|
||||
{
|
||||
@@ -170,6 +193,10 @@ namespace Microsoft.SelfService.Portal.Core.API.Repository
|
||||
{
|
||||
DeploymentGroupId = deploymentBatch.Id,
|
||||
TargetId = targetId,
|
||||
TemplateRevisionId = deploymentBatch.TemplateSelections
|
||||
.OrderBy(selection => selection.SortOrder)
|
||||
.Select(selection => selection.TemplateRevisionId)
|
||||
.FirstOrDefault(),
|
||||
Status = QueueJobStatus.Pending,
|
||||
JSONData = "{}"
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user