Skip to content
10 changes: 7 additions & 3 deletions src/Tre-Camunda/ProcessHandlers/CreateTrinoUserHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
using Zeebe.Client.Accelerator.Abstractions;
using System.Diagnostics;
using System.Text.Json;
using Tre_Camunda.Settings;
using Microsoft.Extensions.Options;


namespace Tre_Camunda.ProcessHandlers
Expand All @@ -15,12 +17,14 @@ public class CreateTrinoUserHandler: IAsyncZeebeWorkerWithResult<Dictionary<stri
{
private readonly ILogger<CreatePostgresUserHandler> _logger;
private readonly ILdapUserManagementService _ldapUserManagementService;


public CreateTrinoUserHandler(ILogger<CreatePostgresUserHandler> logger, ILdapUserManagementService ldapUserManagementService)
{
_logger = logger;
_ldapUserManagementService = ldapUserManagementService;
}

}

public async Task<Dictionary<string, object>> HandleJob(ZeebeJob job, CancellationToken cancellationToken)
{
Expand Down Expand Up @@ -73,7 +77,7 @@ public async Task<Dictionary<string, object>> HandleJob(ZeebeJob job, Cancellati
var result = await _ldapUserManagementService.CreateUserAsync(createUserRequest);

if (result.Success)
{
{
var outputVariables = new Dictionary<string, object>
{

Expand All @@ -90,7 +94,7 @@ public async Task<Dictionary<string, object>> HandleJob(ZeebeJob job, Cancellati
},

["vaultPath"] = $"trino/{project}/{user}/{username}",
["trinoUsername"] = username
["trinoUsername"] = username
};

_logger.LogInformation($"Successfully created Trino user: {username} for project: {project}");
Expand Down
71 changes: 71 additions & 0 deletions src/Tre-Camunda/ProcessHandlers/DeleteTrinoUserHandler.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
using Tre_Camunda.Services;
using BL.Models;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Zeebe.Client.Accelerator.Attributes;
using Zeebe.Client.Accelerator.Abstractions;
using System.Diagnostics;
using System.Text.Json;


namespace Tre_Camunda.ProcessHandlers
{
[JobType("delete-trino-user")]
public class DeleteTrinoUserHandler : IAsyncZeebeWorker
{
private readonly ILogger<DeleteTrinoUserHandler> _logger;
private readonly ILdapUserManagementService _ldapUserManagementService;

public DeleteTrinoUserHandler(ILogger<DeleteTrinoUserHandler> logger, ILdapUserManagementService ldapUserManagementService)
{
_logger = logger;
_ldapUserManagementService = ldapUserManagementService;
}

public async Task HandleJob(ZeebeJob job, CancellationToken cancellationToken)
{
var SW = new Stopwatch();
SW.Start();

_logger.LogDebug($"DeleteTrinoUserHandler started for process instance {job.ProcessInstanceKey}");

try
{
var variables = JsonSerializer.Deserialize<Dictionary<string, object>>(job.Variables);
var username = variables != null && variables.TryGetValue("trinoUsername", out var u)
? u?.ToString()
: null;

if (string.IsNullOrWhiteSpace(username))
{
var errorMsg = "trinoUsername not found in process variables";
_logger.LogError(errorMsg);
throw new Exception(errorMsg);
}

_logger.LogInformation($"Attempting to delete LDAP user: {username}");

var result = await _ldapUserManagementService.DeleteUserAsync(username);

if (!result.Success)
{
var errorMsg = $"Failed to delete LDAP user {username}: {result.ErrorMessage}";
_logger.LogError(errorMsg);
throw new Exception(errorMsg);
}

_logger.LogInformation($"Successfully deleted LDAP user: {username}");
}
catch (Exception ex)
{
var errorMsg = $"Unexpected error in DeleteTrinoUserHandler: {ex.Message}";
_logger.LogError(ex, errorMsg);

SW.Stop();
_logger.LogInformation($"DeleteTrinoUserHandler took {SW.Elapsed.TotalSeconds} seconds");

throw;
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -98,21 +98,21 @@
<bpmn:incoming>Flow_1viukwi</bpmn:incoming>
<bpmn:outgoing>Flow_1vifyik</bpmn:outgoing>
<bpmn:timerEventDefinition id="TimerEventDefinition_0kn1kl6">
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT60S</bpmn:timeDuration>
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT60S</bpmn:timeDuration>
</bpmn:timerEventDefinition>
</bpmn:intermediateCatchEvent>
<bpmn:intermediateCatchEvent id="Event_1rksdcs" name="Remove after time period eg 24 hours">
<bpmn:incoming>Flow_051vhrn</bpmn:incoming>
<bpmn:outgoing>Flow_0xi88gu</bpmn:outgoing>
<bpmn:timerEventDefinition id="TimerEventDefinition_1lf6p1w">
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT60S</bpmn:timeDuration>
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT60S</bpmn:timeDuration>
</bpmn:timerEventDefinition>
</bpmn:intermediateCatchEvent>
<bpmn:intermediateCatchEvent id="Event_0evmw8x" name="Remove after time period eg 24 hours">
<bpmn:incoming>Flow_10oouif</bpmn:incoming>
<bpmn:outgoing>Flow_022m1kn</bpmn:outgoing>
<bpmn:timerEventDefinition id="TimerEventDefinition_1wibni5">
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT60S</bpmn:timeDuration>
<bpmn:timeDuration xsi:type="bpmn:tFormalExpression">PT60S</bpmn:timeDuration>
</bpmn:timerEventDefinition>
</bpmn:intermediateCatchEvent>
<bpmn:task id="Activity_1ffnrf8" name="Remove Minio Secret and bucket">
Expand All @@ -123,10 +123,6 @@
<bpmn:incoming>Flow_1vifyik</bpmn:incoming>
<bpmn:outgoing>Flow_0v8d15j</bpmn:outgoing>
</bpmn:task>
<bpmn:task id="Activity_0wtw6wa" name="Remove Trino User and OPA">
<bpmn:incoming>Flow_0xi88gu</bpmn:incoming>
<bpmn:outgoing>Flow_0nzp5jn</bpmn:outgoing>
</bpmn:task>
<bpmn:startEvent id="StartEvent_1">
<bpmn:outgoing>Flow_18p73il</bpmn:outgoing>
</bpmn:startEvent>
Expand Down Expand Up @@ -167,11 +163,22 @@
<zeebe:output source="=vaultPath" target="vaultPath" />
<zeebe:output source="=credentialData" target="credentialData" />
<zeebe:output source="=trinoUsername" target="trinoUsername" />
<zeebe:output source="=expirationPeriod" target="expirationPeriod" />
</zeebe:ioMapping>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0jbltva</bpmn:incoming>
<bpmn:outgoing>Flow_0lpfio5</bpmn:outgoing>
</bpmn:serviceTask>
<bpmn:serviceTask id="Activity_0wtw6wa" name="Remove Trino User">
<bpmn:extensionElements>
<zeebe:taskDefinition type="delete-trino-user" />
<zeebe:ioMapping>
<zeebe:input source="=trinoUsername" target="trinoUsername" />
</zeebe:ioMapping>
</bpmn:extensionElements>
<bpmn:incoming>Flow_0xi88gu</bpmn:incoming>
<bpmn:outgoing>Flow_0nzp5jn</bpmn:outgoing>
</bpmn:serviceTask>
</bpmn:process>
<bpmn:message id="Message_1es8kcn" name="Message_1es8kcn" />
<bpmndi:BPMNDiagram id="BPMNDiagram_1">
Expand Down Expand Up @@ -252,10 +259,6 @@
<dc:Bounds x="1450" y="90" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_170j9oh" bpmnElement="Activity_0wtw6wa">
<dc:Bounds x="1450" y="220" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="BPMNShape_1dbmc40" bpmnElement="StartEvent_1">
<dc:Bounds x="152" y="112" width="36" height="36" />
</bpmndi:BPMNShape>
Expand All @@ -280,6 +283,10 @@
<bpmndi:BPMNShape id="Activity_1g0myu8_di" bpmnElement="Activity_06end8r">
<dc:Bounds x="620" y="220" width="100" height="80" />
</bpmndi:BPMNShape>
<bpmndi:BPMNShape id="Activity_0skac5i_di" bpmnElement="Activity_0wtw6wa">
<dc:Bounds x="1450" y="220" width="100" height="80" />
<bpmndi:BPMNLabel />
</bpmndi:BPMNShape>
<bpmndi:BPMNEdge id="Flow_022m1kn_di" bpmnElement="Flow_022m1kn">
<di:waypoint x="1398" y="390" />
<di:waypoint x="1460" y="390" />
Expand Down
2 changes: 1 addition & 1 deletion src/Tre-Camunda/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ await Host.CreateDefaultBuilder(args)

services.AddZeebeBuilders();
services.BootstrapZeebe(configuration.GetSection("ZeebeConfiguration"), typeof(Program).Assembly);
services.Configure<LdapSettings>(configuration.GetSection("LdapSettings"));
services.Configure<LdapSettings>(configuration.GetSection("LdapSettings"));
services.AddHttpClient();
services.AddBusinessServices(configuration);
services.ConfigureCamunda(configuration);
Expand Down
Loading