Commit graph

117 commits

Author SHA1 Message Date
a4cc75d697
fix(queue): add explicit tries and timeout to SendClientSecurityAlertMail (F-2026-0007) 2026-08-26 10:10:52 +02:00
be13421b7a
fix(security): make nonce validation and consumption atomic via CacheRepository add (F-2026-0008) 2026-08-26 10:01:43 +02:00
ae3f5185fe
perf(directory): memoize arcadia brand lookups to eliminate N+1 queries during INCO sheet hydration (F-2026-0003) 2026-08-26 09:51:47 +02:00
fc268f0c7f
fix(security): sanitize rate limiter client IP resolution to prevent header spoofing (F-2026-0001) 2026-08-26 09:41:40 +02:00
daa8d1e0fa
refactor(cache): implement graceful degradation for BrandCache 2026-08-25 08:26:58 +02:00
0766e9dc8f
refactor(repository): make entity deletion idempotent 2026-08-25 08:26:55 +02:00
3582a3928c
refactor(pagination): clamp out-of-bounds pagination values silently 2026-08-25 08:26:50 +02:00
e31767cfd0
refactor(brand): make ArcadiaId strictly string value extending EntityId 2026-08-24 21:45:04 +02:00
55576a6971
refactor(security): unify ClientDirectory reading methods into ClientRepository 2026-08-24 21:44:56 +02:00
cb97e6f591
refactor(ddd): introduce AggregateRoot and ReadModel interfaces extending Entity 2026-08-24 21:44:51 +02:00
e7f49ccf84
feat(tests): add DummyEntityIdA and DummyEntityIdB classes
These classes extend EntityId for testing purposes.
2026-08-21 17:10:21 +02:00
4421d34a43
feat(health): implement strictly-typed health check subsystem with DB, cache, and SMTP checks 2026-08-21 16:47:14 +02:00
891b21ba61
test(security): add unit tests for audit entities, presenter, and ClientConsoleResolver 2026-08-21 16:16:26 +02:00
5c49b2cc4f
feat(infra): attach HasUuidV7CreatedAt trait to Brand, ApiClient, and ClientAuditLog models 2026-08-21 16:12:01 +02:00
6d63e68908
feat(infra): add HasUuidV7CreatedAt trait to derive created_at from UUIDv7 2026-08-21 16:11:56 +02:00
37bd6cdbdd
feat(shared): implement PSR-20 Clock contract, Utc facade, and RFC3339 normalization 2026-08-21 15:45:32 +02:00
1df3a27c98 feat(config): introduce typed configuration objects, dedicated value objects and enforce global class referencing 2026-08-21 15:01:36 +02:00
0063727790 refactor(tests): fix IncoSheets directory casing 2026-08-21 14:31:14 +02:00
a82a1558bd feat(security): add arcadia:security:audit-logs CLI command with CSV export and typed audit details 2026-08-21 14:30:20 +02:00
61073f4fcd feat(security): add database audit logging and asynchronous markdown email alerts for api client actions 2026-08-21 12:07:13 +02:00
709568f1ed feat(brand): handle on-demand brand renaming with BrandRenamed event and historical preservation 2026-08-21 11:36:37 +02:00
cc368c7102 feat(brand): add dedicated BrandCache service, event invalidation, and persist brand name locally 2026-08-21 11:27:32 +02:00
dc83df4105 feat(security): add audit log listeners and tests for client secret and status events 2026-08-21 11:09:25 +02:00
20ae9a2307 feat(event): implement TransactionalDomainEventDispatcher with post-commit release 2026-08-21 10:28:36 +02:00
95f10be9d4 style(tests): fix namespace casing in IncoSheetTestBuilder and IncoSheetMother 2026-08-21 10:23:54 +02:00
5e4e2f5faf fix(security): lock HMAC dev bypass strictly to false in production 2026-08-21 10:14:55 +02:00
62289d2222 refactor(domain): introduce Domain Builders for IncoComposition and IncoSheet 2026-08-21 10:13:43 +02:00
abe60df95f feat(event): implement BrandCreated event and listeners
- Added BrandCreated event to encapsulate brand creation details.
- Created LogBrandCreated listener to log brand creation events.
- Updated BrandResolver to dispatch BrandCreated event upon new brand creation.
- Introduced EventServiceProvider to register event listeners.
- Added unit tests for BrandCreated event and LogBrandCreated listener.
2026-08-21 09:45:06 +02:00
9c2c109d51 feat(usecase): add Transactional interface and update use cases
- Implemented Transactional interface for use cases requiring database transactions.
- Updated CreateClient, RegenerateClientSecret, and SetClientStatus to implement Transactional.
- Modified LaravelExecutor to handle transactional use cases appropriately.
- Enhanced tests for LaravelExecutor to cover transactional behavior.
2026-08-21 09:38:29 +02:00
aca627ff78 test(presentation): add missing unit tests for API and Console presenters 2026-08-20 18:22:20 +02:00
b26baaaf86
test(infra): add integration tests for EloquentBrandRepository, EloquentIncoSheetDirectory and EloquentIncoShortSheetDirectory 2026-08-20 18:16:42 +02:00
8f933db9fa
feat(inco): migrate to IncoBrand VO, BrandResolver domain service and BrandCode filtering 2026-08-20 18:16:31 +02:00
1f8f03e6d8
feat(brand): add Brand use cases, API v1 endpoints, console command, OpenAPI spec and Bruno collection 2026-08-20 17:35:47 +02:00
20ec692160
feat(infra): add Brand Eloquent models, migrations, casts, adapters and seeders 2026-08-20 17:35:42 +02:00
a42a79861d
feat(domain): add Brand entity, value objects, ports, and generator & resolver domain services 2026-08-20 17:35:38 +02:00
8cfd5fbe0f
refactor(console): scope client artisan commands under arcadia prefix 2026-08-20 17:35:31 +02:00
6f35e031fa
refactor(presentation): remove authorize method from FormRequests in favor of middleware filters 2026-08-20 17:35:26 +02:00
6be00bb21e
refactor(domain): make read-only entity constructors private and introduce hydrate static methods 2026-08-20 15:05:33 +02:00
4d68a97889
feat(security): derive client createdAt from UUIDv7 and add HasTimestampIdentifier interface 2026-08-20 12:53:07 +02:00
9c28cf2903
refactor(database): add timestamps to ApiClient and Employee models
Updated ApiClient and Employee models to include created_at and updated_at fields for better tracking of records.
2026-08-20 12:08:15 +02:00
c8a46bb9b3
fix(shared): harmonize delete exception contracts on Repository and ClientRepository (LSP) 2026-08-20 09:48:10 +02:00
2bbfc7fa08
fix(shared): prevent cross-type equality in EntityId::equals (LSP) 2026-08-20 09:45:54 +02:00
98356465d5
fix(infra): align since filter in InMemoryEmployeeDirectory with Eloquent adapter (LSP) 2026-08-20 09:45:11 +02:00
341b57c3bf
feat(console): migrate interactive console commands to Laravel Prompts 2026-08-18 18:46:31 +02:00
bad76036f1
feat(security): add FindClient use case with Paginated search and anticipate in console commands 2026-08-18 17:45:42 +02:00
e3462241d3
feat(console): add RegenerateClientSecret command 2026-08-18 17:37:44 +02:00
d3786aaed6
feat(console): add CreateClient command and enforce unique slug for ApiClient 2026-08-18 17:31:29 +02:00
0a5603330a
feat(console): add CreateClientCommand and related classes
Implement an interactive command to create a new API client, including input validation and confirmation steps.
Add presenter and view classes to handle the output of the client creation process.
2026-08-18 17:13:55 +02:00
43758922ad
feat(console): add ToggleClientStatus command and related logic
- Implemented command to toggle client status via console.
- Introduced SetClientStatus use case for managing client activation.
- Added presenters and views for command output.
- Created tests for command functionality and edge cases.
2026-08-18 16:56:15 +02:00
2ac8578fe0
feat(console): add ListClients command and related presenters
- Implemented ListClientsCommand to list API clients with pagination.
- Created ClientRow, ListClientsPresenter, and ListClientsView for structured output.
- Added tests for ListClientsCommand to ensure correct functionality.
2026-08-18 12:50:55 +02:00