Skip to content

Commit

Permalink
fix(*): don't add operation claim seeds of feature when security is n…
Browse files Browse the repository at this point in the history
…ot included in project
  • Loading branch information
ahmet-cetinkaya committed May 13, 2023
1 parent 3056c82 commit b3cf0d5
Show file tree
Hide file tree
Showing 7 changed files with 34 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,12 @@ private async Task removeSecurityMechanism(string projectName)

string[] filesToDelete = new[]
{
$"{projectSourcePath}/Application/Services/Repositories/IEmailAuthenticatorRepository.cs",
$"{projectSourcePath}/Application/Services/Repositories/IOperationClaimRepository.cs",
$"{projectSourcePath}/Application/Services/Repositories/IOtpAuthenticatorRepository.cs",
$"{projectSourcePath}/Application/Services/Repositories/IRefreshTokenRepository.cs",
$"{projectSourcePath}/Application/Services/Repositories/IUserOperationClaimRepository.cs",
$"{projectSourcePath}/Application/Services/Repositories/IUserRepository.cs",
$"{projectSourcePath}/Persistence/EntityConfigurations/EmailAuthenticatorConfiguration.cs",
$"{projectSourcePath}/Persistence/EntityConfigurations/OperationClaimConfiguration.cs",
$"{projectSourcePath}/Persistence/EntityConfigurations/OtpAuthenticatorConfiguration.cs",
Expand Down Expand Up @@ -225,6 +231,7 @@ await FileHelper.RemoveLinesAsync(
new[]
{
"using Persistence.Repositories;",
"using Application.Services.Repositories;",
"services.AddScoped<IEmailAuthenticatorRepository, EmailAuthenticatorRepository>()",
"services.AddScoped<IOperationClaimRepository, OperationClaimRepository>()",
"services.AddScoped<IOtpAuthenticatorRepository, OtpAuthenticatorRepository>();",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,9 @@ await CSharpCodeInjector.AddCodeLinesAsPropertyAsync(

string operationClaimsEntityConfigurationFilePath =
@$"{projectPath}\Persistence\EntityConfigurations\OperationClaimConfiguration.cs";
if(!File.Exists(operationClaimsEntityConfigurationFilePath))
return new[] { featureOperationClaimFilePath };

string[] commandOperationClaimSeedTemplateCodeLines = await File.ReadAllLinesAsync(
@$"{DirectoryHelper.AssemblyDirectory}\{Templates.Paths.Command}\Lines\CommandOperationClaimSeed.cs.sbn"
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,12 @@ await generatePersistenceCodes(request.ProjectPath, request.CrudTemplateData)

response.CurrentStatusMessage = "Adding feature operation claims as seed...";
yield return response;
updatedFilePaths.Add(
await injectFeatureOperationClaims(request.ProjectPath, request.CrudTemplateData)
string? addedOperationClaim = await injectFeatureOperationClaims(
request.ProjectPath,
request.CrudTemplateData
);
if (addedOperationClaim != null)
updatedFilePaths.Add(addedOperationClaim);
response.LastOperationMessage = "Feature operation claims have been added.";

response.CurrentStatusMessage = "Generating Application layer codes...";
Expand Down Expand Up @@ -140,13 +143,16 @@ CrudTemplateData crudTemplateData
);
}

private async Task<string> injectFeatureOperationClaims(
private async Task<string?> injectFeatureOperationClaims(
string projectPath,
CrudTemplateData crudTemplateData
)
{
string operationClaimConfigurationFilePath =
@$"{projectPath}\Persistence\EntityConfigurations\OperationClaimConfiguration.cs";
if (!File.Exists(operationClaimConfigurationFilePath))
return null;

string[] seedTemplateCodeLines = await File.ReadAllLinesAsync(
@$"{DirectoryHelper.AssemblyDirectory}\{Templates.Paths.Crud}\Lines\EntityFeatureOperationClaimSeeds.cs.sbn"
);
Expand Down Expand Up @@ -242,6 +248,14 @@ await _templateEngine.RenderAsync(
persistenceServiceRegistrationTemplateCodeLine,
crudTemplateData
);
await CSharpCodeInjector.AddUsingToFile(
persistenceServiceRegistrationFilePath,
usingLines: new[]
{
"using Application.Services.Repositories;",
"using Persistence.Repositories;"
}
);
await CSharpCodeInjector.AddCodeLinesToMethodAsync(
persistenceServiceRegistrationFilePath,
methodName: "AddPersistenceServices",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,9 @@ await CSharpCodeInjector.AddCodeLinesAsPropertyAsync(

string operationClaimsEntityConfigurationFilePath =
@$"{projectPath}\Persistence\EntityConfigurations\OperationClaimConfiguration.cs";
if(!File.Exists(operationClaimsEntityConfigurationFilePath))
return new[] { featureOperationClaimFilePath };

string[] queryOperationClaimSeedTemplateCodeLines = await File.ReadAllLinesAsync(
@$"{DirectoryHelper.AssemblyDirectory}\{Templates.Paths.Query}\Lines\QueryOperationClaimSeed.cs.sbn"
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class GetList{{ entity.name | string.pascalcase }}Query : IRequest<GetLis
public string[] Roles => new[] { Admin, Read };{{ end }}{{ if is_caching_used }}

public bool BypassCache { get; }
public string CacheKey => $"GetList{{ entity.name | string.pascalcase | string.plural }}({PageRequest.Page},{PageRequest.PageSize})";
public string CacheKey => $"GetList{{ entity.name | string.pascalcase | string.plural }}({PageRequest.PageIndex},{PageRequest.PageSize})";
public string CacheGroupKey => "Get{{ entity.name | string.pascalcase | string.plural }}";
public TimeSpan? SlidingExpiration { get; }{{ end }}

Expand All @@ -37,7 +37,7 @@ public class GetList{{ entity.name | string.pascalcase }}Query : IRequest<GetLis
public async Task<GetListResponse<GetList{{ entity.name | string.pascalcase }}ListItemDto>> Handle(GetList{{ entity.name | string.pascalcase }}Query request, CancellationToken cancellationToken)
{
IPaginate<{{ entity.name | string.pascalcase }}> {{ entity.name | string.camelcase | string.plural }} = await _{{ entity.name | string.camelcase }}Repository.GetListAsync(
index: request.PageRequest.Page,
index: request.PageRequest.PageIndex,
size: request.PageRequest.PageSize,
cancellationToken: cancellationToken
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
using Application.Features.{{ feature_name }}.Commands.{{ command_name }};
using Application.Features.{{ feature_name }}.Commands.{{ command_name | string.pascalcase }};
Original file line number Diff line number Diff line change
@@ -1 +1 @@
using Application.Features.{{ feature_name }}.Queries.{{ query_name }};
using Application.Features.{{ feature_name }}.Queries.{{ query_name | string.pascalcase }};

0 comments on commit b3cf0d5

Please sign in to comment.