refactor(kernel): unify HTTP and CLI application lifecycle

Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
2026-07-27 00:48:11 -04:00
parent 98826143a8
commit 65c1b5fb75
67 changed files with 2737 additions and 1070 deletions
+18 -18
View File
@@ -4,8 +4,8 @@ namespace KTXC\Controllers;
use KTXC\Http\Response\JsonResponse;
use KTXC\Service\UserAccountsService;
use KTXC\SessionIdentity;
use KTXC\SessionTenant;
use KTXC\Context\IdentityContextInterface;
use KTXC\Context\TenantContextInterface;
use KTXF\Controller\ControllerAbstract;
use KTXF\Routing\Attributes\AuthenticatedRoute;
use Psr\Log\LoggerInterface;
@@ -17,8 +17,8 @@ use Psr\Log\LoggerInterface;
class UserAccountsController extends ControllerAbstract
{
public function __construct(
private readonly SessionTenant $tenantIdentity,
private readonly SessionIdentity $userIdentity,
private readonly TenantContextInterface $tenantContext,
private readonly IdentityContextInterface $identityContext,
private readonly UserAccountsService $userService,
private readonly LoggerInterface $logger
) {}
@@ -31,7 +31,7 @@ class UserAccountsController extends ControllerAbstract
{
try {
// Check admin permission
if (!$this->userIdentity->hasPermission('user.admin')) {
if (!$this->identityContext->hasPermission('user.admin')) {
return new JsonResponse([
'status' => 'error',
'data' => ['code' => 403, 'message' => 'Insufficient permissions']
@@ -125,7 +125,7 @@ class UserAccountsController extends ControllerAbstract
*/
private function userCreate(array $data): array
{
if (!$this->userIdentity->hasPermission('user.create')) {
if (!$this->identityContext->hasPermission('user.create')) {
throw new \InvalidArgumentException('Insufficient permissions to create users');
}
@@ -142,9 +142,9 @@ class UserAccountsController extends ControllerAbstract
];
$this->logger->info('Creating user', [
'tenant' => $this->tenantIdentity->identifier(),
'tenant' => $this->tenantContext->identifier(),
'identity' => $userData['identity'],
'actor' => $this->userIdentity->identifier()
'actor' => $this->identityContext->identifier()
]);
return $this->userService->createUser($userData);
@@ -155,7 +155,7 @@ class UserAccountsController extends ControllerAbstract
*/
private function userUpdate(array $data): bool
{
if (!$this->userIdentity->hasPermission('user.update')) {
if (!$this->identityContext->hasPermission('user.update')) {
throw new \InvalidArgumentException('Insufficient permissions to update users');
}
@@ -186,9 +186,9 @@ class UserAccountsController extends ControllerAbstract
}
$this->logger->info('Updating user', [
'tenant' => $this->tenantIdentity->identifier(),
'tenant' => $this->tenantContext->identifier(),
'uid' => $uid,
'actor' => $this->userIdentity->identifier()
'actor' => $this->identityContext->identifier()
]);
return $this->userService->updateUser($uid, $updates);
@@ -199,21 +199,21 @@ class UserAccountsController extends ControllerAbstract
*/
private function userDelete(array $data): bool
{
if (!$this->userIdentity->hasPermission('user.delete')) {
if (!$this->identityContext->hasPermission('user.delete')) {
throw new \InvalidArgumentException('Insufficient permissions to delete users');
}
$uid = $data['uid'] ?? throw new \InvalidArgumentException('User ID required');
// Prevent self-deletion
if ($uid === $this->userIdentity->identifier()) {
if ($uid === $this->identityContext->identifier()) {
throw new \InvalidArgumentException('Cannot delete your own account');
}
$this->logger->info('Deleting user', [
'tenant' => $this->tenantIdentity->identifier(),
'tenant' => $this->tenantContext->identifier(),
'uid' => $uid,
'actor' => $this->userIdentity->identifier()
'actor' => $this->identityContext->identifier()
]);
return $this->userService->deleteUser($uid);
@@ -228,7 +228,7 @@ class UserAccountsController extends ControllerAbstract
*/
private function userProviderUnlink(array $data): bool
{
if (!$this->userIdentity->hasPermission('user.admin')) {
if (!$this->identityContext->hasPermission('user.admin')) {
throw new \InvalidArgumentException('Insufficient permissions');
}
@@ -241,9 +241,9 @@ class UserAccountsController extends ControllerAbstract
];
$this->logger->info('Unlinking provider', [
'tenant' => $this->tenantIdentity->identifier(),
'tenant' => $this->tenantContext->identifier(),
'uid' => $uid,
'actor' => $this->userIdentity->identifier()
'actor' => $this->identityContext->identifier()
]);
return $this->userService->updateUser($uid, $updates);