From d4ec965ad3151026f38bb83c2df0381d39884f97 Mon Sep 17 00:00:00 2001 From: Mario Voigt Date: Thu, 3 Jul 2025 13:54:48 +0200 Subject: [PATCH 1/5] Update get-started.md update command --- docs/developer/get-started.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/developer/get-started.md b/docs/developer/get-started.md index 7a40e680..8d4c8f9d 100644 --- a/docs/developer/get-started.md +++ b/docs/developer/get-started.md @@ -91,7 +91,7 @@ Attraccess follows an Nx monorepo structure, organized into apps and libs: 4. Run database migrations: ```bash - nx run api:run-migrations + nx migrations-run api ``` ### Development From 4a5765386a4b2823778d4c023ff0f7577a16ed69 Mon Sep 17 00:00:00 2001 From: Mario Voigt Date: Thu, 10 Jul 2025 22:40:28 +0200 Subject: [PATCH 2/5] Harmonize FabReader naming --- .github/workflows/plugin-fablab-release.yml | 4 ++-- .../reader-states/wait-for-nfc-tap.state.ts | 4 ++-- apps/fabreader-firmware/README.md | 8 ++++---- apps/fabreader-firmware/src/main.cpp | 4 ++-- .../fabreader/FabreaderList/FabreaderList.de.json | 10 +++++----- .../fabreader/FabreaderList/FabreaderList.en.json | 8 ++++---- .../app/fabreader/FabreaderList/FabreaderList.tsx | 2 +- .../app/fabreader/NfcCardList/NfcCardList.de.json | 10 +++++----- .../app/fabreader/NfcCardList/NfcCardList.en.json | 12 ++++++------ docs/developer/plugins.md | 10 +++++----- 10 files changed, 36 insertions(+), 36 deletions(-) diff --git a/.github/workflows/plugin-fablab-release.yml b/.github/workflows/plugin-fablab-release.yml index f98c1f9b..b7f1603e 100644 --- a/.github/workflows/plugin-fablab-release.yml +++ b/.github/workflows/plugin-fablab-release.yml @@ -1,4 +1,4 @@ -name: Plugin FABReader Build & Attach +name: Plugin FabReader Build & Attach on: # Run on pull requests @@ -76,7 +76,7 @@ jobs: issue_number: context.issue.number, owner: context.repo.owner, repo: context.repo.repo, - body: `📦 FABReader plugin built and available as artifact: [${artifactName}.zip](${artifactUrl})` + body: `📦 FabReader plugin built and available as artifact: [${artifactName}.zip](${artifactUrl})` }); # Attach to release diff --git a/apps/api/src/fabreader/modules/websockets/reader-states/wait-for-nfc-tap.state.ts b/apps/api/src/fabreader/modules/websockets/reader-states/wait-for-nfc-tap.state.ts index e6b4a5f5..72a808e2 100644 --- a/apps/api/src/fabreader/modules/websockets/reader-states/wait-for-nfc-tap.state.ts +++ b/apps/api/src/fabreader/modules/websockets/reader-states/wait-for-nfc-tap.state.ts @@ -161,13 +161,13 @@ export class WaitForNFCTapState implements ReaderState { responseMessage = 'Resource stopped'; this.logger.debug(`Stopping resource usage for user ${userOfNFCCard.id} on resource ${this.selectedResourceId}`); await this.services.resourceUsageService.endSession(this.selectedResourceId, userOfNFCCard, { - notes: `-- by Fabreader (ID: ${this.socket.reader.id}) with NFC Card (ID: ${this.card.id}) --`, + notes: `-- by FabReader (ID: ${this.socket.reader.id}) with NFC Card (ID: ${this.card.id}) --`, }); } else { responseMessage = 'Resource started'; this.logger.debug(`Starting resource usage for user ${userOfNFCCard.id} on resource ${this.selectedResourceId}`); await this.services.resourceUsageService.startSession(this.selectedResourceId, userOfNFCCard, { - notes: `-- by Fabreader (ID: ${this.socket.reader.id}) with NFC Card (ID: ${this.card.id}) --`, + notes: `-- by FabReader (ID: ${this.socket.reader.id}) with NFC Card (ID: ${this.card.id}) --`, }); } diff --git a/apps/fabreader-firmware/README.md b/apps/fabreader-firmware/README.md index fe7d495a..f0d8aeec 100644 --- a/apps/fabreader-firmware/README.md +++ b/apps/fabreader-firmware/README.md @@ -1,6 +1,6 @@ -# Fabreader Firmware +# FabReader Firmware -This directory contains the firmware for the Fabreader device, an ESP32-C3 based RFID/NFC reader. +This directory contains the firmware for the FabReader device, an ESP32-C3 based RFID/NFC reader. ## Web Installation @@ -9,12 +9,12 @@ You can install the firmware directly from your web browser using [ESP Web Tools ### Requirements - Chrome or Edge browser on desktop (Web Serial is not supported on mobile or Firefox) -- ESP32-C3 based Fabreader device +- ESP32-C3 based FabReader device - USB connection to your computer ### Quick Installation -1. Connect your Fabreader device to your computer via USB +1. Connect your FabReader device to your computer via USB 2. Visit our [firmware installation page](https://OWNER_NAME.github.io/Attraccess/) (replace OWNER_NAME with your GitHub username) 3. Click the "Install" button and follow the on-screen instructions 4. If prompted, select the correct serial port for your device diff --git a/apps/fabreader-firmware/src/main.cpp b/apps/fabreader-firmware/src/main.cpp index 6460d851..c081766d 100644 --- a/apps/fabreader-firmware/src/main.cpp +++ b/apps/fabreader-firmware/src/main.cpp @@ -90,7 +90,7 @@ void setup() Serial.begin(115200); delay(2000); - Serial.println("FABReader starting..."); + Serial.println("FabReader starting..."); // Initialize SPI for other peripherals if needed SPI.begin(PIN_SPI_SCK, PIN_SPI_MISO, PIN_SPI_MOSI); @@ -147,4 +147,4 @@ void loop() api.loop(); nfc.loop(); } -} \ No newline at end of file +} diff --git a/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.de.json b/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.de.json index e3c3f602..3d2ad0d6 100644 --- a/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.de.json +++ b/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.de.json @@ -1,13 +1,13 @@ { "page": { - "title": "FABReader", + "title": "FabReader", "actions": { - "openFlasher": "Fabreader flasher" + "openFlasher": "FabReader flasher" } }, - "workInProgress": "Dieses Feature ist noch in Arbeit, benutzung auf eigene Gefahr!", + "workInProgress": "Dieses Feature ist noch in Arbeit, Benutzung auf eigene Gefahr!", "error": { - "fetchReaders": "FABReader konnten nicht abgerufen werden" + "fetchReaders": "FabReader konnten nicht abgerufen werden" }, "table": { "columns": { @@ -16,7 +16,7 @@ "connected": "Status", "actions": "Aktionen" }, - "noData": "Keine FABReader gefunden", + "noData": "Keine FabReader gefunden", "actions": { "editReader": "Bearbeiten" } diff --git a/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.en.json b/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.en.json index 3048d49f..dc57f3df 100644 --- a/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.en.json +++ b/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.en.json @@ -1,13 +1,13 @@ { "page": { - "title": "FABreaders", + "title": "FabReaders", "actions": { - "openFlasher": "FABreader flasher" + "openFlasher": "FabReader flasher" } }, "workInProgress": "This feature is still in development, use at your own risk!", "error": { - "fetchReaders": "Could not fetch FABreaders" + "fetchReaders": "Could not fetch FabReaders" }, "table": { "columns": { @@ -16,7 +16,7 @@ "connected": "Status", "actions": "Actions" }, - "noData": "No FABreaders found", + "noData": "No FabReaders found", "actions": { "editReader": "Edit" } diff --git a/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.tsx b/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.tsx index 786ba802..6fe41123 100644 --- a/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.tsx +++ b/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.tsx @@ -76,7 +76,7 @@ export const FabreaderList = () => { onSave={() => setOpenedReaderEditor(null)} /> - +
{t('table.columns.name')} {t('table.columns.lastConnection')} diff --git a/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.de.json b/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.de.json index fa2d47d3..4182c290 100644 --- a/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.de.json +++ b/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.de.json @@ -16,8 +16,8 @@ "deleteModal": { "title": "NFC-Karte löschen", "description": "Sie sind dabei, die NFC-Karte mit der ID {{id}} zu löschen. Diese Aktion kann nicht rückgängig gemacht werden.", - "readerLabel": "FABReader auswählen", - "readerPlaceholder": "Wählen Sie einen FABReader aus", + "readerLabel": "FabReader auswählen", + "readerPlaceholder": "Wählen Sie einen FabReader aus", "cancel": "Abbrechen", "delete": "Löschen" } @@ -25,9 +25,9 @@ "enroll": "NFC-Karte registrieren", "enrollModal": { "title": "NFC-Karte registrieren", - "description": "Um eine neue NFC-Karte zu registrieren, wählen Sie einen verbundenen FABReader aus der Liste unten aus. Klicken Sie dann auf die Schaltfläche \"Neue NFC-Karte registrieren\" und folgen dann den Anweisungen auf dem FABReader.", - "readerLabel": "FABReader auswählen", - "readerPlaceholder": "Wählen Sie einen FABReader aus", + "description": "Um eine neue NFC-Karte zu registrieren, wählen Sie einen verbundenen FabReader aus der Liste unten aus. Klicken Sie dann auf die Schaltfläche \"Neue NFC-Karte registrieren\" und folgen dann den Anweisungen auf dem FabReader.", + "readerLabel": "FabReader auswählen", + "readerPlaceholder": "Wählen Sie einen FabReader aus", "cancel": "Abbrechen", "enroll": "Registrieren" } diff --git a/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.en.json b/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.en.json index 835c2e57..150d2632 100644 --- a/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.en.json +++ b/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.en.json @@ -16,8 +16,8 @@ "deleteModal": { "title": "Delete NFC Card", "description": "You are about to delete the NFC Card with the ID {{id}}. This action cannot be undone.", - "readerLabel": "Select FABreader", - "readerPlaceholder": "Select a FABreader", + "readerLabel": "Select FabReader", + "readerPlaceholder": "Select a FabReader", "cancel": "Cancel", "delete": "Delete" } @@ -25,10 +25,10 @@ "enroll": "Enroll NFC Card", "enrollModal": { "title": "Enroll NFC Card", - "description": "To enroll a new NFC Card, choose a connected FABreader in the list below. Then click on the button \"Enroll new NFC Card\" and follow the instructions on the FABreader.", - "readerLabel": "Select FABreader", - "readerPlaceholder": "Select a FABreader", + "description": "To enroll a new NFC Card, choose a connected FabReader in the list below. Then click on the button \"Enroll new NFC Card\" and follow the instructions on the FabReader.", + "readerLabel": "Select FabReader", + "readerPlaceholder": "Select a FabReader", "cancel": "Cancel", "enroll": "Enroll" } -} \ No newline at end of file +} diff --git a/docs/developer/plugins.md b/docs/developer/plugins.md index c50bd320..938f5a7f 100644 --- a/docs/developer/plugins.md +++ b/docs/developer/plugins.md @@ -382,14 +382,14 @@ When a plugin is loaded: 2. The frontend plugin is instantiated and its `init` method is called with the plugin store 3. The plugin's `activate` method is called, allowing it to register functionality -## Example: FABReader Plugin +## Example: FabReader Plugin -The FABReader plugin is a complete example that demonstrates how to implement both frontend and backend functionality: +The FabReader plugin is a complete example that demonstrates how to implement both frontend and backend functionality: -- Frontend: Provides a UI for managing FAB readers -- Backend: Implements APIs for communicating with FAB reader devices +- Frontend: Provides a UI for managing FabReaders +- Backend: Implements APIs for communicating with FabReader devices -You can examine the FABReader plugin code in `/libs/plugin-fabreader` as a reference for creating your own plugins. +You can examine the FabReader plugin code in `/libs/plugin-fabreader` as a reference for creating your own plugins. ## Best Practices From 8dec01e907b4d4822f6d265456a0ed73f326c4ab Mon Sep 17 00:00:00 2001 From: Mario Voigt Date: Sun, 17 Aug 2025 20:38:25 +0200 Subject: [PATCH 3/5] More renamings --- .cursor/.cursorrules | 4 +- .env-export-swagger | 12 +- .env.example | 8 +- .env.serve | 12 +- .env.test | 10 +- CHANGELOG.md | 114 ++++++------- README.md | 12 +- apps/api/package.json | 2 +- apps/api/project.json | 2 +- apps/api/src/__test__/test-setup.ts | 4 +- .../api/src/analytics/analytics.controller.ts | 2 +- apps/api/src/analytics/analytics.module.ts | 2 +- .../src/analytics/analytics.service.spec.ts | 2 +- apps/api/src/analytics/analytics.service.ts | 2 +- apps/api/src/app/app.controller.spec.ts | 2 +- apps/api/src/app/app.controller.ts | 2 +- apps/api/src/app/app.service.spec.ts | 2 +- apps/api/src/app/app.service.ts | 2 +- apps/api/src/config/app.config.ts | 4 +- apps/api/src/database/datasource.ts | 9 +- .../1748886859855-seed-email-templates.ts | 10 +- .../email-template.controller.ts | 4 +- .../email-template/email-template.module.ts | 2 +- .../email-template/email-template.service.ts | 2 +- apps/api/src/email/email.service.ts | 4 +- apps/api/src/fabreader/card.controller.ts | 2 +- .../dtos/update-reader-response.dto.ts | 2 +- apps/api/src/fabreader/events.ts | 2 +- apps/api/src/fabreader/fabreader.module.ts | 2 +- apps/api/src/fabreader/fabreader.service.ts | 2 +- .../reader-states/enroll-ntag424.state.ts | 2 +- .../reader-states/reset-ntag424.state.ts | 2 +- .../reader-states/wait-for-nfc-tap.state.ts | 6 +- .../wait-for-resource-selection.state.ts | 2 +- .../modules/websockets/websocket.types.ts | 2 +- apps/api/src/fabreader/reader.controller.ts | 2 +- apps/api/src/main.bootstrap.ts | 8 +- apps/api/src/mqtt/mqtt-client.service.spec.ts | 45 ++--- apps/api/src/mqtt/mqtt-client.service.ts | 46 ++---- apps/api/src/mqtt/mqtt.module.ts | 7 +- .../mqtt/servers/mqtt-server.controller.ts | 4 +- .../src/mqtt/servers/mqtt-server.service.ts | 12 +- .../src/plugin-system/plugin.controller.ts | 2 +- apps/api/src/plugin-system/plugin.manifest.ts | 8 +- .../src/resources/dtos/createResource.dto.ts | 2 +- .../dtos/paginatedResourceResponse.dto.ts | 2 +- .../src/resources/dtos/updateResource.dto.ts | 2 +- .../groups/errors/groupNotFound.error.ts | 2 +- .../resourceGroups.introducers.controller.ts | 4 +- .../resourceGroups.introducers.service.ts | 2 +- .../introductions/isIntroducer.decorator.ts | 2 +- .../groups/introductions/isIntroducerGuard.ts | 2 +- ...resourceGroups.introductions.controller.ts | 2 +- .../resourceGroups.introductions.service.ts | 2 +- .../groups/resourceGroups.controller.ts | 4 +- .../resources/groups/resourceGroups.module.ts | 2 +- .../groups/resourceGroups.service.ts | 2 +- .../resourceIntroducers.controller.ts | 4 +- .../introducers/resourceIntroducers.module.ts | 2 +- .../resourceIntroducers.service.ts | 2 +- .../introductions/isIntroducer.decorator.ts | 2 +- .../introductions/isIntroducerGuard.ts | 4 +- .../resouceIntroductions.service.ts | 2 +- .../resourceIntroductions.controller.ts | 2 +- .../resourceIntroductions.module.ts | 2 +- apps/api/src/resources/iot/iot.service.ts | 2 +- .../config/mqtt-resource-config.controller.ts | 4 +- .../config/mqtt-resource-config.service.ts | 2 +- .../iot/mqtt/mqtt-resource.module.ts | 2 +- .../publisher/mqtt-publisher.service.spec.ts | 2 +- .../mqtt/publisher/mqtt-publisher.service.ts | 2 +- .../config/webhook-config.controller.ts | 4 +- .../webhooks/config/webhook-config.service.ts | 2 +- .../webhook-publisher.service.spec.ts | 2 +- .../publisher/webhook-publisher.service.ts | 2 +- .../resources/iot/webhooks/webhooks.module.ts | 2 +- .../resources/resources.controller.spec.ts | 4 +- .../api/src/resources/resources.controller.ts | 4 +- apps/api/src/resources/resources.module.ts | 2 +- .../src/resources/resources.service.spec.ts | 2 +- apps/api/src/resources/resources.service.ts | 2 +- apps/api/src/resources/sse/sse.controller.ts | 2 +- apps/api/src/resources/sse/sse.module.ts | 2 +- .../dtos/GetResourceHistoryResponse.dto.ts | 2 +- .../usage/dtos/getActiveUsageSession.dto.ts | 2 +- .../usage/events/resource-usage.events.ts | 2 +- .../usage/resourceUsage.controller.ts | 4 +- .../resources/usage/resourceUsage.module.ts | 2 +- .../usage/resourceUsage.service.spec.ts | 2 +- .../resources/usage/resourceUsage.service.ts | 2 +- .../auth/auth.controller.spec.ts | 4 +- .../users-and-auth/auth/auth.controller.ts | 2 +- .../users-and-auth/auth/auth.service.spec.ts | 2 +- .../src/users-and-auth/auth/auth.service.ts | 3 +- .../api/src/users-and-auth/auth/auth.types.ts | 2 +- .../auth/sso/dto/create-sso-provider.dto.ts | 21 +-- .../auth/sso/dto/update-sso-provider.dto.ts | 18 +- .../account-linking-required.exception.ts | 2 +- .../auth/sso/oidc/oidc.guard.ts | 4 +- .../auth/sso/oidc/oidc.strategy.ts | 2 +- .../auth/sso/sso.controller.spec.ts | 2 +- .../users-and-auth/auth/sso/sso.controller.ts | 4 +- .../auth/sso/sso.service.spec.ts | 2 +- .../users-and-auth/auth/sso/sso.service.ts | 2 +- .../strategies/jwt.strategy.spec.ts | 10 +- .../users-and-auth/strategies/jwt.strategy.ts | 2 +- .../strategies/local.strategy.spec.ts | 2 +- .../strategies/local.strategy.ts | 2 +- .../users-and-auth/users-and-auth.module.ts | 2 +- .../users/dtos/createUser.dto.ts | 2 +- .../users/dtos/paginatedUsersResponse.dto.ts | 2 +- .../users/users.controller.spec.ts | 4 +- .../users-and-auth/users/users.controller.ts | 4 +- .../users/users.service.spec.ts | 2 +- .../src/users-and-auth/users/users.service.ts | 10 +- apps/fabreader-firmware/README.md | 10 +- apps/fabreader-firmware/src/main.cpp | 4 +- apps/fabreader-firmware/src/persistence.hpp | 2 +- apps/frontend/.DS_Store | Bin 6148 -> 6148 bytes apps/frontend/index.html | 2 +- apps/frontend/jest.config.ts | 2 +- apps/frontend/public/apple-touch-icon.png | Bin 28100 -> 8519 bytes apps/frontend/public/favicon.ico | Bin 5238 -> 15406 bytes apps/frontend/public/icon-192-maskable.png | Bin 28557 -> 9601 bytes apps/frontend/public/icon-192.png | Bin 28804 -> 9601 bytes apps/frontend/public/icon-512-maskable.png | Bin 192185 -> 40120 bytes apps/frontend/public/icon-512.png | Bin 189032 -> 40120 bytes apps/frontend/public/logo.png | Bin 46005 -> 40120 bytes apps/frontend/src/api/index.ts | 4 +- .../src/app/account-settings/index.tsx | 17 +- apps/frontend/src/app/app.tsx | 6 +- .../src/app/confirm-email-change/index.tsx | 4 +- .../src/app/csv-export/csv-export.tsx | 10 +- .../resource-usage/resourceUsageExport.tsx | 4 +- apps/frontend/src/app/dependencies/index.tsx | 2 +- .../email-templates/EditEmailTemplatePage.tsx | 4 +- .../email-templates/EmailTemplatesPage.tsx | 4 +- .../FabreaderEditor/FabreaderEditor.tsx | 4 +- .../FabreaderFlashButton.tsx | 2 +- .../FabreaderList/FabreaderList.de.json | 10 +- .../FabreaderList/FabreaderList.en.json | 8 +- .../fabreader/FabreaderList/FabreaderList.tsx | 6 +- .../FabreaderSelect/FabreaderSelect.tsx | 2 +- .../fabreader/NfcCardList/NfcCardList.de.json | 10 +- .../fabreader/NfcCardList/NfcCardList.en.json | 12 +- .../app/fabreader/NfcCardList/NfcCardList.tsx | 6 +- apps/frontend/src/app/layout/sidebar.tsx | 4 +- apps/frontend/src/app/layout/sidebarItems.tsx | 4 +- .../frontend/src/app/mqtt/MqttServersPage.tsx | 9 +- .../app/mqtt/servers/CreateMqttServerPage.tsx | 4 +- .../app/mqtt/servers/EditMqttServerPage.tsx | 4 +- .../src/app/mqtt/servers/MqttServerList.tsx | 4 +- .../mqtt/servers/translations/create/de.json | 4 +- .../mqtt/servers/translations/create/en.json | 4 +- .../src/app/mqtt/servers/translations/de.json | 4 +- .../mqtt/servers/translations/edit/de.json | 4 +- .../mqtt/servers/translations/edit/en.json | 4 +- .../src/app/mqtt/servers/translations/en.json | 4 +- apps/frontend/src/app/plugins/PluginsList.tsx | 4 +- .../src/app/plugins/UploadPluginModal.tsx | 4 +- .../src/app/plugins/plugin-provider.tsx | 38 ++--- apps/frontend/src/app/plugins/plugin.state.ts | 6 +- .../src/app/reset-password/resetPassword.tsx | 13 +- .../GroupDetailsForm/index.tsx | 4 +- .../IntroducerManagement/index.tsx | 4 +- .../IntroductionsManagement/history/index.tsx | 2 +- .../IntroductionsManagement/index.tsx | 4 +- .../src/app/resource-groups/index.tsx | 4 +- .../upsertModal/resourceGroupUpsertModal.tsx | 4 +- .../src/app/resourceOverview/index.tsx | 2 +- .../resourceGroupCard/index.tsx | 4 +- .../resourceGroupCard/statusChip/index.tsx | 4 +- .../resourceOverview/toolbar/filter/index.tsx | 2 +- .../toolbar/scanner/index.tsx | 2 +- .../app/resourceOverview/toolbar/toolbar.tsx | 2 +- .../resources/IntroducerManagement/index.tsx | 4 +- .../IntroductionsManagement/history/index.tsx | 2 +- .../IntroductionsManagement/index.tsx | 4 +- .../app/resources/details/qrcode/index.tsx | 2 +- .../app/resources/details/resourceDetails.tsx | 4 +- .../app/resources/details/useQrCodeAction.ts | 4 +- .../documentation/DocumentationEditor.tsx | 4 +- .../documentation/DocumentationModal.tsx | 4 +- .../documentation/DocumentationView.tsx | 4 +- .../resources/editModal/resourceEditModal.tsx | 4 +- .../src/app/resources/groups/index.tsx | 4 +- .../esphome/ESPHomeConfigurationPanel.tsx | 20 +-- .../resources/iot-settings/iotSettings.tsx | 2 +- .../mqtt/MqttConfigurationPanel.tsx | 2 +- .../mqtt/components/MqttConfigForm.tsx | 4 +- .../mqtt/components/MqttConfigList.tsx | 4 +- .../mqtt/pages/TestMqttConfig.tsx | 4 +- .../webhooks/WebhookConfigurationPanel.tsx | 10 +- .../components/WebhookAdvancedSettings.tsx | 2 +- .../components/WebhookBasicSettings.tsx | 2 +- .../components/WebhookCreateModal.tsx | 2 +- .../webhooks/components/WebhookForm.tsx | 4 +- .../components/WebhookFormActions.tsx | 4 +- .../webhooks/components/WebhookList.tsx | 4 +- .../components/WebhookSecurityInfo.tsx | 2 +- .../components/WebhookTemplateEditor.tsx | 2 +- .../webhooks/hooks/useTemplatePreview.ts | 2 +- .../resources/iot-settings/webhooks/types.ts | 2 +- .../components/ActiveSessionDisplay/index.tsx | 4 +- .../usage/components/HistoryHeader/index.tsx | 2 +- .../usage/components/HistoryTable/index.tsx | 4 +- .../HistoryTable/utils/tableRows.tsx | 8 +- .../IntroductionRequiredDisplay/index.tsx | 6 +- .../OtherUserSessionDisplay/index.tsx | 8 +- .../components/ResourceUsageSession/index.tsx | 4 +- .../components/SessionNotesModal/index.tsx | 4 +- .../usage/components/SessionTimer/index.tsx | 4 +- .../components/StartSessionControls/index.tsx | 4 +- .../components/UsageNotesModal/index.tsx | 8 +- .../resources/usage/resourceUsageHistory.tsx | 4 +- apps/frontend/src/app/routes/index.tsx | 2 +- .../frontend/src/app/sso/SSOProvidersPage.tsx | 2 +- .../app/sso/providers/SSOProvidersList.tsx | 4 +- .../src/app/unauthorized/loginForm.tsx | 2 +- .../password-reset/passwordResetForm.tsx | 19 ++- .../src/app/unauthorized/registrationForm.tsx | 4 +- .../ssoLinkingRequiredModal/index.tsx | 4 +- .../src/app/unauthorized/ssoLogin.tsx | 4 +- .../unauthorized/unauthorized-layout/de.json | 6 +- .../unauthorized/unauthorized-layout/en.json | 6 +- .../unauthorized-layout/layout.tsx | 2 +- .../app/unauthorized/use-sso-callback-url.ts | 2 +- .../details/components/emailForm/index.tsx | 6 +- .../components/permissionsForm/index.tsx | 4 +- .../src/app/user-management/details/index.tsx | 4 +- .../src/app/user-management/index.tsx | 6 +- apps/frontend/src/app/verifyEmail.tsx | 28 +++- .../components/IntroducerManagement/index.tsx | 4 +- .../IntroductionStatusChip/index.tsx | 2 +- .../IntroductionsManagement/history/index.tsx | 4 +- .../IntroductionsManagement/index.tsx | 4 +- .../src/components/PWAUpdatePrompt/index.tsx | 2 +- .../installationProgressIndicator/index.tsx | 2 +- .../PasswordInput/PasswordInput.tsx | 19 +-- .../src/components/bootScreen/index.tsx | 2 +- .../deleteConfirmationModal/index.tsx | 2 +- apps/frontend/src/components/emptyState.tsx | 2 +- .../src/components/imageUpload/index.tsx | 2 +- apps/frontend/src/components/logo/index.tsx | 4 +- .../src/components/pwaInstall/index.tsx | 4 +- .../components/userSelectionList/index.tsx | 6 +- apps/frontend/src/hooks/useAuth.ts | 2 +- .../src/hooks/useHasValidIntroduction.ts | 2 +- apps/frontend/src/main.tsx | 2 +- .../src/service-worker/site.webmanifest.json | 6 +- apps/frontend/src/test-utils/fixtures.ts | 2 +- apps/frontend/tsconfig.app.json | 2 +- apps/frontend/vite.config.ts | 2 +- build.sh | 8 +- config/mosquitto/mosquitto.conf | 2 +- docker-compose.local.yml | 4 +- docs/HOME.md | 16 +- docs/developer/get-started.md | 18 +- docs/developer/openapi.md | 30 ++-- docs/developer/plugins.md | 84 +++++----- docs/index.html | 155 ++++++++++-------- docs/setup/beginner-guide.md | 68 ++++---- docs/setup/docker-compose-guide.md | 92 +++++------ docs/setup/installation.md | 40 ++--- docs/setup/portainer-guide.md | 70 ++++---- docs/setup/ssl-configuration.md | 38 ++--- .../resources/iots/mqtt/mqtt-deployment.md | 4 +- .../user/resources/iots/mqtt/mqtt-examples.md | 8 +- .../user/resources/iots/mqtt/mqtt-explorer.md | 4 +- .../resources/iots/mqtt/mqtt-integration.md | 6 +- .../resources/iots/mqtt/mqtt-setup-guide.md | 14 +- libs/api-client/package.json | 2 +- libs/api-client/src/generated/Api.ts | 17 +- libs/database-entities/package.json | 2 +- .../src/lib/entities/mqttServer.entity.ts | 2 +- libs/env/package.json | 4 +- libs/plugins-backend-sdk/package.json | 4 +- libs/plugins-backend-sdk/src/index.ts | 4 +- .../src/lib/auth-decorator.ts | 2 +- .../plugins-backend-sdk/src/lib/auth.types.ts | 2 +- .../src/lib/plugin.interface.ts | 2 +- libs/plugins-frontend-sdk/package.json | 2 +- .../src/lib/frontend.pluggable.ts | 8 +- .../src/lib/frontend.routing.ts | 2 +- libs/plugins-frontend-sdk/vite.config.ts | 4 +- libs/plugins-frontend-ui/package.json | 2 +- .../src/lib/components/FabAccessUser/de.json | 4 + .../src/lib/components/FabAccessUser/en.json | 4 + .../lib/components/FabAccessUser/index.tsx | 36 ++++ .../ResourceSelector/ResourceSelector.tsx | 2 +- .../src/lib/components/index.ts | 2 +- .../lib/components/user-search/UserSearch.tsx | 8 +- libs/plugins-frontend-ui/vite.config.ts | 4 +- libs/react-query-client/package.json | 2 +- .../src/lib/requests/schemas.gen.ts | 14 +- .../src/lib/requests/types.gen.ts | 4 +- libs/react-query-client/vite.config.ts | 4 +- package.json | 2 +- project.json | 2 +- test/docker-compose.yaml | 11 +- tools/generators/README.md | 6 +- tools/generators/package.json | 2 +- tsconfig.base.json | 16 +- 303 files changed, 1055 insertions(+), 1044 deletions(-) create mode 100644 libs/plugins-frontend-ui/src/lib/components/FabAccessUser/de.json create mode 100644 libs/plugins-frontend-ui/src/lib/components/FabAccessUser/en.json create mode 100644 libs/plugins-frontend-ui/src/lib/components/FabAccessUser/index.tsx diff --git a/.cursor/.cursorrules b/.cursor/.cursorrules index 3f9d8425..244a3eec 100644 --- a/.cursor/.cursorrules +++ b/.cursor/.cursorrules @@ -9,7 +9,7 @@ - React Query hooks are auto-generated from the API's Swagger documentation - After adding/modifying API endpoints, regenerate the client: `pnpm nx build react-query-client --skipNxCache` -- The hooks will be available in `@attraccess/react-query-client` after regeneration +- The hooks will be available in `@fabaccess/react-query-client` after regeneration - Use naming pattern: `useUsersService` (e.g., `useUsersServiceRequestEmailChange`) ## Project Structure @@ -77,7 +77,7 @@ ### React Query Usage -- Import hooks from `@attraccess/react-query-client` +- Import hooks from `@fabaccess/react-query-client` - Use mutation callbacks: `onSuccess`, `onError` - Pass `requestBody` parameter for POST/PATCH requests - Use `id` parameter for route params diff --git a/.env-export-swagger b/.env-export-swagger index a2e1c577..e0ca414f 100644 --- a/.env-export-swagger +++ b/.env-export-swagger @@ -5,13 +5,13 @@ AUTH_SESSION_SECRET=super-secret-key # DB_TYPE=postgres # DB_HOST=localhost # DB_PORT=2345 -# DB_USERNAME=attraccess -# DB_PASSWORD=attraccess -# DB_DATABASE=attraccess +# DB_USERNAME=fabaccess +# DB_PASSWORD=fabaccess +# DB_DATABASE=fabaccess DB_TYPE=sqlite -VITE_ATTRACCESS_URL=http://localhost:3000 +VITE_FABACCESS_URL=http://localhost:3000 FRONTEND_URL=http://localhost:4200 SMTP_SERVICE=SMTP @@ -19,7 +19,7 @@ SMTP_HOST=localhost SMTP_PORT=1025 SMTP_USER= SMTP_PASS= -SMTP_FROM=no-reply@attraccess.org +SMTP_FROM=no-reply@fabaccess.org # Comma-separated list of enabled log levels: error,warn,log,debug,verbose LOG_LEVELS=error,warn,log,debug @@ -27,4 +27,4 @@ LOG_LEVELS=error,warn,log,debug PLUGIN_DIR=./storage/plugins STATIC_FRONTEND_FILE_PATH=dist/apps/frontend -STATIC_DOCS_FILE_PATH=docs \ No newline at end of file +STATIC_DOCS_FILE_PATH=docs diff --git a/.env.example b/.env.example index 5de8f1a2..42b05af6 100644 --- a/.env.example +++ b/.env.example @@ -5,13 +5,13 @@ AUTH_SESSION_SECRET= # DB_TYPE=postgres # DB_HOST=localhost # DB_PORT=2345 -# DB_USERNAME=attraccess -# DB_PASSWORD=attraccess -# DB_DATABASE=attraccess +# DB_USERNAME=fabaccess +# DB_PASSWORD=fabaccess +# DB_DATABASE=fabaccess DB_TYPE=sqlite -VITE_ATTRACCESS_URL=http://localhost:3000 +VITE_FABACCESS_URL=http://localhost:3000 FRONTEND_URL=http://localhost:4200 SMTP_SERVICE=SMTP diff --git a/.env.serve b/.env.serve index 6765cfba..5ba06e3e 100644 --- a/.env.serve +++ b/.env.serve @@ -5,25 +5,25 @@ AUTH_SESSION_SECRET=super-secret-key # DB_TYPE=postgres # DB_HOST=localhost # DB_PORT=2345 -# DB_USERNAME=attraccess -# DB_PASSWORD=attraccess -# DB_DATABASE=attraccess +# DB_USERNAME=fabaccess +# DB_PASSWORD=fabaccess +# DB_DATABASE=fabaccess DB_TYPE=sqlite # HTTP -VITE_ATTRACCESS_URL=http://localhost:3000 +VITE_FABACCESS_URL=http://localhost:3000 FRONTEND_URL=http://localhost:4200 # HTTPS #SSL_GENERATE_SELF_SIGNED_CERTIFICATES=true -#VITE_ATTRACCESS_URL=https://192.168.178.91 +#VITE_FABACCESS_URL=https://192.168.178.91 SMTP_SERVICE=SMTP SMTP_HOST=localhost SMTP_PORT=1025 SMTP_USER= SMTP_PASS= -SMTP_FROM=no-reply@attraccess.org +SMTP_FROM=no-reply@fabaccess.org # Comma-separated list of enabled log levels: error,warn,log,debug,verbose LOG_LEVELS=error,warn,log,debug,verbose diff --git a/.env.test b/.env.test index 1310c0f3..5b8f908e 100644 --- a/.env.test +++ b/.env.test @@ -3,20 +3,20 @@ AUTH_JWT_SECRET=test-secret-key AUTH_SESSION_SECRET=test-session-secret DB_TYPE=sqlite -DB_FILE=e2e.attraccess.sqlite +DB_FILE=e2e.fabaccess.sqlite -VITE_ATTRACCESS_URL=http://localhost:3000 +VITE_FABACCESS_URL=http://localhost:3000 FRONTEND_URL=http://localhost:4200 # Mailpit configuration SMTP_HOST=localhost SMTP_PORT=1025 -SMTP_USER=no-reply@attraccess.local +SMTP_USER=no-reply@fabaccess.local SMTP_PASS= -SMTP_FROM=no-reply@attraccess.local +SMTP_FROM=no-reply@fabaccess.local SMTP_SECURE=false LOG_LEVELS= #log,warn,error,debug,info -STORAGE_PATH=../../storage/spec/ \ No newline at end of file +STORAGE_PATH=../../storage/spec/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 569858e5..32a62af6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,11 +18,11 @@ This was a version bump only, there were no code changes. ### 🩹 Fixes -- **plugins:** fabreader now bundling deps ([e1764e6](https://github.com/FabInfra/Attraccess/commit/e1764e6)) -- **plugins:** fabreader now bundling deps ([f8b2f9e](https://github.com/FabInfra/Attraccess/commit/f8b2f9e)) -- **plugins:** correct artifact download link ([32d2cfc](https://github.com/FabInfra/Attraccess/commit/32d2cfc)) -- **plugins:** correctly bundle and resolve deps ([3c85010](https://github.com/FabInfra/Attraccess/commit/3c85010)) -- **plugins:** correctly bundle and resolve deps ([ffce4c7](https://github.com/FabInfra/Attraccess/commit/ffce4c7)) +- **plugins:** fabreader now bundling deps ([e1764e6](https://github.com/FabInfra/FabAccess/commit/e1764e6)) +- **plugins:** fabreader now bundling deps ([f8b2f9e](https://github.com/FabInfra/FabAccess/commit/f8b2f9e)) +- **plugins:** correct artifact download link ([32d2cfc](https://github.com/FabInfra/FabAccess/commit/32d2cfc)) +- **plugins:** correctly bundle and resolve deps ([3c85010](https://github.com/FabInfra/FabAccess/commit/3c85010)) +- **plugins:** correctly bundle and resolve deps ([ffce4c7](https://github.com/FabInfra/FabAccess/commit/ffce4c7)) ### ❤️ Thank You @@ -72,35 +72,35 @@ This was a version bump only, there were no code changes. ### 🚀 Features -- create react-query client and refactor frontend to use it ([f814076](https://github.com/FabInfra/Attraccess/commit/f814076)) -- implement resource groups management and UI enhancements ([8e02c3f](https://github.com/FabInfra/Attraccess/commit/8e02c3f)) -- docker images per pr ([38365f4](https://github.com/FabInfra/Attraccess/commit/38365f4)) -- docker images per pr -> comment to pr ([0152b71](https://github.com/FabInfra/Attraccess/commit/0152b71)) -- docker images per pr ([b7e1d45](https://github.com/FabInfra/Attraccess/commit/b7e1d45)) -- docker images per pr ([616eb16](https://github.com/FabInfra/Attraccess/commit/616eb16)) -- docker images for main ([ec75146](https://github.com/FabInfra/Attraccess/commit/ec75146)) -- basic plugin system foundation for api, frontend still missing ([d67849b](https://github.com/FabInfra/Attraccess/commit/d67849b)) -- pwa install prompt ([74672ce](https://github.com/FabInfra/Attraccess/commit/74672ce)) -- **docs:** added docsify docs ([dd27e34](https://github.com/FabInfra/Attraccess/commit/dd27e34)) -- **fabreader:** it works ([680c3c1](https://github.com/FabInfra/Attraccess/commit/680c3c1)) -- **fabreader:** card enrollment, reset and auth for machine control works ([e029259](https://github.com/FabInfra/Attraccess/commit/e029259)) -- **plugins:** set plugins dir in docker ([8173d6d](https://github.com/FabInfra/Attraccess/commit/8173d6d)) -- **plugins:** management ui and release ([28c192d](https://github.com/FabInfra/Attraccess/commit/28c192d)) -- **plugins:** management ui and release ([25d24c6](https://github.com/FabInfra/Attraccess/commit/25d24c6)) -- **plugins:** management ui and release ([736a617](https://github.com/FabInfra/Attraccess/commit/736a617)) +- create react-query client and refactor frontend to use it ([f814076](https://github.com/FabInfra/FabAccess/commit/f814076)) +- implement resource groups management and UI enhancements ([8e02c3f](https://github.com/FabInfra/FabAccess/commit/8e02c3f)) +- docker images per pr ([38365f4](https://github.com/FabInfra/FabAccess/commit/38365f4)) +- docker images per pr -> comment to pr ([0152b71](https://github.com/FabInfra/FabAccess/commit/0152b71)) +- docker images per pr ([b7e1d45](https://github.com/FabInfra/FabAccess/commit/b7e1d45)) +- docker images per pr ([616eb16](https://github.com/FabInfra/FabAccess/commit/616eb16)) +- docker images for main ([ec75146](https://github.com/FabInfra/FabAccess/commit/ec75146)) +- basic plugin system foundation for api, frontend still missing ([d67849b](https://github.com/FabInfra/FabAccess/commit/d67849b)) +- pwa install prompt ([74672ce](https://github.com/FabInfra/FabAccess/commit/74672ce)) +- **docs:** added docsify docs ([dd27e34](https://github.com/FabInfra/FabAccess/commit/dd27e34)) +- **fabreader:** it works ([680c3c1](https://github.com/FabInfra/FabAccess/commit/680c3c1)) +- **fabreader:** card enrollment, reset and auth for machine control works ([e029259](https://github.com/FabInfra/FabAccess/commit/e029259)) +- **plugins:** set plugins dir in docker ([8173d6d](https://github.com/FabInfra/FabAccess/commit/8173d6d)) +- **plugins:** management ui and release ([28c192d](https://github.com/FabInfra/FabAccess/commit/28c192d)) +- **plugins:** management ui and release ([25d24c6](https://github.com/FabInfra/FabAccess/commit/25d24c6)) +- **plugins:** management ui and release ([736a617](https://github.com/FabInfra/FabAccess/commit/736a617)) ### 🩹 Fixes -- enhance resource usage session management and UI updates ([cecdf05](https://github.com/FabInfra/Attraccess/commit/cecdf05)) -- dockerfile now compatible with plugins ([e32c1ea](https://github.com/FabInfra/Attraccess/commit/e32c1ea)) -- shared deps ([c08b795](https://github.com/FabInfra/Attraccess/commit/c08b795)) -- i18n does not like to be federated ([fe46549](https://github.com/FabInfra/Attraccess/commit/fe46549)) -- **SSO:** delete and edit providers ([1351f18](https://github.com/FabInfra/Attraccess/commit/1351f18)) -- **plugins:** module federation now working in production build ([47c9d17](https://github.com/FabInfra/Attraccess/commit/47c9d17)) -- **plugins:** release of fabreader plugin use correct name ([241cdd1](https://github.com/FabInfra/Attraccess/commit/241cdd1)) -- **plugins:** release of fabreader plugin use correct name ([b5e3cdc](https://github.com/FabInfra/Attraccess/commit/b5e3cdc)) -- **plugins:** plugin artifact url ([056a0d9](https://github.com/FabInfra/Attraccess/commit/056a0d9)) -- **plugins:** plugin artifact url ([df1c016](https://github.com/FabInfra/Attraccess/commit/df1c016)) +- enhance resource usage session management and UI updates ([cecdf05](https://github.com/FabInfra/FabAccess/commit/cecdf05)) +- dockerfile now compatible with plugins ([e32c1ea](https://github.com/FabInfra/FabAccess/commit/e32c1ea)) +- shared deps ([c08b795](https://github.com/FabInfra/FabAccess/commit/c08b795)) +- i18n does not like to be federated ([fe46549](https://github.com/FabInfra/FabAccess/commit/fe46549)) +- **SSO:** delete and edit providers ([1351f18](https://github.com/FabInfra/FabAccess/commit/1351f18)) +- **plugins:** module federation now working in production build ([47c9d17](https://github.com/FabInfra/FabAccess/commit/47c9d17)) +- **plugins:** release of fabreader plugin use correct name ([241cdd1](https://github.com/FabInfra/FabAccess/commit/241cdd1)) +- **plugins:** release of fabreader plugin use correct name ([b5e3cdc](https://github.com/FabInfra/FabAccess/commit/b5e3cdc)) +- **plugins:** plugin artifact url ([056a0d9](https://github.com/FabInfra/FabAccess/commit/056a0d9)) +- **plugins:** plugin artifact url ([df1c016](https://github.com/FabInfra/FabAccess/commit/df1c016)) ### ❤️ Thank You @@ -110,35 +110,35 @@ This was a version bump only, there were no code changes. ### 🚀 Features -- create react-query client and refactor frontend to use it ([f814076](https://github.com/FabInfra/Attraccess/commit/f814076)) -- implement resource groups management and UI enhancements ([8e02c3f](https://github.com/FabInfra/Attraccess/commit/8e02c3f)) -- docker images per pr ([38365f4](https://github.com/FabInfra/Attraccess/commit/38365f4)) -- docker images per pr -> comment to pr ([0152b71](https://github.com/FabInfra/Attraccess/commit/0152b71)) -- docker images per pr ([b7e1d45](https://github.com/FabInfra/Attraccess/commit/b7e1d45)) -- docker images per pr ([616eb16](https://github.com/FabInfra/Attraccess/commit/616eb16)) -- docker images for main ([ec75146](https://github.com/FabInfra/Attraccess/commit/ec75146)) -- basic plugin system foundation for api, frontend still missing ([d67849b](https://github.com/FabInfra/Attraccess/commit/d67849b)) -- pwa install prompt ([74672ce](https://github.com/FabInfra/Attraccess/commit/74672ce)) -- **docs:** added docsify docs ([dd27e34](https://github.com/FabInfra/Attraccess/commit/dd27e34)) -- **fabreader:** it works ([680c3c1](https://github.com/FabInfra/Attraccess/commit/680c3c1)) -- **fabreader:** card enrollment, reset and auth for machine control works ([e029259](https://github.com/FabInfra/Attraccess/commit/e029259)) -- **plugins:** set plugins dir in docker ([8173d6d](https://github.com/FabInfra/Attraccess/commit/8173d6d)) -- **plugins:** management ui and release ([28c192d](https://github.com/FabInfra/Attraccess/commit/28c192d)) -- **plugins:** management ui and release ([25d24c6](https://github.com/FabInfra/Attraccess/commit/25d24c6)) -- **plugins:** management ui and release ([736a617](https://github.com/FabInfra/Attraccess/commit/736a617)) +- create react-query client and refactor frontend to use it ([f814076](https://github.com/FabInfra/FabAccess/commit/f814076)) +- implement resource groups management and UI enhancements ([8e02c3f](https://github.com/FabInfra/FabAccess/commit/8e02c3f)) +- docker images per pr ([38365f4](https://github.com/FabInfra/FabAccess/commit/38365f4)) +- docker images per pr -> comment to pr ([0152b71](https://github.com/FabInfra/FabAccess/commit/0152b71)) +- docker images per pr ([b7e1d45](https://github.com/FabInfra/FabAccess/commit/b7e1d45)) +- docker images per pr ([616eb16](https://github.com/FabInfra/FabAccess/commit/616eb16)) +- docker images for main ([ec75146](https://github.com/FabInfra/FabAccess/commit/ec75146)) +- basic plugin system foundation for api, frontend still missing ([d67849b](https://github.com/FabInfra/FabAccess/commit/d67849b)) +- pwa install prompt ([74672ce](https://github.com/FabInfra/FabAccess/commit/74672ce)) +- **docs:** added docsify docs ([dd27e34](https://github.com/FabInfra/FabAccess/commit/dd27e34)) +- **fabreader:** it works ([680c3c1](https://github.com/FabInfra/FabAccess/commit/680c3c1)) +- **fabreader:** card enrollment, reset and auth for machine control works ([e029259](https://github.com/FabInfra/FabAccess/commit/e029259)) +- **plugins:** set plugins dir in docker ([8173d6d](https://github.com/FabInfra/FabAccess/commit/8173d6d)) +- **plugins:** management ui and release ([28c192d](https://github.com/FabInfra/FabAccess/commit/28c192d)) +- **plugins:** management ui and release ([25d24c6](https://github.com/FabInfra/FabAccess/commit/25d24c6)) +- **plugins:** management ui and release ([736a617](https://github.com/FabInfra/FabAccess/commit/736a617)) ### 🩹 Fixes -- enhance resource usage session management and UI updates ([cecdf05](https://github.com/FabInfra/Attraccess/commit/cecdf05)) -- dockerfile now compatible with plugins ([e32c1ea](https://github.com/FabInfra/Attraccess/commit/e32c1ea)) -- shared deps ([c08b795](https://github.com/FabInfra/Attraccess/commit/c08b795)) -- i18n does not like to be federated ([fe46549](https://github.com/FabInfra/Attraccess/commit/fe46549)) -- **SSO:** delete and edit providers ([1351f18](https://github.com/FabInfra/Attraccess/commit/1351f18)) -- **plugins:** module federation now working in production build ([47c9d17](https://github.com/FabInfra/Attraccess/commit/47c9d17)) -- **plugins:** release of fabreader plugin use correct name ([241cdd1](https://github.com/FabInfra/Attraccess/commit/241cdd1)) -- **plugins:** release of fabreader plugin use correct name ([b5e3cdc](https://github.com/FabInfra/Attraccess/commit/b5e3cdc)) -- **plugins:** plugin artifact url ([056a0d9](https://github.com/FabInfra/Attraccess/commit/056a0d9)) -- **plugins:** plugin artifact url ([df1c016](https://github.com/FabInfra/Attraccess/commit/df1c016)) +- enhance resource usage session management and UI updates ([cecdf05](https://github.com/FabInfra/FabAccess/commit/cecdf05)) +- dockerfile now compatible with plugins ([e32c1ea](https://github.com/FabInfra/FabAccess/commit/e32c1ea)) +- shared deps ([c08b795](https://github.com/FabInfra/FabAccess/commit/c08b795)) +- i18n does not like to be federated ([fe46549](https://github.com/FabInfra/FabAccess/commit/fe46549)) +- **SSO:** delete and edit providers ([1351f18](https://github.com/FabInfra/FabAccess/commit/1351f18)) +- **plugins:** module federation now working in production build ([47c9d17](https://github.com/FabInfra/FabAccess/commit/47c9d17)) +- **plugins:** release of fabreader plugin use correct name ([241cdd1](https://github.com/FabInfra/FabAccess/commit/241cdd1)) +- **plugins:** release of fabreader plugin use correct name ([b5e3cdc](https://github.com/FabInfra/FabAccess/commit/b5e3cdc)) +- **plugins:** plugin artifact url ([056a0d9](https://github.com/FabInfra/FabAccess/commit/056a0d9)) +- **plugins:** plugin artifact url ([df1c016](https://github.com/FabInfra/FabAccess/commit/df1c016)) ### ❤️ Thank You diff --git a/README.md b/README.md index 69a1f686..781411ea 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Attraccess +# FabAccess A comprehensive resource management system for tracking and managing access to shared resources. @@ -13,7 +13,7 @@ A comprehensive resource management system for tracking and managing access to s ## ESPHome Integration -Attraccess provides [ESPHome components](https://github.com/FabInfra/Attraccess-esphome-components) for easily integrating IoT devices with your access control system: +FabAccess provides [ESPHome components](https://github.com/FabInfra/FabAccess-esphome-components) for easily integrating IoT devices with your access control system: - Real-time resource status monitoring via Server-Sent Events (SSE) - No polling required - uses persistent connections for efficient updates @@ -22,17 +22,17 @@ Attraccess provides [ESPHome components](https://github.com/FabInfra/Attraccess- - Enables automation based on resource status (availability, usage, etc.) - Provides both sensors and binary sensors for monitoring -To integrate your IoT devices with Attraccess, add this to your ESPHome configuration: +To integrate your IoT devices with FabAccess, add this to your ESPHome configuration: ```yaml external_components: - source: type: git - url: https://github.com/FabInfra/Attraccess-esphome-components.git - components: [attraccess_resource] + url: https://github.com/FabInfra/FabAccess-esphome-components.git + components: [fabaccess_resource] ``` -See the [Attraccess ESPHome Components repository](https://github.com/FabInfra/Attraccess-esphome-components) for detailed documentation and examples. +See the [FabAccess ESPHome Components repository](https://github.com/FabInfra/FabAccess-esphome-components) for detailed documentation and examples. ## Image Support diff --git a/apps/api/package.json b/apps/api/package.json index f847092b..c3ceaa07 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -1,5 +1,5 @@ { - "name": "@attraccess/api", + "name": "@fabaccess/api", "dependencies": { "@nestjs-modules/mailer": "^2.0.2", "@nestjs/common": "^11.1.0", diff --git a/apps/api/project.json b/apps/api/project.json index 2aa96c23..62f81de6 100644 --- a/apps/api/project.json +++ b/apps/api/project.json @@ -65,7 +65,7 @@ "cache": true, "outputs": ["{workspaceRoot}/dist/apps/{projectName}-swagger/swagger.json"], "options": { - "command": "AUTH_SESSION_SECRET=super-secret VITE_ATTRACCESS_URL=http://localhost:3000 AUTH_JWT_ORIGIN=ENV AUTH_JWT_SECRET=swagger-export-dummy-jwt-secret123 SMTP_SERVICE=SMTP SMTP_HOST=not-a-host SMTP_PORT=1234 SMTP_FROM=mail@attraccess.org FRONTEND_URL=http://localhost:4200 node dist/apps/api-swagger/main.js" + "command": "AUTH_SESSION_SECRET=super-secret VITE_FABACCESS_URL=http://localhost:3000 AUTH_JWT_ORIGIN=ENV AUTH_JWT_SECRET=swagger-export-dummy-jwt-secret123 SMTP_SERVICE=SMTP SMTP_HOST=not-a-host SMTP_PORT=1234 SMTP_FROM=mail@fabaccess.org FRONTEND_URL=http://localhost:4200 node dist/apps/api-swagger/main.js" } }, "test": { diff --git a/apps/api/src/__test__/test-setup.ts b/apps/api/src/__test__/test-setup.ts index 78659c8b..ad5a88b7 100644 --- a/apps/api/src/__test__/test-setup.ts +++ b/apps/api/src/__test__/test-setup.ts @@ -1,7 +1,7 @@ import { INestApplication } from '@nestjs/common'; import { bootstrap } from '../main.bootstrap'; import request from 'supertest'; -import { AuthenticationType, User } from '@attraccess/database-entities'; +import { AuthenticationType, User } from '@fabaccess/database-entities'; import { UsersService } from '../users-and-auth/users/users.service'; import { AuthService } from '../users-and-auth/auth/auth.service'; import { nanoid } from 'nanoid'; @@ -52,7 +52,7 @@ export class TestSetup { async createUser(username: string, permissions?: User['systemPermissions']) { let user = await TestSetup.usersService.createOne({ username: `${username}-${this.testInstanceIdentifier}`, - email: `${username}-${this.testInstanceIdentifier}@attraccess.org`, + email: `${username}-${this.testInstanceIdentifier}@fabaccess.org`, externalIdentifier: null, }); diff --git a/apps/api/src/analytics/analytics.controller.ts b/apps/api/src/analytics/analytics.controller.ts index f6d12d7f..6e559ed6 100644 --- a/apps/api/src/analytics/analytics.controller.ts +++ b/apps/api/src/analytics/analytics.controller.ts @@ -1,7 +1,7 @@ import { Controller, Get, Query } from '@nestjs/common'; import { DateRangeValue } from './dtos/dateRangeValue'; import { AnalyticsService } from './analytics.service'; -import { Auth, ResourceUsage } from '@attraccess/plugins-backend-sdk'; +import { Auth, ResourceUsage } from '@fabaccess/plugins-backend-sdk'; import { ApiResponse, ApiTags } from '@nestjs/swagger'; @ApiTags('Analytics') diff --git a/apps/api/src/analytics/analytics.module.ts b/apps/api/src/analytics/analytics.module.ts index 7cb15734..2230e9a6 100644 --- a/apps/api/src/analytics/analytics.module.ts +++ b/apps/api/src/analytics/analytics.module.ts @@ -2,7 +2,7 @@ import { Module } from '@nestjs/common'; import { AnalyticsController } from './analytics.controller'; import { AnalyticsService } from './analytics.service'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { ResourceUsage } from '@attraccess/database-entities'; +import { ResourceUsage } from '@fabaccess/database-entities'; @Module({ imports: [TypeOrmModule.forFeature([ResourceUsage])], diff --git a/apps/api/src/analytics/analytics.service.spec.ts b/apps/api/src/analytics/analytics.service.spec.ts index df24bf5d..4b950d8b 100644 --- a/apps/api/src/analytics/analytics.service.spec.ts +++ b/apps/api/src/analytics/analytics.service.spec.ts @@ -1,7 +1,7 @@ import { Test, TestingModule } from '@nestjs/testing'; import { AnalyticsService } from './analytics.service'; import { getRepositoryToken } from '@nestjs/typeorm'; -import { ResourceUsage } from '@attraccess/database-entities'; +import { ResourceUsage } from '@fabaccess/database-entities'; import { Between, Repository } from 'typeorm'; import { DateRangeValue } from './dtos/dateRangeValue'; diff --git a/apps/api/src/analytics/analytics.service.ts b/apps/api/src/analytics/analytics.service.ts index 4f2dac32..1625b2e0 100644 --- a/apps/api/src/analytics/analytics.service.ts +++ b/apps/api/src/analytics/analytics.service.ts @@ -1,6 +1,6 @@ import { Injectable } from '@nestjs/common'; import { DateRangeValue } from './dtos/dateRangeValue'; -import { ResourceUsage } from '@attraccess/database-entities'; +import { ResourceUsage } from '@fabaccess/database-entities'; import { InjectRepository } from '@nestjs/typeorm'; import { Between, FindManyOptions, Repository } from 'typeorm'; diff --git a/apps/api/src/app/app.controller.spec.ts b/apps/api/src/app/app.controller.spec.ts index d83881ca..b7c1e045 100644 --- a/apps/api/src/app/app.controller.spec.ts +++ b/apps/api/src/app/app.controller.spec.ts @@ -15,7 +15,7 @@ describe('AppController', () => { describe('/info', () => { it('should return api information', () => { const appController = app.get(AppController); - expect(appController.getInfo()).toEqual({ name: 'Attraccess API', status: 'ok' }); + expect(appController.getInfo()).toEqual({ name: 'FabAccess API', status: 'ok' }); }); }); }); diff --git a/apps/api/src/app/app.controller.ts b/apps/api/src/app/app.controller.ts index c7999b9a..0796666b 100644 --- a/apps/api/src/app/app.controller.ts +++ b/apps/api/src/app/app.controller.ts @@ -15,7 +15,7 @@ export class AppController { schema: { type: 'object', properties: { - name: { type: 'string', example: 'Attraccess API' }, + name: { type: 'string', example: 'FabAccess API' }, status: { type: 'string', example: 'ok' }, }, }, diff --git a/apps/api/src/app/app.service.spec.ts b/apps/api/src/app/app.service.spec.ts index 91698932..6bc7fc05 100644 --- a/apps/api/src/app/app.service.spec.ts +++ b/apps/api/src/app/app.service.spec.ts @@ -14,7 +14,7 @@ describe('AppService', () => { describe('getInfo', () => { it('should return api information', () => { - expect(service.getInfo()).toEqual({ name: 'Attraccess API', status: 'ok' }); + expect(service.getInfo()).toEqual({ name: 'FabAccess API', status: 'ok' }); }); }); }); diff --git a/apps/api/src/app/app.service.ts b/apps/api/src/app/app.service.ts index b05035bf..e95674bd 100644 --- a/apps/api/src/app/app.service.ts +++ b/apps/api/src/app/app.service.ts @@ -3,6 +3,6 @@ import { Injectable } from '@nestjs/common'; @Injectable() export class AppService { getInfo(): { name: string; status: string } { - return { name: 'Attraccess API', status: 'ok' }; + return { name: 'FabAccess API', status: 'ok' }; } } diff --git a/apps/api/src/config/app.config.ts b/apps/api/src/config/app.config.ts index 261f5eb8..2ac2b07c 100644 --- a/apps/api/src/config/app.config.ts +++ b/apps/api/src/config/app.config.ts @@ -20,11 +20,11 @@ const AppEnvSchema = z message: 'Invalid log level(s). Allowed: log, error, warn, debug, verbose.', }), AUTH_SESSION_SECRET: z.string().min(1, { message: 'AUTH_SESSION_SECRET is required' }), - VITE_ATTRACCESS_URL: z.string().url({ message: 'VITE_ATTRACCESS_URL must be a valid URL' }), + VITE_FABACCESS_URL: z.string().url({ message: 'VITE_FABACCESS_URL must be a valid URL' }), FRONTEND_URL: z .string() .url({ message: 'FRONTEND_URL must be a valid URL' }) - .default(process.env.VITE_ATTRACCESS_URL), + .default(process.env.VITE_FABACCESS_URL), GLOBAL_PREFIX: z.string().default('api'), VERSION: z.string().default(process.env.npm_package_version || '1.0.0'), AUTH_JWT_SECRET: z.string(), diff --git a/apps/api/src/database/datasource.ts b/apps/api/src/database/datasource.ts index ed70d0c3..0245003b 100644 --- a/apps/api/src/database/datasource.ts +++ b/apps/api/src/database/datasource.ts @@ -1,10 +1,11 @@ // typeorm.config.ts import { DataSource, DataSourceOptions } from 'typeorm'; -import { loadEnv } from '@attraccess/env'; +import { loadEnv } from '@fabaccess/env'; import { join, resolve } from 'path'; -import { entities } from '@attraccess/database-entities'; +import { entities } from '@fabaccess/database-entities'; import * as migrations from './migrations'; +import { existsSync } from 'fs'; const envType = loadEnv((z) => ({ DB_TYPE: z.enum(['postgres', 'sqlite']).default('sqlite'), @@ -44,7 +45,9 @@ function loadPostgresConfig() { function loadSqliteConfig() { const storageEnv = loadEnv((z) => ({ STORAGE_ROOT: z.string().default(join(process.cwd(), 'storage')) })); - const dbFile = resolve(join(storageEnv.STORAGE_ROOT, 'attraccess.sqlite')); + const fabaccessDbFile = resolve(join(storageEnv.STORAGE_ROOT, 'fabaccess.sqlite')); + + let dbFile = fabaccessDbFile; console.log('dbFile', dbFile); diff --git a/apps/api/src/database/migrations/1748886859855-seed-email-templates.ts b/apps/api/src/database/migrations/1748886859855-seed-email-templates.ts index f664958e..6c41f02f 100644 --- a/apps/api/src/database/migrations/1748886859855-seed-email-templates.ts +++ b/apps/api/src/database/migrations/1748886859855-seed-email-templates.ts @@ -30,7 +30,7 @@ export const RESET_PASSWORD_MJML_TEMPLATE = ` - Attraccess + FabAccess @@ -87,7 +87,7 @@ export const RESET_PASSWORD_MJML_TEMPLATE = ` Visit us: {{host.frontend}} | - GitHub + GitHub @@ -95,7 +95,7 @@ export const RESET_PASSWORD_MJML_TEMPLATE = ` `; -// /workspace/Attraccess/apps/api/src/email/templates/verify-email.template.ts +// /workspace/FabAccess/apps/api/src/email/templates/verify-email.template.ts export const VERIFY_EMAIL_MJML_TEMPLATE = ` @@ -126,7 +126,7 @@ export const VERIFY_EMAIL_MJML_TEMPLATE = ` - Attraccess + FabAccess @@ -183,7 +183,7 @@ export const VERIFY_EMAIL_MJML_TEMPLATE = ` Visit us: {{host.frontend}} | - GitHub + GitHub diff --git a/apps/api/src/email-template/email-template.controller.ts b/apps/api/src/email-template/email-template.controller.ts index 6a6d49d9..a4adee4d 100644 --- a/apps/api/src/email-template/email-template.controller.ts +++ b/apps/api/src/email-template/email-template.controller.ts @@ -1,7 +1,7 @@ import { Controller, Get, Post, Body, Patch, Param } from '@nestjs/common'; import { ApiTags, ApiBearerAuth, ApiOperation, ApiResponse, ApiBody, ApiParam } from '@nestjs/swagger'; -import { Auth } from '@attraccess/plugins-backend-sdk'; -import { SystemPermission, EmailTemplate, EmailTemplateType } from '@attraccess/database-entities'; +import { Auth } from '@fabaccess/plugins-backend-sdk'; +import { SystemPermission, EmailTemplate, EmailTemplateType } from '@fabaccess/database-entities'; import { EmailTemplateService } from './email-template.service'; import { MjmlService } from './mjml.service'; import { UpdateEmailTemplateDto } from './dto/update-email-template.dto'; diff --git a/apps/api/src/email-template/email-template.module.ts b/apps/api/src/email-template/email-template.module.ts index 4b30d245..e492fc71 100644 --- a/apps/api/src/email-template/email-template.module.ts +++ b/apps/api/src/email-template/email-template.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { EmailTemplate } from '@attraccess/database-entities'; +import { EmailTemplate } from '@fabaccess/database-entities'; import { EmailTemplateService } from './email-template.service'; import { EmailTemplateController } from './email-template.controller'; import { MjmlService } from './mjml.service'; diff --git a/apps/api/src/email-template/email-template.service.ts b/apps/api/src/email-template/email-template.service.ts index e760d19b..6790d845 100644 --- a/apps/api/src/email-template/email-template.service.ts +++ b/apps/api/src/email-template/email-template.service.ts @@ -1,6 +1,6 @@ import { Injectable, NotFoundException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; -import { EmailTemplate, EmailTemplateType } from '@attraccess/database-entities'; +import { EmailTemplate, EmailTemplateType } from '@fabaccess/database-entities'; import { Repository } from 'typeorm'; import { UpdateEmailTemplateDto } from './dto/update-email-template.dto'; import { MjmlService } from './mjml.service'; diff --git a/apps/api/src/email/email.service.ts b/apps/api/src/email/email.service.ts index c12efb8c..251f05d1 100644 --- a/apps/api/src/email/email.service.ts +++ b/apps/api/src/email/email.service.ts @@ -2,7 +2,7 @@ import { Injectable, Logger } from '@nestjs/common'; import { EmailTemplateService } from '../email-template/email-template.service'; import { MailerService } from '@nestjs-modules/mailer'; import { ConfigService } from '@nestjs/config'; -import { User, EmailTemplateType, EmailTemplate } from '@attraccess/database-entities'; +import { User, EmailTemplateType, EmailTemplate } from '@fabaccess/database-entities'; import * as Handlebars from 'handlebars'; import { MjmlService } from '../email-template/mjml.service'; import { AppConfigType } from '../config/app.config'; @@ -24,7 +24,7 @@ export class EmailService { const appConfig = this.configService.get('app'); this.frontendUrl = appConfig.FRONTEND_URL; - this.backendUrl = appConfig.VITE_ATTRACCESS_URL; + this.backendUrl = appConfig.VITE_FABACCESS_URL; this.logger.debug(`EmailService initialized with FRONTEND_URL: ${this.frontendUrl}`); } diff --git a/apps/api/src/fabreader/card.controller.ts b/apps/api/src/fabreader/card.controller.ts index eba8b917..2d0d75ff 100644 --- a/apps/api/src/fabreader/card.controller.ts +++ b/apps/api/src/fabreader/card.controller.ts @@ -1,6 +1,6 @@ import { Controller, Get, Inject, Post, Req, Body } from '@nestjs/common'; import { FabreaderGateway } from './modules/websockets/websocket.gateway'; -import { Auth, AuthenticatedRequest, NFCCard } from '@attraccess/plugins-backend-sdk'; +import { Auth, AuthenticatedRequest, NFCCard } from '@fabaccess/plugins-backend-sdk'; import { ApiOperation, ApiResponse, ApiTags, ApiBody } from '@nestjs/swagger'; import { FabreaderService } from './fabreader.service'; import { AppKeyRequestDto } from './dtos/app-key-request.dto'; diff --git a/apps/api/src/fabreader/dtos/update-reader-response.dto.ts b/apps/api/src/fabreader/dtos/update-reader-response.dto.ts index ae273ed8..1c47cfd7 100644 --- a/apps/api/src/fabreader/dtos/update-reader-response.dto.ts +++ b/apps/api/src/fabreader/dtos/update-reader-response.dto.ts @@ -1,5 +1,5 @@ import { ApiProperty } from '@nestjs/swagger'; -import { FabReader } from '@attraccess/plugins-backend-sdk'; +import { FabReader } from '@fabaccess/plugins-backend-sdk'; export class UpdateReaderResponseDto { @ApiProperty({ diff --git a/apps/api/src/fabreader/events.ts b/apps/api/src/fabreader/events.ts index bb769ced..ded62144 100644 --- a/apps/api/src/fabreader/events.ts +++ b/apps/api/src/fabreader/events.ts @@ -1,4 +1,4 @@ -import { FabReader } from '@attraccess/database-entities'; +import { FabReader } from '@fabaccess/database-entities'; export class ReaderUpdatedEvent { constructor(public readonly reader: FabReader) {} diff --git a/apps/api/src/fabreader/fabreader.module.ts b/apps/api/src/fabreader/fabreader.module.ts index 0288d758..fca07254 100644 --- a/apps/api/src/fabreader/fabreader.module.ts +++ b/apps/api/src/fabreader/fabreader.module.ts @@ -9,7 +9,7 @@ import 'sqlite3'; import '@nestjs/common'; import { WebSocketEventService } from './modules/websockets/websocket-event.service'; import { EventEmitterModule } from '@nestjs/event-emitter'; -import { FabReader, NFCCard } from '@attraccess/database-entities'; +import { FabReader, NFCCard } from '@fabaccess/database-entities'; import { UsersAndAuthModule } from '../users-and-auth/users-and-auth.module'; import { ResourcesModule } from '../resources/resources.module'; import { ResourceUsageModule } from '../resources/usage/resourceUsage.module'; diff --git a/apps/api/src/fabreader/fabreader.service.ts b/apps/api/src/fabreader/fabreader.service.ts index 376acfc6..30c90bf4 100644 --- a/apps/api/src/fabreader/fabreader.service.ts +++ b/apps/api/src/fabreader/fabreader.service.ts @@ -1,6 +1,6 @@ import { Inject, Injectable, Logger } from '@nestjs/common'; import { subtle } from 'crypto'; -import { NFCCard, FabReader } from '@attraccess/database-entities'; +import { NFCCard, FabReader } from '@fabaccess/database-entities'; import { DeleteResult, FindManyOptions, Repository } from 'typeorm'; import { InjectRepository } from '@nestjs/typeorm'; import { nanoid } from 'nanoid'; diff --git a/apps/api/src/fabreader/modules/websockets/reader-states/enroll-ntag424.state.ts b/apps/api/src/fabreader/modules/websockets/reader-states/enroll-ntag424.state.ts index 6c36217f..8bd8e7e2 100644 --- a/apps/api/src/fabreader/modules/websockets/reader-states/enroll-ntag424.state.ts +++ b/apps/api/src/fabreader/modules/websockets/reader-states/enroll-ntag424.state.ts @@ -1,7 +1,7 @@ import { Logger } from '@nestjs/common'; import { ReaderState } from './reader-state.interface'; import { InitialReaderState } from './initial.state'; -import { User } from '@attraccess/plugins-backend-sdk'; +import { User } from '@fabaccess/plugins-backend-sdk'; import { AuthenticatedWebSocket, FabreaderEvent, FabreaderEventType, FabreaderResponse } from '../websocket.types'; import { GatewayServices } from '../websocket.gateway'; diff --git a/apps/api/src/fabreader/modules/websockets/reader-states/reset-ntag424.state.ts b/apps/api/src/fabreader/modules/websockets/reader-states/reset-ntag424.state.ts index 439c97c3..c2c29c45 100644 --- a/apps/api/src/fabreader/modules/websockets/reader-states/reset-ntag424.state.ts +++ b/apps/api/src/fabreader/modules/websockets/reader-states/reset-ntag424.state.ts @@ -3,7 +3,7 @@ import { ReaderState } from './reader-state.interface'; import { InitialReaderState } from './initial.state'; import { AuthenticatedWebSocket, FabreaderEvent, FabreaderEventType, FabreaderResponse } from '../websocket.types'; import { GatewayServices } from '../websocket.gateway'; -import { NFCCard } from '@attraccess/database-entities'; +import { NFCCard } from '@fabaccess/database-entities'; export class ResetNTAG424State implements ReaderState { private readonly logger = new Logger(ResetNTAG424State.name); diff --git a/apps/api/src/fabreader/modules/websockets/reader-states/wait-for-nfc-tap.state.ts b/apps/api/src/fabreader/modules/websockets/reader-states/wait-for-nfc-tap.state.ts index 72a808e2..32a69909 100644 --- a/apps/api/src/fabreader/modules/websockets/reader-states/wait-for-nfc-tap.state.ts +++ b/apps/api/src/fabreader/modules/websockets/reader-states/wait-for-nfc-tap.state.ts @@ -3,7 +3,7 @@ import { GatewayServices } from '../websocket.gateway'; import { AuthenticatedWebSocket, FabreaderEventType, FabreaderResponse } from '../websocket.types'; import { FabreaderEvent } from '../websocket.types'; import { ReaderState } from './reader-state.interface'; -import { NFCCard } from '@attraccess/database-entities'; +import { NFCCard } from '@fabaccess/database-entities'; export class WaitForNFCTapState implements ReaderState { private readonly logger = new Logger(WaitForNFCTapState.name); @@ -161,13 +161,13 @@ export class WaitForNFCTapState implements ReaderState { responseMessage = 'Resource stopped'; this.logger.debug(`Stopping resource usage for user ${userOfNFCCard.id} on resource ${this.selectedResourceId}`); await this.services.resourceUsageService.endSession(this.selectedResourceId, userOfNFCCard, { - notes: `-- by FabReader (ID: ${this.socket.reader.id}) with NFC Card (ID: ${this.card.id}) --`, + notes: `-- by Fabreader (ID: ${this.socket.reader.id}) with NFC Card (ID: ${this.card.id}) --`, }); } else { responseMessage = 'Resource started'; this.logger.debug(`Starting resource usage for user ${userOfNFCCard.id} on resource ${this.selectedResourceId}`); await this.services.resourceUsageService.startSession(this.selectedResourceId, userOfNFCCard, { - notes: `-- by FabReader (ID: ${this.socket.reader.id}) with NFC Card (ID: ${this.card.id}) --`, + notes: `-- by Fabreader (ID: ${this.socket.reader.id}) with NFC Card (ID: ${this.card.id}) --`, }); } diff --git a/apps/api/src/fabreader/modules/websockets/reader-states/wait-for-resource-selection.state.ts b/apps/api/src/fabreader/modules/websockets/reader-states/wait-for-resource-selection.state.ts index 684ddf0d..83bc2b80 100644 --- a/apps/api/src/fabreader/modules/websockets/reader-states/wait-for-resource-selection.state.ts +++ b/apps/api/src/fabreader/modules/websockets/reader-states/wait-for-resource-selection.state.ts @@ -3,7 +3,7 @@ import { AuthenticatedWebSocket, FabreaderEvent, FabreaderEventType } from '../w import { ReaderState } from './reader-state.interface'; import { WaitForNFCTapState } from './wait-for-nfc-tap.state'; import { GatewayServices } from '../websocket.gateway'; -import { Resource } from '@attraccess/plugins-backend-sdk'; +import { Resource } from '@fabaccess/plugins-backend-sdk'; export class WaitForResourceSelectionState implements ReaderState { private readonly logger = new Logger(WaitForResourceSelectionState.name); diff --git a/apps/api/src/fabreader/modules/websockets/websocket.types.ts b/apps/api/src/fabreader/modules/websockets/websocket.types.ts index 2b1e21e8..d65eacc1 100644 --- a/apps/api/src/fabreader/modules/websockets/websocket.types.ts +++ b/apps/api/src/fabreader/modules/websockets/websocket.types.ts @@ -1,4 +1,4 @@ -import { FabReader } from '@attraccess/database-entities'; +import { FabReader } from '@fabaccess/database-entities'; import { ReaderState } from './reader-states/reader-state.interface'; interface FabreaderMessageBaseData { diff --git a/apps/api/src/fabreader/reader.controller.ts b/apps/api/src/fabreader/reader.controller.ts index 5fd99695..58ffdf8c 100644 --- a/apps/api/src/fabreader/reader.controller.ts +++ b/apps/api/src/fabreader/reader.controller.ts @@ -14,7 +14,7 @@ import { UseInterceptors, } from '@nestjs/common'; import { FabreaderGateway } from './modules/websockets/websocket.gateway'; -import { AuthenticatedRequest, Auth, FabReader } from '@attraccess/plugins-backend-sdk'; +import { AuthenticatedRequest, Auth, FabReader } from '@fabaccess/plugins-backend-sdk'; import { ApiOperation, ApiResponse, ApiParam, ApiTags, ApiBody } from '@nestjs/swagger'; import { WebsocketService } from './modules/websockets/websocket.service'; import { FabreaderService } from './fabreader.service'; diff --git a/apps/api/src/main.bootstrap.ts b/apps/api/src/main.bootstrap.ts index f99dfb05..ee572cac 100644 --- a/apps/api/src/main.bootstrap.ts +++ b/apps/api/src/main.bootstrap.ts @@ -19,7 +19,7 @@ import { StorageConfigType } from './config/storage.config'; async function generateSelfSignedCertificates(storageDir: string, domain: string) { const ca = await createCA({ - organization: 'Attraccess', + organization: 'FabAccess', countryCode: 'DE', state: 'Hamburg', locality: 'Hamburg', @@ -60,7 +60,7 @@ export async function bootstrap() { if (appConfig.SSL_GENERATE_SELF_SIGNED_CERTIFICATES) { const storageDir = storageConfig.root; - const host = appConfig.VITE_ATTRACCESS_URL; + const host = appConfig.VITE_FABACCESS_URL; const hostUrl = new URL(host); const domain = hostUrl.hostname; @@ -164,8 +164,8 @@ export async function bootstrap() { app.useGlobalInterceptors(new ClassSerializerInterceptor(app.get('Reflector'))); const config = new DocumentBuilder() - .setTitle('Attraccess API') - .setDescription('The Attraccess API used to manage machine and tool access in a Makerspace or FabLab') + .setTitle('FabAccess API') + .setDescription('The FabAccess API used to manage machine and tool access in a Makerspace or FabLab') .setVersion(appConfig.VERSION) .addBearerAuth() .addApiKey({ diff --git a/apps/api/src/mqtt/mqtt-client.service.spec.ts b/apps/api/src/mqtt/mqtt-client.service.spec.ts index c3071a5f..f542b3f4 100644 --- a/apps/api/src/mqtt/mqtt-client.service.spec.ts +++ b/apps/api/src/mqtt/mqtt-client.service.spec.ts @@ -1,7 +1,7 @@ import { Test, TestingModule } from '@nestjs/testing'; import { getRepositoryToken } from '@nestjs/typeorm'; import { MqttClientService } from './mqtt-client.service'; -import { MqttServer } from '@attraccess/database-entities'; +import { MqttServer } from '@fabaccess/database-entities'; import { Repository } from 'typeorm'; import * as mqtt from 'mqtt'; import { Logger } from '@nestjs/common'; @@ -101,12 +101,7 @@ describe('MqttClientService', () => { jest.spyOn(Logger.prototype, 'warn').mockImplementation(jest.fn()); // Mock the getOrCreateClient method to avoid actual connection attempts - jest - .spyOn( - service as unknown as MqttClientServicePrivate, - 'getOrCreateClient' - ) - .mockResolvedValue(mqtt.connect({})); + jest.spyOn(service as unknown as MqttClientServicePrivate, 'getOrCreateClient').mockResolvedValue(mqtt.connect({})); }); afterEach(() => { @@ -120,10 +115,7 @@ describe('MqttClientService', () => { describe('publish', () => { it('should successfully publish a message', async () => { // Arrange - mock the internal methods to avoid actual connections - const getOrCreateClientSpy = jest.spyOn( - service as unknown as MqttClientServicePrivate, - 'getOrCreateClient' - ); + const getOrCreateClientSpy = jest.spyOn(service as unknown as MqttClientServicePrivate, 'getOrCreateClient'); const mockClient = mqtt.connect({}); getOrCreateClientSpy.mockResolvedValue(mockClient); @@ -142,36 +134,26 @@ describe('MqttClientService', () => { it('should throw an error if publishing fails', async () => { // Arrange - mock the client to throw an error on publish - const getOrCreateClientSpy = jest.spyOn( - service as unknown as MqttClientServicePrivate, - 'getOrCreateClient' - ); + const getOrCreateClientSpy = jest.spyOn(service as unknown as MqttClientServicePrivate, 'getOrCreateClient'); const mockClient = mqtt.connect({}); getOrCreateClientSpy.mockResolvedValue(mockClient); // Make publish callback throw an error - mockClient.publish = jest - .fn() - .mockImplementation((topic, message, callback) => { - if (typeof callback === 'function') { - callback(new Error('Publish error')); - } - }); + mockClient.publish = jest.fn().mockImplementation((topic, message, callback) => { + if (typeof callback === 'function') { + callback(new Error('Publish error')); + } + }); // Act & Assert - await expect( - service.publish(1, 'test/topic', 'test message') - ).rejects.toThrow('Publish error'); + await expect(service.publish(1, 'test/topic', 'test message')).rejects.toThrow('Publish error'); }); }); describe('testConnection', () => { it('should return success if connection is successful', async () => { // Arrange - mock the internal methods - const getOrCreateClientSpy = jest.spyOn( - service as unknown as MqttClientServicePrivate, - 'getOrCreateClient' - ); + const getOrCreateClientSpy = jest.spyOn(service as unknown as MqttClientServicePrivate, 'getOrCreateClient'); const mockClient = mqtt.connect({}); getOrCreateClientSpy.mockResolvedValue(mockClient); @@ -195,10 +177,7 @@ describe('MqttClientService', () => { it('should disconnect all clients', async () => { // Arrange - mock the clients map to have a client const mockClient = mqtt.connect({}); - (service as unknown as MqttClientServicePrivate).clients.set( - 1, - mockClient - ); + (service as unknown as MqttClientServicePrivate).clients.set(1, mockClient); // Act await service.onModuleDestroy(); diff --git a/apps/api/src/mqtt/mqtt-client.service.ts b/apps/api/src/mqtt/mqtt-client.service.ts index 2085e1e5..552a90f3 100644 --- a/apps/api/src/mqtt/mqtt-client.service.ts +++ b/apps/api/src/mqtt/mqtt-client.service.ts @@ -1,19 +1,11 @@ -import { - Injectable, - OnModuleInit, - OnModuleDestroy, - Logger, -} from '@nestjs/common'; +import { Injectable, OnModuleInit, OnModuleDestroy, Logger } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { MqttServer } from '@attraccess/database-entities'; +import { MqttServer } from '@fabaccess/database-entities'; import * as mqtt from 'mqtt'; import { MqttClient } from 'mqtt'; import { MqttMonitoringService } from './mqtt-monitoring.service'; -import { - TestConnectionResponseDto, - MqttServerStatusDto, -} from './servers/dtos/mqtt-server.dto'; +import { TestConnectionResponseDto, MqttServerStatusDto } from './servers/dtos/mqtt-server.dto'; @Injectable() export class MqttClientService implements OnModuleInit, OnModuleDestroy { @@ -85,14 +77,10 @@ export class MqttClientService implements OnModuleInit, OnModuleDestroy { this.monitoringService.onConnectAttempt(serverId); return new Promise((resolve, reject) => { - const url = `${server.useTls ? 'mqtts' : 'mqtt'}://${server.host}:${ - server.port - }`; + const url = `${server.useTls ? 'mqtts' : 'mqtt'}://${server.host}:${server.port}`; const options: mqtt.IClientOptions = { - clientId: - server.clientId || - `attraccess-api-${Math.random().toString(16).slice(2, 10)}`, + clientId: server.clientId || `fabaccess-api-${Math.random().toString(16).slice(2, 10)}`, clean: true, reconnectPeriod: 5000, }; @@ -114,9 +102,7 @@ export class MqttClientService implements OnModuleInit, OnModuleDestroy { }); client.on('error', (error) => { - this.logger.error( - `MQTT connection error for server ${server.name}: ${error.message}` - ); + this.logger.error(`MQTT connection error for server ${server.name}: ${error.message}`); this.monitoringService.onConnectFailure(serverId, error.message); // Don't reject as the client will try to reconnect }); @@ -153,19 +139,13 @@ export class MqttClientService implements OnModuleInit, OnModuleDestroy { }); } - async publish( - serverId: number, - topic: string, - message: string - ): Promise { + async publish(serverId: number, topic: string, message: string): Promise { try { const client = await this.getOrCreateClient(serverId); return new Promise((resolve, reject) => { client.publish(topic, message, (error) => { if (error) { - this.logger.error( - `Failed to publish to topic ${topic}: ${error.message}` - ); + this.logger.error(`Failed to publish to topic ${topic}: ${error.message}`); this.monitoringService.onPublishFailure(serverId, error.message); reject(error); } else { @@ -186,8 +166,7 @@ export class MqttClientService implements OnModuleInit, OnModuleDestroy { async testConnection(serverId: number): Promise { try { await this.getOrCreateClient(serverId); - const healthStatus = - this.monitoringService.getConnectionHealthStatus(serverId); + const healthStatus = this.monitoringService.getConnectionHealthStatus(serverId); return { success: true, message: `Connection successful. ${healthStatus.details}`, @@ -195,9 +174,7 @@ export class MqttClientService implements OnModuleInit, OnModuleDestroy { } catch (error) { return { success: false, - message: `Connection failed: ${ - error instanceof Error ? error.message : String(error) - }`, + message: `Connection failed: ${error instanceof Error ? error.message : String(error)}`, }; } } @@ -205,8 +182,7 @@ export class MqttClientService implements OnModuleInit, OnModuleDestroy { async getStatusOfOne(serverId: number): Promise { const client = this.clients.get(serverId); const connected = client?.connected || false; - const healthStatus = - this.monitoringService.getConnectionHealthStatus(serverId); + const healthStatus = this.monitoringService.getConnectionHealthStatus(serverId); return { connected, diff --git a/apps/api/src/mqtt/mqtt.module.ts b/apps/api/src/mqtt/mqtt.module.ts index 5ef27364..6e0dc248 100644 --- a/apps/api/src/mqtt/mqtt.module.ts +++ b/apps/api/src/mqtt/mqtt.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { MqttServer, MqttResourceConfig } from '@attraccess/database-entities'; +import { MqttServer, MqttResourceConfig } from '@fabaccess/database-entities'; import { MqttServerController } from './servers/mqtt-server.controller'; import { MqttServerService } from './servers/mqtt-server.service'; import { MqttClientService } from './mqtt-client.service'; @@ -8,10 +8,7 @@ import { MqttMonitoringService } from './mqtt-monitoring.service'; import { ConfigModule } from '@nestjs/config'; @Module({ - imports: [ - TypeOrmModule.forFeature([MqttServer, MqttResourceConfig]), - ConfigModule, - ], + imports: [TypeOrmModule.forFeature([MqttServer, MqttResourceConfig]), ConfigModule], controllers: [MqttServerController], providers: [MqttServerService, MqttClientService, MqttMonitoringService], exports: [MqttClientService, MqttMonitoringService], diff --git a/apps/api/src/mqtt/servers/mqtt-server.controller.ts b/apps/api/src/mqtt/servers/mqtt-server.controller.ts index b87c3e6b..cf445b9b 100644 --- a/apps/api/src/mqtt/servers/mqtt-server.controller.ts +++ b/apps/api/src/mqtt/servers/mqtt-server.controller.ts @@ -1,6 +1,6 @@ import { Controller, Get, Post, Put, Delete, Body, Param, ParseIntPipe } from '@nestjs/common'; import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger'; -import { MqttServer } from '@attraccess/database-entities'; +import { MqttServer } from '@fabaccess/database-entities'; import { MqttServerService } from './mqtt-server.service'; import { CreateMqttServerDto, @@ -9,7 +9,7 @@ import { MqttServerStatusDto, AllMqttServerStatusesDto, } from './dtos/mqtt-server.dto'; -import { Auth } from '@attraccess/plugins-backend-sdk'; +import { Auth } from '@fabaccess/plugins-backend-sdk'; import { MqttClientService } from '../mqtt-client.service'; @ApiTags('MQTT') diff --git a/apps/api/src/mqtt/servers/mqtt-server.service.ts b/apps/api/src/mqtt/servers/mqtt-server.service.ts index 3309161a..48962937 100644 --- a/apps/api/src/mqtt/servers/mqtt-server.service.ts +++ b/apps/api/src/mqtt/servers/mqtt-server.service.ts @@ -1,11 +1,8 @@ import { Injectable, NotFoundException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { MqttServer } from '@attraccess/database-entities'; -import { - CreateMqttServerDto, - UpdateMqttServerDto, -} from './dtos/mqtt-server.dto'; +import { MqttServer } from '@fabaccess/database-entities'; +import { CreateMqttServerDto, UpdateMqttServerDto } from './dtos/mqtt-server.dto'; @Injectable() export class MqttServerService { @@ -48,10 +45,7 @@ export class MqttServerService { /** * Update an existing MQTT server */ - async update( - id: number, - updateMqttServerDto: UpdateMqttServerDto - ): Promise { + async update(id: number, updateMqttServerDto: UpdateMqttServerDto): Promise { const server = await this.findOne(id); // Update the server with the new values diff --git a/apps/api/src/plugin-system/plugin.controller.ts b/apps/api/src/plugin-system/plugin.controller.ts index f351cc25..707bd44a 100644 --- a/apps/api/src/plugin-system/plugin.controller.ts +++ b/apps/api/src/plugin-system/plugin.controller.ts @@ -18,7 +18,7 @@ import { LoadedPluginManifest } from './plugin.manifest'; import { join } from 'path'; import { FileInterceptor } from '@nestjs/platform-express'; import { FileUpload } from '../common/types/file-upload.types'; -import { Auth } from '@attraccess/plugins-backend-sdk'; +import { Auth } from '@fabaccess/plugins-backend-sdk'; import { UploadPluginDto } from './dto/uploadPlugin.dto'; @ApiTags('Plugins') diff --git a/apps/api/src/plugin-system/plugin.manifest.ts b/apps/api/src/plugin-system/plugin.manifest.ts index aca9c301..a71f6e7b 100644 --- a/apps/api/src/plugin-system/plugin.manifest.ts +++ b/apps/api/src/plugin-system/plugin.manifest.ts @@ -49,7 +49,7 @@ export class PluginMain { backend?: PluginMainBackend; } -export class PluginAttraccessVersion { +export class PluginFabAccessVersion { @ApiProperty({ description: 'The minimum version of the plugin', example: '1.0.0', @@ -88,9 +88,9 @@ export class PluginManifest { version: string; @ApiProperty({ - type: PluginAttraccessVersion, + type: PluginFabAccessVersion, }) - attraccessVersion: PluginAttraccessVersion; + fabaccessVersion: PluginFabAccessVersion; } export class LoadedPluginManifest extends PluginManifest { @@ -119,7 +119,7 @@ export const PluginManifestSchema = z.object({ backend: mainSchema, }), version: z.string(), - attraccessVersion: z + fabaccessVersion: z .object({ min: z.string().optional(), max: z.string().optional(), diff --git a/apps/api/src/resources/dtos/createResource.dto.ts b/apps/api/src/resources/dtos/createResource.dto.ts index 4cb98a53..6e121873 100644 --- a/apps/api/src/resources/dtos/createResource.dto.ts +++ b/apps/api/src/resources/dtos/createResource.dto.ts @@ -1,7 +1,7 @@ import { ApiProperty } from '@nestjs/swagger'; import { IsString, IsOptional, MinLength, IsEnum, IsUrl, ValidateIf, IsBoolean } from 'class-validator'; import { FileUpload } from '../../common/types/file-upload.types'; -import { DocumentationType } from '@attraccess/database-entities'; +import { DocumentationType } from '@fabaccess/database-entities'; import { ToBoolean } from '../../common/request-transformers'; export class CreateResourceDto { diff --git a/apps/api/src/resources/dtos/paginatedResourceResponse.dto.ts b/apps/api/src/resources/dtos/paginatedResourceResponse.dto.ts index 189e2947..ff6699e3 100644 --- a/apps/api/src/resources/dtos/paginatedResourceResponse.dto.ts +++ b/apps/api/src/resources/dtos/paginatedResourceResponse.dto.ts @@ -1,4 +1,4 @@ -import { Resource } from '@attraccess/database-entities'; +import { Resource } from '@fabaccess/database-entities'; import { PaginatedResponse } from '../../types/response'; import { ApiProperty } from '@nestjs/swagger'; diff --git a/apps/api/src/resources/dtos/updateResource.dto.ts b/apps/api/src/resources/dtos/updateResource.dto.ts index 899ae3b1..0fb4781c 100644 --- a/apps/api/src/resources/dtos/updateResource.dto.ts +++ b/apps/api/src/resources/dtos/updateResource.dto.ts @@ -1,7 +1,7 @@ import { ApiProperty } from '@nestjs/swagger'; import { IsString, IsOptional, IsEnum, IsUrl, ValidateIf, IsBoolean } from 'class-validator'; import { FileUpload } from '../../common/types/file-upload.types'; -import { DocumentationType } from '@attraccess/database-entities'; +import { DocumentationType } from '@fabaccess/database-entities'; import { ToBoolean } from '../../common/request-transformers'; export class UpdateResourceDto { diff --git a/apps/api/src/resources/groups/errors/groupNotFound.error.ts b/apps/api/src/resources/groups/errors/groupNotFound.error.ts index 78e65128..b4bcad95 100644 --- a/apps/api/src/resources/groups/errors/groupNotFound.error.ts +++ b/apps/api/src/resources/groups/errors/groupNotFound.error.ts @@ -1,4 +1,4 @@ -import { ResourceGroup } from '@attraccess/database-entities'; +import { ResourceGroup } from '@fabaccess/database-entities'; import { NotFoundException } from '@nestjs/common'; import { FindOneOptions } from 'typeorm'; diff --git a/apps/api/src/resources/groups/introducers/resourceGroups.introducers.controller.ts b/apps/api/src/resources/groups/introducers/resourceGroups.introducers.controller.ts index 82b8ec17..639fbf6e 100644 --- a/apps/api/src/resources/groups/introducers/resourceGroups.introducers.controller.ts +++ b/apps/api/src/resources/groups/introducers/resourceGroups.introducers.controller.ts @@ -1,8 +1,8 @@ import { Controller, Get, Param, ParseIntPipe, Post } from '@nestjs/common'; import { ApiOperation, ApiParam, ApiResponse, ApiTags } from '@nestjs/swagger'; -import { ResourceIntroducer } from '@attraccess/database-entities'; +import { ResourceIntroducer } from '@fabaccess/database-entities'; import { ResourceGroupsIntroducersService } from './resourceGroups.introducers.service'; -import { Auth } from '@attraccess/plugins-backend-sdk'; +import { Auth } from '@fabaccess/plugins-backend-sdk'; import { IsResourceGroupIntroducerResponseDto } from './dtos/isIntroducer.response.dto'; @ApiTags('Access Control') diff --git a/apps/api/src/resources/groups/introducers/resourceGroups.introducers.service.ts b/apps/api/src/resources/groups/introducers/resourceGroups.introducers.service.ts index 56be60bd..58255f55 100644 --- a/apps/api/src/resources/groups/introducers/resourceGroups.introducers.service.ts +++ b/apps/api/src/resources/groups/introducers/resourceGroups.introducers.service.ts @@ -1,6 +1,6 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Injectable } from '@nestjs/common'; -import { ResourceIntroducer } from '@attraccess/database-entities'; +import { ResourceIntroducer } from '@fabaccess/database-entities'; import { Repository } from 'typeorm'; @Injectable() diff --git a/apps/api/src/resources/groups/introductions/isIntroducer.decorator.ts b/apps/api/src/resources/groups/introductions/isIntroducer.decorator.ts index bf49ee26..c0ea8777 100644 --- a/apps/api/src/resources/groups/introductions/isIntroducer.decorator.ts +++ b/apps/api/src/resources/groups/introductions/isIntroducer.decorator.ts @@ -1,6 +1,6 @@ import { UseGuards, applyDecorators } from '@nestjs/common'; import { ApiBearerAuth, ApiForbiddenResponse, ApiUnauthorizedResponse } from '@nestjs/swagger'; -import { JwtGuard } from '@attraccess/plugins-backend-sdk'; +import { JwtGuard } from '@fabaccess/plugins-backend-sdk'; import { IsResourceGroupIntroducerGuard } from './isIntroducerGuard'; /** diff --git a/apps/api/src/resources/groups/introductions/isIntroducerGuard.ts b/apps/api/src/resources/groups/introductions/isIntroducerGuard.ts index f9b9e99f..88a866be 100644 --- a/apps/api/src/resources/groups/introductions/isIntroducerGuard.ts +++ b/apps/api/src/resources/groups/introductions/isIntroducerGuard.ts @@ -8,7 +8,7 @@ import { } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { ResourceIntroducer, User } from '@attraccess/database-entities'; +import { ResourceIntroducer, User } from '@fabaccess/database-entities'; @Injectable() export class IsResourceGroupIntroducerGuard implements CanActivate { diff --git a/apps/api/src/resources/groups/introductions/resourceGroups.introductions.controller.ts b/apps/api/src/resources/groups/introductions/resourceGroups.introductions.controller.ts index 71e9cba1..45e2c644 100644 --- a/apps/api/src/resources/groups/introductions/resourceGroups.introductions.controller.ts +++ b/apps/api/src/resources/groups/introductions/resourceGroups.introductions.controller.ts @@ -1,7 +1,7 @@ import { Body, Controller, Get, Param, ParseIntPipe, Post } from '@nestjs/common'; import { ResourceGroupsIntroductionsService } from './resourceGroups.introductions.service'; import { ApiOperation, ApiParam, ApiResponse, ApiTags } from '@nestjs/swagger'; -import { ResourceIntroduction, ResourceIntroductionHistoryItem } from '@attraccess/database-entities'; +import { ResourceIntroduction, ResourceIntroductionHistoryItem } from '@fabaccess/database-entities'; import { IsResourceGroupIntroducer } from './isIntroducer.decorator'; import { UpdateResourceGroupIntroductionDto } from './dtos/update.request.dto'; diff --git a/apps/api/src/resources/groups/introductions/resourceGroups.introductions.service.ts b/apps/api/src/resources/groups/introductions/resourceGroups.introductions.service.ts index 7f6fb291..24a35a62 100644 --- a/apps/api/src/resources/groups/introductions/resourceGroups.introductions.service.ts +++ b/apps/api/src/resources/groups/introductions/resourceGroups.introductions.service.ts @@ -6,7 +6,7 @@ import { ResourceGroup, ResourceIntroduction, ResourceIntroductionHistoryItem, -} from '@attraccess/database-entities'; +} from '@fabaccess/database-entities'; import { Repository } from 'typeorm'; import { UpdateResourceGroupIntroductionDto } from './dtos/update.request.dto'; diff --git a/apps/api/src/resources/groups/resourceGroups.controller.ts b/apps/api/src/resources/groups/resourceGroups.controller.ts index ce5a05f0..af3a52b4 100644 --- a/apps/api/src/resources/groups/resourceGroups.controller.ts +++ b/apps/api/src/resources/groups/resourceGroups.controller.ts @@ -1,10 +1,10 @@ import { Body, Controller, Delete, Get, Param, ParseIntPipe, Post, Put } from '@nestjs/common'; import { ResourceGroupsService } from './resourceGroups.service'; import { ApiOperation, ApiParam, ApiResponse, ApiTags } from '@nestjs/swagger'; -import { ResourceGroup } from '@attraccess/database-entities'; +import { ResourceGroup } from '@fabaccess/database-entities'; import { CreateResourceGroupDto } from './dto/createGroup.dto'; import { UpdateResourceGroupDto } from './dto/updateGroup.dto'; -import { Auth } from '@attraccess/plugins-backend-sdk'; +import { Auth } from '@fabaccess/plugins-backend-sdk'; @ApiTags('Resources') @Controller('resource-groups') diff --git a/apps/api/src/resources/groups/resourceGroups.module.ts b/apps/api/src/resources/groups/resourceGroups.module.ts index 3f064059..ee512470 100644 --- a/apps/api/src/resources/groups/resourceGroups.module.ts +++ b/apps/api/src/resources/groups/resourceGroups.module.ts @@ -6,7 +6,7 @@ import { ResourceIntroducer, ResourceIntroduction, ResourceIntroductionHistoryItem, -} from '@attraccess/database-entities'; +} from '@fabaccess/database-entities'; import { ResourceGroupsController } from './resourceGroups.controller'; import { ResourceGroupsService } from './resourceGroups.service'; import { ResourceGroupsIntroductionsController } from './introductions/resourceGroups.introductions.controller'; diff --git a/apps/api/src/resources/groups/resourceGroups.service.ts b/apps/api/src/resources/groups/resourceGroups.service.ts index 6aea9006..b77bbb11 100644 --- a/apps/api/src/resources/groups/resourceGroups.service.ts +++ b/apps/api/src/resources/groups/resourceGroups.service.ts @@ -1,6 +1,6 @@ import { InjectRepository } from '@nestjs/typeorm'; import { Injectable } from '@nestjs/common'; -import { Resource, ResourceGroup } from '@attraccess/database-entities'; +import { Resource, ResourceGroup } from '@fabaccess/database-entities'; import { Repository } from 'typeorm'; import { CreateResourceGroupDto } from './dto/createGroup.dto'; import { UpdateResourceGroupDto } from './dto/updateGroup.dto'; diff --git a/apps/api/src/resources/introducers/resourceIntroducers.controller.ts b/apps/api/src/resources/introducers/resourceIntroducers.controller.ts index d9a42db5..cc10f509 100644 --- a/apps/api/src/resources/introducers/resourceIntroducers.controller.ts +++ b/apps/api/src/resources/introducers/resourceIntroducers.controller.ts @@ -1,8 +1,8 @@ import { Controller, Delete, Get, Param, ParseIntPipe, Post } from '@nestjs/common'; import { ApiOperation, ApiResponse, ApiTags } from '@nestjs/swagger'; import { ResourceIntroducersService } from './resourceIntroducers.service'; -import { ResourceIntroducer } from '@attraccess/database-entities'; -import { Auth } from '@attraccess/plugins-backend-sdk'; +import { ResourceIntroducer } from '@fabaccess/database-entities'; +import { Auth } from '@fabaccess/plugins-backend-sdk'; import { IsResourceIntroducerResponseDto } from './dtos/isIntroducer.response.dto'; @ApiTags('Access Control') diff --git a/apps/api/src/resources/introducers/resourceIntroducers.module.ts b/apps/api/src/resources/introducers/resourceIntroducers.module.ts index d99d1afc..dbb7a1f7 100644 --- a/apps/api/src/resources/introducers/resourceIntroducers.module.ts +++ b/apps/api/src/resources/introducers/resourceIntroducers.module.ts @@ -1,7 +1,7 @@ import { Module } from '@nestjs/common'; import { ResourceIntroducersService } from './resourceIntroducers.service'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { ResourceIntroducer } from '@attraccess/database-entities'; +import { ResourceIntroducer } from '@fabaccess/database-entities'; import { ResourceIntroducersController } from './resourceIntroducers.controller'; @Module({ diff --git a/apps/api/src/resources/introducers/resourceIntroducers.service.ts b/apps/api/src/resources/introducers/resourceIntroducers.service.ts index 45bcd3ac..2251f303 100644 --- a/apps/api/src/resources/introducers/resourceIntroducers.service.ts +++ b/apps/api/src/resources/introducers/resourceIntroducers.service.ts @@ -1,4 +1,4 @@ -import { ResourceIntroducer } from '@attraccess/database-entities'; +import { ResourceIntroducer } from '@fabaccess/database-entities'; import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; diff --git a/apps/api/src/resources/introductions/isIntroducer.decorator.ts b/apps/api/src/resources/introductions/isIntroducer.decorator.ts index f0cd2aa1..44e020f8 100644 --- a/apps/api/src/resources/introductions/isIntroducer.decorator.ts +++ b/apps/api/src/resources/introductions/isIntroducer.decorator.ts @@ -1,6 +1,6 @@ import { UseGuards, applyDecorators } from '@nestjs/common'; import { ApiBearerAuth, ApiForbiddenResponse, ApiUnauthorizedResponse } from '@nestjs/swagger'; -import { JwtGuard } from '@attraccess/plugins-backend-sdk'; +import { JwtGuard } from '@fabaccess/plugins-backend-sdk'; import { IsResourceIntroducerGuard } from './isIntroducerGuard'; /** diff --git a/apps/api/src/resources/introductions/isIntroducerGuard.ts b/apps/api/src/resources/introductions/isIntroducerGuard.ts index 8d2203de..a3f74d45 100644 --- a/apps/api/src/resources/introductions/isIntroducerGuard.ts +++ b/apps/api/src/resources/introductions/isIntroducerGuard.ts @@ -8,8 +8,8 @@ import { } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { ResourceIntroducer } from '@attraccess/database-entities'; -import { AuthenticatedUser } from '@attraccess/plugins-backend-sdk'; +import { ResourceIntroducer } from '@fabaccess/database-entities'; +import { AuthenticatedUser } from '@fabaccess/plugins-backend-sdk'; @Injectable() export class IsResourceIntroducerGuard implements CanActivate { diff --git a/apps/api/src/resources/introductions/resouceIntroductions.service.ts b/apps/api/src/resources/introductions/resouceIntroductions.service.ts index 206d8c80..2f10a665 100644 --- a/apps/api/src/resources/introductions/resouceIntroductions.service.ts +++ b/apps/api/src/resources/introductions/resouceIntroductions.service.ts @@ -2,7 +2,7 @@ import { IntroductionHistoryAction, ResourceIntroduction, ResourceIntroductionHistoryItem, -} from '@attraccess/database-entities'; +} from '@fabaccess/database-entities'; import { Injectable, Logger } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; diff --git a/apps/api/src/resources/introductions/resourceIntroductions.controller.ts b/apps/api/src/resources/introductions/resourceIntroductions.controller.ts index f1db5ae1..827574f4 100644 --- a/apps/api/src/resources/introductions/resourceIntroductions.controller.ts +++ b/apps/api/src/resources/introductions/resourceIntroductions.controller.ts @@ -1,7 +1,7 @@ import { Body, Controller, Delete, Get, Param, ParseIntPipe, Post } from '@nestjs/common'; import { ApiOperation, ApiParam, ApiResponse, ApiTags } from '@nestjs/swagger'; import { ResourceIntroductionsService } from './resouceIntroductions.service'; -import { ResourceIntroduction, ResourceIntroductionHistoryItem } from '@attraccess/database-entities'; +import { ResourceIntroduction, ResourceIntroductionHistoryItem } from '@fabaccess/database-entities'; import { IsResourceIntroducer } from './isIntroducer.decorator'; import { UpdateResourceIntroductionDto } from './dtos/update.request.dto'; diff --git a/apps/api/src/resources/introductions/resourceIntroductions.module.ts b/apps/api/src/resources/introductions/resourceIntroductions.module.ts index 0063ed35..0c82788e 100644 --- a/apps/api/src/resources/introductions/resourceIntroductions.module.ts +++ b/apps/api/src/resources/introductions/resourceIntroductions.module.ts @@ -5,7 +5,7 @@ import { ResourceIntroducer, ResourceIntroduction, ResourceIntroductionHistoryItem, -} from '@attraccess/database-entities'; +} from '@fabaccess/database-entities'; import { TypeOrmModule } from '@nestjs/typeorm'; @Module({ diff --git a/apps/api/src/resources/iot/iot.service.ts b/apps/api/src/resources/iot/iot.service.ts index de6346b7..83bda0c8 100644 --- a/apps/api/src/resources/iot/iot.service.ts +++ b/apps/api/src/resources/iot/iot.service.ts @@ -1,4 +1,4 @@ -import { Resource, User } from '@attraccess/database-entities'; +import { Resource, User } from '@fabaccess/database-entities'; import { Injectable } from '@nestjs/common'; import * as Handlebars from 'handlebars'; diff --git a/apps/api/src/resources/iot/mqtt/config/mqtt-resource-config.controller.ts b/apps/api/src/resources/iot/mqtt/config/mqtt-resource-config.controller.ts index 3c053ce0..01e09873 100644 --- a/apps/api/src/resources/iot/mqtt/config/mqtt-resource-config.controller.ts +++ b/apps/api/src/resources/iot/mqtt/config/mqtt-resource-config.controller.ts @@ -1,6 +1,6 @@ import { Controller, Get, Post, Put, Delete, Body, Param, ParseIntPipe } from '@nestjs/common'; import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger'; -import { MqttResourceConfig } from '@attraccess/database-entities'; +import { MqttResourceConfig } from '@fabaccess/database-entities'; import { MqttResourceConfigService } from './mqtt-resource-config.service'; import { CreateMqttResourceConfigDto, @@ -9,7 +9,7 @@ import { } from './dtos/mqtt-resource-config.dto'; import { MqttClientService } from '../../../../mqtt/mqtt-client.service'; import * as Handlebars from 'handlebars'; -import { Auth } from '@attraccess/plugins-backend-sdk'; +import { Auth } from '@fabaccess/plugins-backend-sdk'; @ApiTags('MQTT') @Auth('canManageResources') diff --git a/apps/api/src/resources/iot/mqtt/config/mqtt-resource-config.service.ts b/apps/api/src/resources/iot/mqtt/config/mqtt-resource-config.service.ts index c05370d6..457f43d8 100644 --- a/apps/api/src/resources/iot/mqtt/config/mqtt-resource-config.service.ts +++ b/apps/api/src/resources/iot/mqtt/config/mqtt-resource-config.service.ts @@ -1,7 +1,7 @@ import { Injectable, NotFoundException } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { MqttResourceConfig, Resource } from '@attraccess/database-entities'; +import { MqttResourceConfig, Resource } from '@fabaccess/database-entities'; import { CreateMqttResourceConfigDto, UpdateMqttResourceConfigDto } from './dtos/mqtt-resource-config.dto'; @Injectable() diff --git a/apps/api/src/resources/iot/mqtt/mqtt-resource.module.ts b/apps/api/src/resources/iot/mqtt/mqtt-resource.module.ts index e9a79504..cb8774bb 100644 --- a/apps/api/src/resources/iot/mqtt/mqtt-resource.module.ts +++ b/apps/api/src/resources/iot/mqtt/mqtt-resource.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { MqttResourceConfig, Resource } from '@attraccess/database-entities'; +import { MqttResourceConfig, Resource } from '@fabaccess/database-entities'; import { MqttResourceConfigController } from './config/mqtt-resource-config.controller'; import { MqttResourceConfigService } from './config/mqtt-resource-config.service'; import { MqttPublisherService } from './publisher/mqtt-publisher.service'; diff --git a/apps/api/src/resources/iot/mqtt/publisher/mqtt-publisher.service.spec.ts b/apps/api/src/resources/iot/mqtt/publisher/mqtt-publisher.service.spec.ts index 03cc325e..f5952df6 100644 --- a/apps/api/src/resources/iot/mqtt/publisher/mqtt-publisher.service.spec.ts +++ b/apps/api/src/resources/iot/mqtt/publisher/mqtt-publisher.service.spec.ts @@ -1,7 +1,7 @@ import { Test, TestingModule } from '@nestjs/testing'; import { getRepositoryToken } from '@nestjs/typeorm'; import { MqttPublisherService } from './mqtt-publisher.service'; -import { MqttResourceConfig, Resource, User } from '@attraccess/database-entities'; +import { MqttResourceConfig, Resource, User } from '@fabaccess/database-entities'; import { Repository } from 'typeorm'; import { Logger } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; diff --git a/apps/api/src/resources/iot/mqtt/publisher/mqtt-publisher.service.ts b/apps/api/src/resources/iot/mqtt/publisher/mqtt-publisher.service.ts index e6654bec..e65708e2 100644 --- a/apps/api/src/resources/iot/mqtt/publisher/mqtt-publisher.service.ts +++ b/apps/api/src/resources/iot/mqtt/publisher/mqtt-publisher.service.ts @@ -2,7 +2,7 @@ import { Injectable, Logger } from '@nestjs/common'; import { OnEvent } from '@nestjs/event-emitter'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { Resource, MqttResourceConfig, User } from '@attraccess/database-entities'; +import { Resource, MqttResourceConfig, User } from '@fabaccess/database-entities'; import { ConfigService } from '@nestjs/config'; import { MqttClientService } from '../../../../mqtt/mqtt-client.service'; import { diff --git a/apps/api/src/resources/iot/webhooks/config/webhook-config.controller.ts b/apps/api/src/resources/iot/webhooks/config/webhook-config.controller.ts index 3b3e8acd..bd02ad75 100644 --- a/apps/api/src/resources/iot/webhooks/config/webhook-config.controller.ts +++ b/apps/api/src/resources/iot/webhooks/config/webhook-config.controller.ts @@ -8,8 +8,8 @@ import { WebhookTestResponseDto, WebhookConfigResponseDto, } from './dtos/webhook-config.dto'; -import { WebhookConfig } from '@attraccess/database-entities'; -import { Auth } from '@attraccess/plugins-backend-sdk'; +import { WebhookConfig } from '@fabaccess/database-entities'; +import { Auth } from '@fabaccess/plugins-backend-sdk'; @ApiTags('Webhooks') @Controller('resources/:resourceId/webhooks') diff --git a/apps/api/src/resources/iot/webhooks/config/webhook-config.service.ts b/apps/api/src/resources/iot/webhooks/config/webhook-config.service.ts index 24ab07dc..a6ff3f20 100644 --- a/apps/api/src/resources/iot/webhooks/config/webhook-config.service.ts +++ b/apps/api/src/resources/iot/webhooks/config/webhook-config.service.ts @@ -1,7 +1,7 @@ import { Injectable, NotFoundException, Logger } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { WebhookConfig, Resource } from '@attraccess/database-entities'; +import { WebhookConfig, Resource } from '@fabaccess/database-entities'; import { randomBytes, createHmac } from 'crypto'; @Injectable() diff --git a/apps/api/src/resources/iot/webhooks/publisher/webhook-publisher.service.spec.ts b/apps/api/src/resources/iot/webhooks/publisher/webhook-publisher.service.spec.ts index 0100e91c..1bb007b6 100644 --- a/apps/api/src/resources/iot/webhooks/publisher/webhook-publisher.service.spec.ts +++ b/apps/api/src/resources/iot/webhooks/publisher/webhook-publisher.service.spec.ts @@ -4,7 +4,7 @@ import { getRepositoryToken } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import axios from 'axios'; import { WebhookPublisherService } from './webhook-publisher.service'; -import { WebhookConfig, Resource, User } from '@attraccess/database-entities'; +import { WebhookConfig, Resource, User } from '@fabaccess/database-entities'; import { IotService } from '../../iot.service'; import { ResourceUsageStartedEvent, diff --git a/apps/api/src/resources/iot/webhooks/publisher/webhook-publisher.service.ts b/apps/api/src/resources/iot/webhooks/publisher/webhook-publisher.service.ts index 3b1e922c..5b6a6eb7 100644 --- a/apps/api/src/resources/iot/webhooks/publisher/webhook-publisher.service.ts +++ b/apps/api/src/resources/iot/webhooks/publisher/webhook-publisher.service.ts @@ -2,7 +2,7 @@ import { Injectable, Logger } from '@nestjs/common'; import { OnEvent } from '@nestjs/event-emitter'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { WebhookConfig, Resource, User } from '@attraccess/database-entities'; +import { WebhookConfig, Resource, User } from '@fabaccess/database-entities'; import { ResourceUsageStartedEvent, ResourceUsageEndedEvent, diff --git a/apps/api/src/resources/iot/webhooks/webhooks.module.ts b/apps/api/src/resources/iot/webhooks/webhooks.module.ts index 3527eb0a..03e9b1ab 100644 --- a/apps/api/src/resources/iot/webhooks/webhooks.module.ts +++ b/apps/api/src/resources/iot/webhooks/webhooks.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { WebhookConfig, Resource } from '@attraccess/database-entities'; +import { WebhookConfig, Resource } from '@fabaccess/database-entities'; import { WebhookConfigController } from './config/webhook-config.controller'; import { WebhookConfigService } from './config/webhook-config.service'; import { WebhookPublisherService } from './publisher/webhook-publisher.service'; diff --git a/apps/api/src/resources/resources.controller.spec.ts b/apps/api/src/resources/resources.controller.spec.ts index 4f048f05..4019e2df 100644 --- a/apps/api/src/resources/resources.controller.spec.ts +++ b/apps/api/src/resources/resources.controller.spec.ts @@ -1,13 +1,13 @@ import { Test, TestingModule } from '@nestjs/testing'; import { ResourcesController } from './resources.controller'; import { ResourcesService } from './resources.service'; -import { Resource, DocumentationType } from '@attraccess/database-entities'; +import { Resource, DocumentationType } from '@fabaccess/database-entities'; import { CreateResourceDto } from './dtos/createResource.dto'; import { UpdateResourceDto } from './dtos/updateResource.dto'; import { NotFoundException } from '@nestjs/common'; import { PaginatedResponse } from '../types/response'; import { ResourceImageService } from './resourceImage.service'; -import { AuthenticatedRequest } from '@attraccess/plugins-backend-sdk'; +import { AuthenticatedRequest } from '@fabaccess/plugins-backend-sdk'; describe('ResourcesController', () => { let controller: ResourcesController; diff --git a/apps/api/src/resources/resources.controller.ts b/apps/api/src/resources/resources.controller.ts index 8e9c2139..d637dfb1 100644 --- a/apps/api/src/resources/resources.controller.ts +++ b/apps/api/src/resources/resources.controller.ts @@ -18,8 +18,8 @@ import { ResourcesService } from './resources.service'; import { UpdateResourceDto } from './dtos/updateResource.dto'; import { CreateResourceDto } from './dtos/createResource.dto'; import { ListResourcesDto } from './dtos/listResources.dto'; -import { Resource } from '@attraccess/database-entities'; -import { Auth, AuthenticatedRequest } from '@attraccess/plugins-backend-sdk'; +import { Resource } from '@fabaccess/database-entities'; +import { Auth, AuthenticatedRequest } from '@fabaccess/plugins-backend-sdk'; import { PaginatedResponse } from '../types/response'; import { FileUpload } from '../common/types/file-upload.types'; import { PaginatedResourceResponseDto } from './dtos/paginatedResourceResponse.dto'; diff --git a/apps/api/src/resources/resources.module.ts b/apps/api/src/resources/resources.module.ts index ae8baab3..3a344d1f 100644 --- a/apps/api/src/resources/resources.module.ts +++ b/apps/api/src/resources/resources.module.ts @@ -7,7 +7,7 @@ import { ResourceIntroducer, ResourceIntroductionHistoryItem, User, -} from '@attraccess/database-entities'; +} from '@fabaccess/database-entities'; import { ResourcesController } from './resources.controller'; import { ScheduleModule } from '@nestjs/schedule'; import { FileStorageModule } from '../common/modules/file-storage.module'; diff --git a/apps/api/src/resources/resources.service.spec.ts b/apps/api/src/resources/resources.service.spec.ts index 55f6ba15..1c588c81 100644 --- a/apps/api/src/resources/resources.service.spec.ts +++ b/apps/api/src/resources/resources.service.spec.ts @@ -1,7 +1,7 @@ import { Test, TestingModule } from '@nestjs/testing'; import { ResourcesService } from './resources.service'; import { getRepositoryToken } from '@nestjs/typeorm'; -import { Resource, DocumentationType } from '@attraccess/database-entities'; +import { Resource, DocumentationType } from '@fabaccess/database-entities'; import { Repository, SelectQueryBuilder, Brackets } from 'typeorm'; import { CreateResourceDto } from './dtos/createResource.dto'; import { UpdateResourceDto } from './dtos/updateResource.dto'; diff --git a/apps/api/src/resources/resources.service.ts b/apps/api/src/resources/resources.service.ts index ef86b210..77c111f9 100644 --- a/apps/api/src/resources/resources.service.ts +++ b/apps/api/src/resources/resources.service.ts @@ -1,7 +1,7 @@ import { BadRequestException, Injectable, Logger } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository, In, Brackets } from 'typeorm'; -import { Resource } from '@attraccess/database-entities'; +import { Resource } from '@fabaccess/database-entities'; import { CreateResourceDto } from './dtos/createResource.dto'; import { UpdateResourceDto } from './dtos/updateResource.dto'; import { PaginatedResponse } from '../types/response'; diff --git a/apps/api/src/resources/sse/sse.controller.ts b/apps/api/src/resources/sse/sse.controller.ts index acb239fe..04867f8f 100644 --- a/apps/api/src/resources/sse/sse.controller.ts +++ b/apps/api/src/resources/sse/sse.controller.ts @@ -12,7 +12,7 @@ import { Observable, Subject } from 'rxjs'; import { OnEvent } from '@nestjs/event-emitter'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { Resource } from '@attraccess/database-entities'; +import { Resource } from '@fabaccess/database-entities'; import { ResourceUsageStartedEvent, ResourceUsageEndedEvent } from '../usage/events/resource-usage.events'; import { ApiTags } from '@nestjs/swagger'; diff --git a/apps/api/src/resources/sse/sse.module.ts b/apps/api/src/resources/sse/sse.module.ts index 7092e553..a4079c3c 100644 --- a/apps/api/src/resources/sse/sse.module.ts +++ b/apps/api/src/resources/sse/sse.module.ts @@ -1,6 +1,6 @@ import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { Resource } from '@attraccess/database-entities'; +import { Resource } from '@fabaccess/database-entities'; import { SSEController } from './sse.controller'; @Module({ diff --git a/apps/api/src/resources/usage/dtos/GetResourceHistoryResponse.dto.ts b/apps/api/src/resources/usage/dtos/GetResourceHistoryResponse.dto.ts index c9d5e96a..3120bfec 100644 --- a/apps/api/src/resources/usage/dtos/GetResourceHistoryResponse.dto.ts +++ b/apps/api/src/resources/usage/dtos/GetResourceHistoryResponse.dto.ts @@ -1,4 +1,4 @@ -import { ResourceUsage } from '@attraccess/database-entities'; +import { ResourceUsage } from '@fabaccess/database-entities'; import { ApiProperty } from '@nestjs/swagger'; import { PaginatedResponse } from '../../../types/response'; diff --git a/apps/api/src/resources/usage/dtos/getActiveUsageSession.dto.ts b/apps/api/src/resources/usage/dtos/getActiveUsageSession.dto.ts index 42247a1d..6e8baa6c 100644 --- a/apps/api/src/resources/usage/dtos/getActiveUsageSession.dto.ts +++ b/apps/api/src/resources/usage/dtos/getActiveUsageSession.dto.ts @@ -1,5 +1,5 @@ import { ApiProperty } from '@nestjs/swagger'; -import { ResourceUsage } from '@attraccess/database-entities'; +import { ResourceUsage } from '@fabaccess/database-entities'; export class GetActiveUsageSessionDto { @ApiProperty({ diff --git a/apps/api/src/resources/usage/events/resource-usage.events.ts b/apps/api/src/resources/usage/events/resource-usage.events.ts index fe10a0b3..b3614496 100644 --- a/apps/api/src/resources/usage/events/resource-usage.events.ts +++ b/apps/api/src/resources/usage/events/resource-usage.events.ts @@ -2,7 +2,7 @@ * Events emitted when resource usage status changes */ -import { User } from '@attraccess/database-entities'; +import { User } from '@fabaccess/database-entities'; export class ResourceUsageStartedEvent { constructor(public readonly resourceId: number, public readonly startTime: Date, public readonly user: User) {} diff --git a/apps/api/src/resources/usage/resourceUsage.controller.ts b/apps/api/src/resources/usage/resourceUsage.controller.ts index e616c771..87606fdb 100644 --- a/apps/api/src/resources/usage/resourceUsage.controller.ts +++ b/apps/api/src/resources/usage/resourceUsage.controller.ts @@ -1,10 +1,10 @@ import { Controller, Post, Put, Get, Param, Body, Query, ParseIntPipe, Req, ForbiddenException } from '@nestjs/common'; import { ApiTags, ApiOperation, ApiResponse } from '@nestjs/swagger'; import { ResourceUsageService } from './resourceUsage.service'; -import { ResourceUsage } from '@attraccess/database-entities'; +import { ResourceUsage } from '@fabaccess/database-entities'; import { StartUsageSessionDto } from './dtos/startUsageSession.dto'; import { EndUsageSessionDto } from './dtos/endUsageSession.dto'; -import { Auth, AuthenticatedRequest } from '@attraccess/plugins-backend-sdk'; +import { Auth, AuthenticatedRequest } from '@fabaccess/plugins-backend-sdk'; import { GetResourceHistoryQueryDto } from './dtos/getResourceHistoryQuery.dto'; import { GetResourceHistoryResponseDto } from './dtos/GetResourceHistoryResponse.dto'; import { GetActiveUsageSessionDto } from './dtos/getActiveUsageSession.dto'; diff --git a/apps/api/src/resources/usage/resourceUsage.module.ts b/apps/api/src/resources/usage/resourceUsage.module.ts index 2971c812..ab8960c4 100644 --- a/apps/api/src/resources/usage/resourceUsage.module.ts +++ b/apps/api/src/resources/usage/resourceUsage.module.ts @@ -2,7 +2,7 @@ import { Module } from '@nestjs/common'; import { ResourceUsageController } from './resourceUsage.controller'; import { ResourceUsageService } from './resourceUsage.service'; import { TypeOrmModule } from '@nestjs/typeorm'; -import { Resource, ResourceUsage } from '@attraccess/database-entities'; +import { Resource, ResourceUsage } from '@fabaccess/database-entities'; import { ResourceIntroducersModule } from '../introducers/resourceIntroducers.module'; import { ResourceIntroductionsModule } from '../introductions/resourceIntroductions.module'; import { ResourceGroupsModule } from '../groups/resourceGroups.module'; diff --git a/apps/api/src/resources/usage/resourceUsage.service.spec.ts b/apps/api/src/resources/usage/resourceUsage.service.spec.ts index be23623e..e9ca951f 100644 --- a/apps/api/src/resources/usage/resourceUsage.service.spec.ts +++ b/apps/api/src/resources/usage/resourceUsage.service.spec.ts @@ -1,7 +1,7 @@ import { Test, TestingModule } from '@nestjs/testing'; import { ResourceUsageService } from './resourceUsage.service'; import { getRepositoryToken } from '@nestjs/typeorm'; -import { Resource, ResourceUsage, User } from '@attraccess/database-entities'; +import { Resource, ResourceUsage, User } from '@fabaccess/database-entities'; import { Repository, IsNull, SelectQueryBuilder } from 'typeorm'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { BadRequestException } from '@nestjs/common'; diff --git a/apps/api/src/resources/usage/resourceUsage.service.ts b/apps/api/src/resources/usage/resourceUsage.service.ts index 78e292c6..22008dcc 100644 --- a/apps/api/src/resources/usage/resourceUsage.service.ts +++ b/apps/api/src/resources/usage/resourceUsage.service.ts @@ -1,7 +1,7 @@ import { Injectable, BadRequestException, ForbiddenException, Logger } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository, IsNull, FindOneOptions } from 'typeorm'; -import { Resource, ResourceUsage, User } from '@attraccess/database-entities'; +import { Resource, ResourceUsage, User } from '@fabaccess/database-entities'; import { StartUsageSessionDto } from './dtos/startUsageSession.dto'; import { EndUsageSessionDto } from './dtos/endUsageSession.dto'; import { ResourceNotFoundException } from '../../exceptions/resource.notFound.exception'; diff --git a/apps/api/src/users-and-auth/auth/auth.controller.spec.ts b/apps/api/src/users-and-auth/auth/auth.controller.spec.ts index 33c5893c..ef64cae8 100644 --- a/apps/api/src/users-and-auth/auth/auth.controller.spec.ts +++ b/apps/api/src/users-and-auth/auth/auth.controller.spec.ts @@ -1,8 +1,8 @@ import { Test, TestingModule } from '@nestjs/testing'; import { AuthController } from './auth.controller'; import { AuthService } from './auth.service'; -import { User } from '@attraccess/database-entities'; -import { AuthenticatedRequest } from '@attraccess/plugins-backend-sdk'; +import { User } from '@fabaccess/database-entities'; +import { AuthenticatedRequest } from '@fabaccess/plugins-backend-sdk'; describe('AuthController', () => { let authController: AuthController; diff --git a/apps/api/src/users-and-auth/auth/auth.controller.ts b/apps/api/src/users-and-auth/auth/auth.controller.ts index f27efbb5..c3d3d50f 100644 --- a/apps/api/src/users-and-auth/auth/auth.controller.ts +++ b/apps/api/src/users-and-auth/auth/auth.controller.ts @@ -1,7 +1,7 @@ import { Controller, Delete, Get, Post, Req, UseGuards } from '@nestjs/common'; import { AuthService } from './auth.service'; import { LoginGuard } from '../strategies/login.guard'; -import { Auth, AuthenticatedRequest } from '@attraccess/plugins-backend-sdk'; +import { Auth, AuthenticatedRequest } from '@fabaccess/plugins-backend-sdk'; import { CreateSessionResponse } from './auth.types'; import { ApiBody, ApiOkResponse, ApiResponse, ApiTags, ApiOperation } from '@nestjs/swagger'; diff --git a/apps/api/src/users-and-auth/auth/auth.service.spec.ts b/apps/api/src/users-and-auth/auth/auth.service.spec.ts index 234c8fc1..0268dfaf 100644 --- a/apps/api/src/users-and-auth/auth/auth.service.spec.ts +++ b/apps/api/src/users-and-auth/auth/auth.service.spec.ts @@ -1,7 +1,7 @@ import { Test, TestingModule } from '@nestjs/testing'; import { AuthService } from './auth.service'; import { UsersService } from '../users/users.service'; -import { AuthenticationDetail, AuthenticationType, User, RevokedToken } from '@attraccess/database-entities'; +import { AuthenticationDetail, AuthenticationType, User, RevokedToken } from '@fabaccess/database-entities'; import { getRepositoryToken } from '@nestjs/typeorm'; import { JwtService } from '@nestjs/jwt'; import { Repository } from 'typeorm'; diff --git a/apps/api/src/users-and-auth/auth/auth.service.ts b/apps/api/src/users-and-auth/auth/auth.service.ts index 109ec1c6..c95de520 100644 --- a/apps/api/src/users-and-auth/auth/auth.service.ts +++ b/apps/api/src/users-and-auth/auth/auth.service.ts @@ -3,7 +3,7 @@ import { UsersService } from '../users/users.service'; import { JwtService } from '@nestjs/jwt'; import { nanoid } from 'nanoid'; import { Repository } from 'typeorm'; -import { User, RevokedToken, AuthenticationDetail, AuthenticationType } from '@attraccess/database-entities'; +import { User, RevokedToken, AuthenticationDetail, AuthenticationType } from '@fabaccess/database-entities'; import { InjectRepository } from '@nestjs/typeorm'; import { EmailService } from '../../email/email.service'; import { addDays } from 'date-fns'; @@ -147,6 +147,7 @@ export class AuthService { options: AuthenticationOptions ): Promise { // First try to find user by username + console.log('usernameOrEmail', usernameOrEmail); let user = await this.usersService.findOne({ username: usernameOrEmail }); // If not found by username, try by email diff --git a/apps/api/src/users-and-auth/auth/auth.types.ts b/apps/api/src/users-and-auth/auth/auth.types.ts index fae1362e..839a154d 100644 --- a/apps/api/src/users-and-auth/auth/auth.types.ts +++ b/apps/api/src/users-and-auth/auth/auth.types.ts @@ -1,4 +1,4 @@ -import { User } from '@attraccess/database-entities'; +import { User } from '@fabaccess/database-entities'; import { ApiProperty } from '@nestjs/swagger'; export class CreateSessionResponse { diff --git a/apps/api/src/users-and-auth/auth/sso/dto/create-sso-provider.dto.ts b/apps/api/src/users-and-auth/auth/sso/dto/create-sso-provider.dto.ts index 3070e7c6..b73af501 100644 --- a/apps/api/src/users-and-auth/auth/sso/dto/create-sso-provider.dto.ts +++ b/apps/api/src/users-and-auth/auth/sso/dto/create-sso-provider.dto.ts @@ -1,12 +1,6 @@ import { ApiProperty } from '@nestjs/swagger'; -import { - IsNotEmpty, - IsObject, - IsOptional, - IsString, - ValidateNested, -} from 'class-validator'; -import { SSOProviderType } from '@attraccess/database-entities'; +import { IsNotEmpty, IsObject, IsOptional, IsString, ValidateNested } from 'class-validator'; +import { SSOProviderType } from '@fabaccess/database-entities'; import { Type } from 'class-transformer'; export class CreateOIDCConfigurationDto { @@ -20,8 +14,7 @@ export class CreateOIDCConfigurationDto { @ApiProperty({ description: 'The authorization URL of the provider', - example: - 'https://sso.example.com/auth/realms/example/protocol/openid-connect/auth', + example: 'https://sso.example.com/auth/realms/example/protocol/openid-connect/auth', }) @IsString() @IsNotEmpty() @@ -29,8 +22,7 @@ export class CreateOIDCConfigurationDto { @ApiProperty({ description: 'The token URL of the provider', - example: - 'https://sso.example.com/auth/realms/example/protocol/openid-connect/token', + example: 'https://sso.example.com/auth/realms/example/protocol/openid-connect/token', }) @IsString() @IsNotEmpty() @@ -38,8 +30,7 @@ export class CreateOIDCConfigurationDto { @ApiProperty({ description: 'The user info URL of the provider', - example: - 'https://sso.example.com/auth/realms/example/protocol/openid-connect/userinfo', + example: 'https://sso.example.com/auth/realms/example/protocol/openid-connect/userinfo', }) @IsString() @IsNotEmpty() @@ -47,7 +38,7 @@ export class CreateOIDCConfigurationDto { @ApiProperty({ description: 'The client ID of the provider', - example: 'attraccess-client', + example: 'fabaccess-client', }) @IsString() @IsNotEmpty() diff --git a/apps/api/src/users-and-auth/auth/sso/dto/update-sso-provider.dto.ts b/apps/api/src/users-and-auth/auth/sso/dto/update-sso-provider.dto.ts index 2143313b..fb11f1cf 100644 --- a/apps/api/src/users-and-auth/auth/sso/dto/update-sso-provider.dto.ts +++ b/apps/api/src/users-and-auth/auth/sso/dto/update-sso-provider.dto.ts @@ -1,10 +1,5 @@ import { ApiProperty } from '@nestjs/swagger'; -import { - IsObject, - IsOptional, - IsString, - ValidateNested, -} from 'class-validator'; +import { IsObject, IsOptional, IsString, ValidateNested } from 'class-validator'; import { Type } from 'class-transformer'; export class UpdateOIDCConfigurationDto { @@ -19,8 +14,7 @@ export class UpdateOIDCConfigurationDto { @ApiProperty({ description: 'The authorization URL of the provider', - example: - 'https://sso.example.com/auth/realms/example/protocol/openid-connect/auth', + example: 'https://sso.example.com/auth/realms/example/protocol/openid-connect/auth', required: false, }) @IsString() @@ -29,8 +23,7 @@ export class UpdateOIDCConfigurationDto { @ApiProperty({ description: 'The token URL of the provider', - example: - 'https://sso.example.com/auth/realms/example/protocol/openid-connect/token', + example: 'https://sso.example.com/auth/realms/example/protocol/openid-connect/token', required: false, }) @IsString() @@ -39,8 +32,7 @@ export class UpdateOIDCConfigurationDto { @ApiProperty({ description: 'The user info URL of the provider', - example: - 'https://sso.example.com/auth/realms/example/protocol/openid-connect/userinfo', + example: 'https://sso.example.com/auth/realms/example/protocol/openid-connect/userinfo', required: false, }) @IsString() @@ -49,7 +41,7 @@ export class UpdateOIDCConfigurationDto { @ApiProperty({ description: 'The client ID of the provider', - example: 'attraccess-client', + example: 'fabaccess-client', required: false, }) @IsString() diff --git a/apps/api/src/users-and-auth/auth/sso/oidc/exceptions/account-linking-required.exception.ts b/apps/api/src/users-and-auth/auth/sso/oidc/exceptions/account-linking-required.exception.ts index 841e706a..079b2eee 100644 --- a/apps/api/src/users-and-auth/auth/sso/oidc/exceptions/account-linking-required.exception.ts +++ b/apps/api/src/users-and-auth/auth/sso/oidc/exceptions/account-linking-required.exception.ts @@ -1,4 +1,4 @@ -import { SSOProviderType } from '@attraccess/database-entities'; +import { SSOProviderType } from '@fabaccess/database-entities'; import { BadRequestException } from '@nestjs/common'; export class AccountLinkingRequiredException extends BadRequestException { diff --git a/apps/api/src/users-and-auth/auth/sso/oidc/oidc.guard.ts b/apps/api/src/users-and-auth/auth/sso/oidc/oidc.guard.ts index 8278d920..9551ffd5 100644 --- a/apps/api/src/users-and-auth/auth/sso/oidc/oidc.guard.ts +++ b/apps/api/src/users-and-auth/auth/sso/oidc/oidc.guard.ts @@ -4,7 +4,7 @@ import { AppConfigType } from '../../../../config/app.config'; import { SSOOIDCStrategy } from './oidc.strategy'; import { ModuleRef } from '@nestjs/core'; import { SSOService } from '../sso.service'; -import { SSOProviderType } from '@attraccess/database-entities'; +import { SSOProviderType } from '@fabaccess/database-entities'; import { InvalidSSOProviderIdException, InvalidSSOProviderTypeException, @@ -72,7 +72,7 @@ export class SSOOIDCGuard implements CanActivate { const redirectTo = requestURL.searchParams.get('redirectTo'); - const callbackURL = new URL(appConfig.VITE_ATTRACCESS_URL); + const callbackURL = new URL(appConfig.VITE_FABACCESS_URL); callbackURL.pathname = `/api/auth/sso/${ssoType}/${providerId}/callback`; callbackURL.searchParams.set('redirectTo', redirectTo); diff --git a/apps/api/src/users-and-auth/auth/sso/oidc/oidc.strategy.ts b/apps/api/src/users-and-auth/auth/sso/oidc/oidc.strategy.ts index 81f118bd..78a80f76 100644 --- a/apps/api/src/users-and-auth/auth/sso/oidc/oidc.strategy.ts +++ b/apps/api/src/users-and-auth/auth/sso/oidc/oidc.strategy.ts @@ -1,7 +1,7 @@ import { Profile, Strategy } from 'passport-openidconnect'; import { PassportStrategy } from '@nestjs/passport'; import { BadRequestException, Injectable, Logger, UnauthorizedException } from '@nestjs/common'; -import { SSOProviderOIDCConfiguration, SSOProviderType, User } from '@attraccess/database-entities'; +import { SSOProviderOIDCConfiguration, SSOProviderType, User } from '@fabaccess/database-entities'; import { UsersService } from '../../../users/users.service'; import { ModuleRef } from '@nestjs/core'; import { AccountLinkingRequiredException } from './exceptions/account-linking-required.exception'; diff --git a/apps/api/src/users-and-auth/auth/sso/sso.controller.spec.ts b/apps/api/src/users-and-auth/auth/sso/sso.controller.spec.ts index 6eea6fea..05302e37 100644 --- a/apps/api/src/users-and-auth/auth/sso/sso.controller.spec.ts +++ b/apps/api/src/users-and-auth/auth/sso/sso.controller.spec.ts @@ -2,7 +2,7 @@ import { Test, TestingModule } from '@nestjs/testing'; import { SSOController } from './sso.controller'; import { SSOService } from './sso.service'; import { AuthService } from '../auth.service'; -import { SSOProvider, SSOProviderType } from '@attraccess/database-entities'; +import { SSOProvider, SSOProviderType } from '@fabaccess/database-entities'; import { NotFoundException } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { CreateSSOProviderDto } from './dto/create-sso-provider.dto'; diff --git a/apps/api/src/users-and-auth/auth/sso/sso.controller.ts b/apps/api/src/users-and-auth/auth/sso/sso.controller.ts index 4e887158..1ef31a04 100644 --- a/apps/api/src/users-and-auth/auth/sso/sso.controller.ts +++ b/apps/api/src/users-and-auth/auth/sso/sso.controller.ts @@ -17,8 +17,8 @@ import { } from '@nestjs/common'; import { SSOOIDCGuard } from './oidc/oidc.guard'; import { AuthGuard } from '@nestjs/passport'; -import { AuthenticationType, SSOProvider, SSOProviderType } from '@attraccess/database-entities'; -import { AuthenticatedRequest, Auth } from '@attraccess/plugins-backend-sdk'; +import { AuthenticationType, SSOProvider, SSOProviderType } from '@fabaccess/database-entities'; +import { AuthenticatedRequest, Auth } from '@fabaccess/plugins-backend-sdk'; import { CreateSessionResponse } from '../auth.types'; import { AuthService } from '../auth.service'; import { SSOService } from './sso.service'; diff --git a/apps/api/src/users-and-auth/auth/sso/sso.service.spec.ts b/apps/api/src/users-and-auth/auth/sso/sso.service.spec.ts index 8e7a0653..c578d1de 100644 --- a/apps/api/src/users-and-auth/auth/sso/sso.service.spec.ts +++ b/apps/api/src/users-and-auth/auth/sso/sso.service.spec.ts @@ -1,6 +1,6 @@ import { Test, TestingModule } from '@nestjs/testing'; import { SSOService } from './sso.service'; -import { SSOProvider, SSOProviderOIDCConfiguration, SSOProviderType } from '@attraccess/database-entities'; +import { SSOProvider, SSOProviderOIDCConfiguration, SSOProviderType } from '@fabaccess/database-entities'; import { getRepositoryToken } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; import { NotFoundException } from '@nestjs/common'; diff --git a/apps/api/src/users-and-auth/auth/sso/sso.service.ts b/apps/api/src/users-and-auth/auth/sso/sso.service.ts index e0dad67a..2f644efc 100644 --- a/apps/api/src/users-and-auth/auth/sso/sso.service.ts +++ b/apps/api/src/users-and-auth/auth/sso/sso.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@nestjs/common'; import { InjectRepository } from '@nestjs/typeorm'; import { Repository } from 'typeorm'; -import { SSOProvider, SSOProviderOIDCConfiguration, SSOProviderType } from '@attraccess/database-entities'; +import { SSOProvider, SSOProviderOIDCConfiguration, SSOProviderType } from '@fabaccess/database-entities'; import { CreateSSOProviderDto } from './dto/create-sso-provider.dto'; import { UpdateSSOProviderDto } from './dto/update-sso-provider.dto'; import { SSOProviderNotFoundException } from './errors'; diff --git a/apps/api/src/users-and-auth/strategies/jwt.strategy.spec.ts b/apps/api/src/users-and-auth/strategies/jwt.strategy.spec.ts index 8e4a11b4..16f305ef 100644 --- a/apps/api/src/users-and-auth/strategies/jwt.strategy.spec.ts +++ b/apps/api/src/users-and-auth/strategies/jwt.strategy.spec.ts @@ -4,7 +4,7 @@ import { UsersService } from '../users/users.service'; import { AuthService } from '../auth/auth.service'; import { UnauthorizedException } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; -import { User } from '@attraccess/database-entities'; +import { User } from '@fabaccess/database-entities'; describe('JwtStrategy', () => { let jwtStrategy: JwtStrategy; @@ -61,9 +61,7 @@ describe('JwtStrategy', () => { jest.spyOn(authService, 'isJWTRevoked').mockResolvedValue(true); - await expect(jwtStrategy.validate(payload)).rejects.toThrow( - UnauthorizedException - ); + await expect(jwtStrategy.validate(payload)).rejects.toThrow(UnauthorizedException); }); it('should throw UnauthorizedException if user is not found', async () => { @@ -72,8 +70,6 @@ describe('JwtStrategy', () => { jest.spyOn(authService, 'isJWTRevoked').mockResolvedValue(false); jest.spyOn(usersService, 'findOne').mockResolvedValue(null); - await expect(jwtStrategy.validate(payload)).rejects.toThrow( - UnauthorizedException - ); + await expect(jwtStrategy.validate(payload)).rejects.toThrow(UnauthorizedException); }); }); diff --git a/apps/api/src/users-and-auth/strategies/jwt.strategy.ts b/apps/api/src/users-and-auth/strategies/jwt.strategy.ts index 3f99935f..776a3c5a 100644 --- a/apps/api/src/users-and-auth/strategies/jwt.strategy.ts +++ b/apps/api/src/users-and-auth/strategies/jwt.strategy.ts @@ -7,7 +7,7 @@ import { existsSync, readFileSync } from 'fs'; import { UsersService } from '../users/users.service'; import { AuthService } from '../auth/auth.service'; -import { AuthenticatedUser } from '@attraccess/plugins-backend-sdk'; +import { AuthenticatedUser } from '@fabaccess/plugins-backend-sdk'; interface JwtPayload { username: string; diff --git a/apps/api/src/users-and-auth/strategies/local.strategy.spec.ts b/apps/api/src/users-and-auth/strategies/local.strategy.spec.ts index e0a406a1..4bee8fa9 100644 --- a/apps/api/src/users-and-auth/strategies/local.strategy.spec.ts +++ b/apps/api/src/users-and-auth/strategies/local.strategy.spec.ts @@ -2,7 +2,7 @@ import { Test, TestingModule } from '@nestjs/testing'; import { UnauthorizedException } from '@nestjs/common'; import { LocalStrategy } from './local.strategy'; import { AuthService } from '../auth/auth.service'; -import { User } from '@attraccess/database-entities'; +import { User } from '@fabaccess/database-entities'; describe('LocalStrategy', () => { let localStrategy: LocalStrategy; diff --git a/apps/api/src/users-and-auth/strategies/local.strategy.ts b/apps/api/src/users-and-auth/strategies/local.strategy.ts index 43375845..f2d047ae 100644 --- a/apps/api/src/users-and-auth/strategies/local.strategy.ts +++ b/apps/api/src/users-and-auth/strategies/local.strategy.ts @@ -2,7 +2,7 @@ import { Strategy } from 'passport-local'; import { PassportStrategy } from '@nestjs/passport'; import { Injectable, Logger, UnauthorizedException } from '@nestjs/common'; import { AuthService } from '../auth/auth.service'; -import { AuthenticationType, User } from '@attraccess/database-entities'; +import { AuthenticationType, User } from '@fabaccess/database-entities'; class UnknownUserOrPasswordException extends UnauthorizedException { constructor() { diff --git a/apps/api/src/users-and-auth/users-and-auth.module.ts b/apps/api/src/users-and-auth/users-and-auth.module.ts index d50afccf..852f8535 100644 --- a/apps/api/src/users-and-auth/users-and-auth.module.ts +++ b/apps/api/src/users-and-auth/users-and-auth.module.ts @@ -23,7 +23,7 @@ import { RevokedToken, SSOProviderOIDCConfiguration, SSOProvider, -} from '@attraccess/database-entities'; +} from '@fabaccess/database-entities'; import { EmailModule } from '../email/email.module'; import { SSOService } from './auth/sso/sso.service'; import { SSOOIDCStrategy } from './auth/sso/oidc/oidc.strategy'; diff --git a/apps/api/src/users-and-auth/users/dtos/createUser.dto.ts b/apps/api/src/users-and-auth/users/dtos/createUser.dto.ts index eeb54dce..40a332e1 100644 --- a/apps/api/src/users-and-auth/users/dtos/createUser.dto.ts +++ b/apps/api/src/users-and-auth/users/dtos/createUser.dto.ts @@ -1,6 +1,6 @@ import { IsEmail, IsEnum, IsString, MinLength } from 'class-validator'; import { ApiProperty } from '@nestjs/swagger'; -import { AuthenticationType } from '@attraccess/database-entities'; +import { AuthenticationType } from '@fabaccess/database-entities'; export class CreateUserDto { @ApiProperty({ diff --git a/apps/api/src/users-and-auth/users/dtos/paginatedUsersResponse.dto.ts b/apps/api/src/users-and-auth/users/dtos/paginatedUsersResponse.dto.ts index 750fbe30..cf031278 100644 --- a/apps/api/src/users-and-auth/users/dtos/paginatedUsersResponse.dto.ts +++ b/apps/api/src/users-and-auth/users/dtos/paginatedUsersResponse.dto.ts @@ -1,4 +1,4 @@ -import { User } from '@attraccess/database-entities'; +import { User } from '@fabaccess/database-entities'; import { PaginatedResponse } from '../../../types/response'; import { ApiProperty } from '@nestjs/swagger'; diff --git a/apps/api/src/users-and-auth/users/users.controller.spec.ts b/apps/api/src/users-and-auth/users/users.controller.spec.ts index 49ed1475..18be364a 100644 --- a/apps/api/src/users-and-auth/users/users.controller.spec.ts +++ b/apps/api/src/users-and-auth/users/users.controller.spec.ts @@ -3,8 +3,8 @@ import { UsersController } from './users.controller'; import { UsersService } from './users.service'; import { AuthService } from '../auth/auth.service'; import { EmailService } from '../../email/email.service'; -import { User, AuthenticationType } from '@attraccess/database-entities'; -import { AuthenticatedRequest } from '@attraccess/plugins-backend-sdk'; +import { User, AuthenticationType } from '@fabaccess/database-entities'; +import { AuthenticatedRequest } from '@fabaccess/plugins-backend-sdk'; import { CreateUserDto } from './dtos/createUser.dto'; describe('UsersController', () => { diff --git a/apps/api/src/users-and-auth/users/users.controller.ts b/apps/api/src/users-and-auth/users/users.controller.ts index b1e8575f..41bb3fac 100644 --- a/apps/api/src/users-and-auth/users/users.controller.ts +++ b/apps/api/src/users-and-auth/users/users.controller.ts @@ -14,12 +14,12 @@ import { Patch, } from '@nestjs/common'; import { UsersService } from './users.service'; -import { AuthenticatedRequest, Auth } from '@attraccess/plugins-backend-sdk'; +import { AuthenticatedRequest, Auth } from '@fabaccess/plugins-backend-sdk'; import { AuthService } from '../auth/auth.service'; import { EmailService } from '../../email/email.service'; import { FindManyUsersQueryDto } from './dtos/findManyUsersQuery.dto'; import { VerifyEmailDto } from './dtos/verifyEmail.dto'; -import { AuthenticationDetail, User, SystemPermissions } from '@attraccess/database-entities'; +import { AuthenticationDetail, User, SystemPermissions } from '@fabaccess/database-entities'; import { ApiTags, ApiResponse, ApiOperation } from '@nestjs/swagger'; import { CreateUserDto } from './dtos/createUser.dto'; import { PaginatedUsersResponseDto } from './dtos/paginatedUsersResponse.dto'; diff --git a/apps/api/src/users-and-auth/users/users.service.spec.ts b/apps/api/src/users-and-auth/users/users.service.spec.ts index 0b69c62c..097d4362 100644 --- a/apps/api/src/users-and-auth/users/users.service.spec.ts +++ b/apps/api/src/users-and-auth/users/users.service.spec.ts @@ -1,7 +1,7 @@ import { Test, TestingModule } from '@nestjs/testing'; import { UsersService } from './users.service'; import { getRepositoryToken } from '@nestjs/typeorm'; -import { User } from '@attraccess/database-entities'; +import { User } from '@fabaccess/database-entities'; import { Repository, UpdateResult } from 'typeorm'; import { BadRequestException } from '@nestjs/common'; import { UserNotFoundException } from '../../exceptions/user.notFound.exception'; diff --git a/apps/api/src/users-and-auth/users/users.service.ts b/apps/api/src/users-and-auth/users/users.service.ts index b0c0d825..9bf13f40 100644 --- a/apps/api/src/users-and-auth/users/users.service.ts +++ b/apps/api/src/users-and-auth/users/users.service.ts @@ -1,6 +1,6 @@ import { BadRequestException, Injectable, Logger } from '@nestjs/common'; import { Repository, ILike, FindOneOptions as TypeormFindOneOptions, FindOptionsWhere, In } from 'typeorm'; -import { SystemPermissions, User } from '@attraccess/database-entities'; +import { SystemPermissions, User } from '@fabaccess/database-entities'; import { InjectRepository } from '@nestjs/typeorm'; import { PaginatedResponse } from '../../types/response'; import { PaginationOptions, PaginationOptionsSchema } from '../../types/request'; @@ -212,10 +212,10 @@ export class UsersService { }); this.logger.debug(`Found ${total} total users, returning page ${page} with ${users.length} results`); - + const totalPages = Math.ceil(total / limit); const nextPage = page < totalPages ? page + 1 : null; - + return { data: users, total, @@ -262,10 +262,10 @@ export class UsersService { this.logger.debug( `Found ${total} total users with permission "${permission}", returning page ${page} with ${users.length} results` ); - + const totalPages = Math.ceil(total / limit); const nextPage = page < totalPages ? page + 1 : null; - + return { data: users, total, diff --git a/apps/fabreader-firmware/README.md b/apps/fabreader-firmware/README.md index f0d8aeec..c27121ae 100644 --- a/apps/fabreader-firmware/README.md +++ b/apps/fabreader-firmware/README.md @@ -1,6 +1,6 @@ -# FabReader Firmware +# Fabreader Firmware -This directory contains the firmware for the FabReader device, an ESP32-C3 based RFID/NFC reader. +This directory contains the firmware for the Fabreader device, an ESP32-C3 based RFID/NFC reader. ## Web Installation @@ -9,13 +9,13 @@ You can install the firmware directly from your web browser using [ESP Web Tools ### Requirements - Chrome or Edge browser on desktop (Web Serial is not supported on mobile or Firefox) -- ESP32-C3 based FabReader device +- ESP32-C3 based Fabreader device - USB connection to your computer ### Quick Installation -1. Connect your FabReader device to your computer via USB -2. Visit our [firmware installation page](https://OWNER_NAME.github.io/Attraccess/) (replace OWNER_NAME with your GitHub username) +1. Connect your Fabreader device to your computer via USB +2. Visit our [firmware installation page](https://OWNER_NAME.github.io/FabAccess/) (replace OWNER_NAME with your GitHub username) 3. Click the "Install" button and follow the on-screen instructions 4. If prompted, select the correct serial port for your device 5. Wait for the installation to complete diff --git a/apps/fabreader-firmware/src/main.cpp b/apps/fabreader-firmware/src/main.cpp index c081766d..6460d851 100644 --- a/apps/fabreader-firmware/src/main.cpp +++ b/apps/fabreader-firmware/src/main.cpp @@ -90,7 +90,7 @@ void setup() Serial.begin(115200); delay(2000); - Serial.println("FabReader starting..."); + Serial.println("FABReader starting..."); // Initialize SPI for other peripherals if needed SPI.begin(PIN_SPI_SCK, PIN_SPI_MISO, PIN_SPI_MOSI); @@ -147,4 +147,4 @@ void loop() api.loop(); nfc.loop(); } -} +} \ No newline at end of file diff --git a/apps/fabreader-firmware/src/persistence.hpp b/apps/fabreader-firmware/src/persistence.hpp index a34b30bb..43bd63d9 100644 --- a/apps/fabreader-firmware/src/persistence.hpp +++ b/apps/fabreader-firmware/src/persistence.hpp @@ -27,7 +27,7 @@ struct WiFiConfig struct WebConfig { - char admin_password[33] = "attraccess"; // Default admin password + char admin_password[33] = "fabaccess"; // Default admin password }; struct PersistenceData diff --git a/apps/frontend/.DS_Store b/apps/frontend/.DS_Store index 175ed525891086f1553508160a7b349e48caab08..82ad545d124b6e4f82ebebb69bceb16f4aedab20 100644 GIT binary patch delta 296 zcmZoMXfc=|#>B`mu~2NHo}wrd0|Nsi1A_nqLncFVQh9MfQcix-#Er`*8;G#fvoRDf zlrkhSfYF+&bFDIgP#K!0vk7eXP(S2qRRu41?gx2;>|uHJD4XnumAuxMohE- delta 88 zcmZoMXfc=|#>CJzu~2NHo}wrt0|NsP3otNbG9;G;7v<&T=cP|9RA*$|{D4uNZL - Attraccess + FabAccess diff --git a/apps/frontend/jest.config.ts b/apps/frontend/jest.config.ts index 0346750f..8b8ce92e 100644 --- a/apps/frontend/jest.config.ts +++ b/apps/frontend/jest.config.ts @@ -13,7 +13,7 @@ export default { '\\.svg$': 'identity-obj-proxy', '\\.css$': 'identity-obj-proxy', }, - transformIgnorePatterns: ['node_modules/(?!(@attraccess)/)'], + transformIgnorePatterns: ['node_modules/(?!(@fabaccess)/)'], globals: { 'import.meta': { env: {}, diff --git a/apps/frontend/public/apple-touch-icon.png b/apps/frontend/public/apple-touch-icon.png index 4c9a79da70c9cf4a52913c46c100233f39e2ab31..9e33a86874e3cbdbc32c1e7d252e0e965fedcf11 100644 GIT binary patch literal 8519 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 diff --git a/apps/frontend/public/favicon.ico b/apps/frontend/public/favicon.ico index 0913a841b85c90cad1ce1853089aaccb53b3dbec..3dbdc343a28091124ae8bc6f974988feebe3da6a 100644 GIT binary patch literal 15406 zcmeI23$RsH8G!$NF-#>T&B8_n(u{mpQ)6WYB^D`6l9)LlDrSz)v(l_(;J=P>87^_w@a1@3qg`kFz=Fa+z_eb7$T4 zum8RN^{>ZXdy9B7NQMp->Jf6;J|dqJkr5;O_NWhv+z0ODlLPuOBC8G+83hj_NcecF zsz1+AJn;;m|A6_^pNsSH25V^UKhI|jq$->tx37*S0K8$-Rbps{!_Y%7lsOa#fWV#+ zx3qw-&@G4MI=yN6J{dHxO@`)5a^*v-jd4 z)2t6hPr|Us!$tW>zSH|cuIN3ETzkIT`%$haHz2<;*Ch|;OEPW|{#ZTM0b`$k`7Zet zynXQfxv?ZC0T0t|-oIK7Y3wpOly;@z5A6G400RL3k=S`D*W-P=xm!M+e@2dOF3PAy zy>b+C)0>Lkng=_)1N`W#mLRM?C`(?J{qcKaz9(@VBXGTy)Q#=C!Wc{idtxCw!7NNy8#M}L6*1lzG z%T%pIBVCIM%VX;*nq9IBN7$W)4ta&I0y!*z_2Q$_rd35n1RdmGinOC5B2kSs9Uq8B zG+3L8j1baQWMWg~eN;fOwjxTPrN~8CY@;mRJ+1P-Im={Ui?a1YtV!jvG}v~su3`kA zLP`h((oTEkOle@vy_m9wb$=;q_z=sL?~pIC4{c!$UQW?tNXk!@SzC@`2TTzPQRp3v z-DjzF|J9N&^vL)^mz>L<@HdMulw_86s7AG+{v@CpY!S(oWe_&ntsS$E7(YDgkEz+$ zrn|a~AN(`5O9-@AP$?W`&+B8%8CQ?J?vvQw9N5?WejBBOJ*|hh{0mt3P~F=e&pjgt zsf=jp|If>J%X#RWQ7C#>W8;~?_6zK{7cJVv`Kjy;YH5*untSDN#$gup9Rbgi`7ZDF zrY@Pwd0}*Q7p!}>u5jjheuvHl&R+Xs?|#blhTbD*K)aFrn~c4&D>WV^`K$V@ zXT-RD$C?i&9I7~xTPL4DPcKDdxm5Frv#6fkcY@PAJC$+{w6ANPSlA=Su)h6_IsaSg`SkhPT#wv>-8s;g!#|F5 z@?>hwdz-iGfe%g?4(!<#IZo$U>Ep!R&%Iy{U}MGNqIU#y`+A-M^gK?kc}H@-p8 zI|CknteA7a1^8ExlNY$Q>w(pVnP1F1^iM?R85Lk@U|{mP16?*;mO z2jxz1TdA!d^R&;Q+6>bPQihQB3H!gGY-bPH%Dg%ykoR=nk%!yKl`Z)3z5efe84h4f z$CJKlzMmBLo%Q&5d^m5Vh)RsTbP-ji@eD;H8c8NvTr zel-TJ8e1wp73n*ZN=ik>oUerkks8@z%Ij*@VxktF-5O0*l8W4|s*s^Z@fz7ewMk&l zHTXJxJ+*7A##xJ=YO=}R4J>AF+Z{mt1EtE<~p@tA}HKZb4hHSW+IQS$fiSd;F%3Q zAuxiv75aS8)Xu$9r(C1=c}6D6?CISd&-T~y9CJB$4JYb-hw??) zTx)R{&X73-e5P14E?Kor%z5VdEcYpoQuGdT2hY1t&R=WpHbSkr78wG4HqT*tH}VG0 zWgDnxweW7x)g20CAZy`q#k1f^dT+!1MBtZwPSyLt<-D6c@sW*kM02+{9DlDO?pwjT zJWp5d?^3HGj=mY(V+zf;A-9DhEB-AqV7Ml>Kb>lnlvTjDfxCn|qlx6#xwOBJ|MS4w89$?N;>1#L27 zey8w-Nm>-^?G*fuNO0#`z`w_^y_k|`P0@QDz5CNS`zn2z&i&{}T~~Bn)%-F!#yr<| z^Nnq+RV7&fzrDZQiH>#1wt{P?lz8ud=e!oXE;$Yau})%QgOI|Y??M>s>#(x}`@6JY z>s{LV?SuOM67R_-mC7>s_v{6cymr)UUzV(w53xtgb^4(4VIdxRH(cdiTO_1zcpWQI zP`jfxiTl#PPIMlY<8H4R_xy#w;#8wcYWy8 zeJu1nfM0Lwkg0k9oMFA{cdd3!4l}0s|0n#_wZ+=pO1!?KxvmEEI~3l1&Vc8qt=xSp zPGxoOhlTrd#iL^gd~=C|)u%bMS>NGQ^3M&X3#*3uermtaF2~V_#S}a4y$d_!c&o{N zcSQUz%JD6h;&W@{=%#KtopM@Jw|5${U(s)(c;BV(!7jspyZ3G3PJfEt`CEPct*iAk zc+Yb&ae4>48ZZ4uX_&PWdZe9Cf{4dD_^fCXz_@TL@W4@X8Sd&*J8IO?J%KSei~35% z>l~$TKcTH-sqZ0mPOZnrcwLKKPj(Ae>p~zH*!nK|Up2OT-_?ITXWqJ`RrWXE1Qg|E z^5-VboOjWeTgaPh3MEhFeo3rnQto5UK3&)#A6rnABbXOY1@p+PXC^Luk4PWB<&Q(s zu_VUrU6QI8{mzm&>$$W~Saq>4olfjFQuM63?B_1F zX}9P)*~&Mic0co@<&UZ6!^8MaeqGG?ycFb$p8eEcJ(oUDpI%1K677336Y7n9RKp5A zGZPo~{qtBu&L+3Nfe&-Ry-Bh2uZKR}rt`GWDWh_mWLR^D98SMJ)7Z%zE=nW3uj$xn zVVpJ*m#O5>$&BAA%!$#^kB!7W>c(z5;WNAcT>;gr#hwL%dGTxdVb8;5eEK(SjcG5X zlm2uO&vc=}R1>MlP^21Aj}(5MN-2@!ItTPj zw1fG2lRh6?{j8w}L%WCaHh%A74R{0oC-iy2^3+tPI+luzsY~)$j9KI9LsO?Y3oOU? zS>|3!=cD}rFKA`mXB_Z<0poLdp^fi&I0IRhNL`V1&_2@r?-2J4#6R6H^&a6-&JtEx z+zsMCWYM!Sw1sWvJJU9q8mrTeGfA7Ib*9xWNhbO6>2u!qd++@qG`%wqXMLaZeJtlahlq$Z z5#Nb;=9vh}h=}O#Mnr6+jEuBw`itm`rjKd_-OQ7({LsJJXALu^Jjp= zU%qn_BRsEjn5Xg+RDOSU9Qp_)bK;fWm*c=d+mG<_$wl1z{XN{g_67#sPW0tSu9ah* z>&e;%U)EN1Q}$5$cG2DyheP9saR2@T{OWff;)gHJqLF3 z*Na!r+`>DzZsUdh6X?v0Q+Zv?>&oOALh{=(Vu={E?j$IcPU+q5Ms@i#S{nM{t1V+p z@^r4r5xZ%}W`)Ld%JeO0q}`a#=c@K&uLvxP zN2A_dg22EPO!-gZ%$d_Ta`-U%Yj>m0y)nIj1{R|Ej{t;T|6F< z7Zd5qkBwX?h>b*kOce5CqaeDrBT;DC%t0PexHT%sKY8_$J`qW{h)|!9#_=tmHP+c_ zPf}2Nf$kIR8SD*{EBi&Lhv?p7?<^*~PcTR7P^x-%eS*D9 zY~zz0J0|&zcKciOpuMuunIDuM7btXMLdir*yDqUXB**00{i3h*D_-`<34z2}%hVO= zFK`B>_l>hpj$6`CU7&m`q~FSszPd8Lnon|8a!E~9JJ0DF%Xip%aH7?V9jb4eo@{!w z>CJd-{R-NwFZcj%lsZ@5CX#V54~ z)V-$fxBsonJ;?fbJJHej3hOW7K;T_Gy#Ekief4jA{`ph<`IC<^f9WE|OEXpO0H4?J zi5!soRLSLjeMg4xKDjT$h{vG1595{3mz##R+N12dx(8o4cNt%Q{U1De@)#d{@IGFi zJApw@8V2Ny+^M`92YIh5+r}$3L*Sj-NA#`&@vB&tj{CBc(Ox-;>9GZM2MqY;aR0;i z`R*U#(MOMP_S7*97Nq=tK2wXla%cC*-A-wTx&Or{ce<7ibe8%sd-M{nTz(S=r_ZaO z{nBsmVdD5%9NRaFo?PcL9>b~mEFOEkO!D*2?^cq!OKj%R=TlPK;_Kq9FkDxIyGy^u z8zN zGh@-dGZr# z6Mrk`EjwB)TVxC8u~x$F+nbq<;({S0J9Chp=EjbcEM)C;V^?MlDl_6kxozsaaFBn8 zmUbSgDR#4f@um=DZq)X2zxFj`<-pfChoXXJWNgntCTqKMa**oa9F-EQxR#$=&S#G` z%iOtLqlvO1Eo?V#-+~4!COM)v?1)2aaW@9L&*IAbB8CS2=DRo|8QyS?c} zJb(B(Jb&acrYDbMdg2WFyN_e2?-f*~r>(+c?F4Ec2-m9StX@NiG=k>LrnH3g_IYCm^^0CUPSvRCJ`)iJeX&oH}&*)wF1kljQ4##fn| zh#}v6sJ?s;W_S-BU`^4rysLgcDpHfwS+$q2rtnno9So=8uVkHyL;-gekxtfCw)Wfg z@}$jZt~wgJ`+`BEf$aAARjpu4|zk}O5d?in<@sqCS&O52>Z`^Bg1 zt+q2#+uC(?b!~XIMg|MGQx{r0wvn=LFVkc64sLdFBkeibr}yuYN{*X<5J@S004X?MLF$%y7zyAjrH%;UUho@PvN*J z8hQc%1cUz*jC3vn8UTPzKuJzU$1m?FALpC3uKO@*EEhjHrntBbpE7OtKWHU123P5I zY|h|iLTBX^Wdf@fj#P=3_7cG^QDe`}aF+weL$v{g{RJQ9X z53c#}){cr!vwDHGlY$c=J5%&gXCA^eaDTSyy{=umwY3gqHh?Pq9lP|qvJ{+TEqiOA zwGQ?FsXT2g zdr1AP#GFJ42#94KHZ&vACM&XL|Zbo4)Cz1Dom5?;pNtkLJIv%S7DtwY7=N7+Zmnpg=KPL@^7w%1{@PKQp+nYHPfIbA!0lVffuwQZ(LOO z>77(Hak=`F+@8uZGRw`7HhS@det~(Ga>Byt6(4T$=b_kMxx&@gXs#jXPfqW&i{skxC~HM}z;zclaS5R1nP z5m&{TyqOw#s&Lm8=z{-#=sM6w)Wt@0p)fuLoF6Rz!aJ^X^;2Sd?&7t%_l#t^JUif( zZsf#HXsOU-F|(8Sf*>q$(jz(p7H-&_dTjDpV%9$nRIc{nNo z7V0Q_s$4BWoDGOl41v5Atw`OR^cpv_Z!h9&o zSm(m&IW!X4tbu8wLX>(a%8BUiv0rCe@O*}{ji9$qAvDjMhyWh<;?BX{85;yWBj;CO z(31}bPO>iJj~Hp}=q1rQ_5HVQg}KVSlo^|12N*7?tIxO@NqfzKwq1QD{Kl#(Pn0d` zSis3=zoF8y?7b~+;2&QiCw8zX!cn)9jPzLd9ZmNQ&%bjfTfesQycKf-;;Cdkm!Ss< zF_HEX8TD%so6}B;W7moEW3)tSL_pYpasnUpLV^4k%)j=dWWL-zhRFOm*}*Dwt^Bqr z#*cwlUYJ{$*qW?zwlvxK5Wuv@^!A^T9u!`PpQ;m{#WO-RmQnT-4Vq&Q83WXF-d~{v zi@V%J5jk1O+s`}8(czsH5?E)Q9G;ljr{ZgpAWzE@pw_R@_H|amHCsupmP?Zd4Kx51Ck*^VmN1tVCE*VGoJr zGx4BoPrWqI97{-*1ih_d$PJ?TKGr~mMxYxXyx@2fo1rokaCW1hiF_K>(D zkg#=q2>56)*%t8tCk~qUMG>w; z%McW8O#Kyx7WDC}WmzGd2{9$wJ>-{&3=-pf6Wpk*T!@_NM4( z9I1Brl}gWK&IZrkPQO`1Ovb#C0q?pcGxtGneVRweQv9hW{fpOi=PHnm1&_}eyk)9H zrgq~rsS7QKDa@8pvHUl6#K?U{u}_32`IyV(=R{VGvyyV}DnzA9l^I|ob1>-u;JsjrHs z9~o&UK01+zm7V-ckbphIWYDH@?Sh#0GtDUPL=pCI!2GQ%hnG%@6dB^oe1U#^`?jO? zXVD6Uz-P*DZmwKKJl2g4VR-g5Otbwwc53z_nENK8li)br^7)+?<_`%t??48FP2~?b-|GB5&4_GSoGBZ-2M0kDrIQHgy zM4RD9A&dY%Z|VOYlOM8R*IugY zD$OP->fgT%E`Rv(YTsVBLo51Lo)zEzHx-LXLHCHSun(mfaFELASw^lznLD!`S<&3p zzN~CDX>))kCMtt(YY%u-J{^@aOzbt@V5_W_2%W=?u}@Y_yWv5#UH_q?}K$KX2OB-w{ErPt$0sJ>3!kUB_E-;t%Q z&w1Dj`>rU_C@#$Y9z^c>QNiKIfwgBBl*7cCFZSyPVxxX{8n4JgQK)NGtoT34RdAF~5}}OyKbK`msjQ zl7yv2Ie90=5Ohv4W42yB6d^T?zbSbNt3Ahu+12oT^UBb_?b39GdFfY}vcDO2>tTus zORPJwqQ{WECT1p_)VEa2XBQqE`(^rHSYpD{gXN<%&CHEi-uTU}+t`Qf?Sccy`s{W= zG>+8ElRrd(^xQwZatGxfhp~5*L$K*r$B~}(rnzg3SUrqwW=b9Ban?ib`GqLv$>`T} z_!8(@*8Avqh-viG(~BYY<12!@k{7|^M{iNbT~uKmO4YKWm-`h6xwZc=%xU{-&L4-| zFPH5uVGOz?v(s;8q3A#22CYw_Wbxa`UP|xpunlr#!6}1fdRAa*(<)x4*4a6+QNjvt z-B#xJti)%-=>W-;CM`4S&zR+kFnKRCUpP$$=kG_Erh>xRzdKQ)X^AGuL^Q1{a}V-n zEPHVw(xgVc=BbPnIs`S+2$iZ1nSztUz`#lywL{e84WZh`y<~7vX8&@yTH&syP>!eo zp&?ZXZQ3}Y#eB@o_4zLs9B(w@#=S#fnD;_>pnxWZzTOiF7mD5(CfHF5`5>B`-K8Vd z^S-9q&Sz%fgj(;#aV^QS+4tZ~)AMHc%f9;1obAJ`*0vCt<52jj#zmV(EdHB%#hwO! zmQ=g$j~tMb+75<0K20wn+pgBC>Sj*A`p>;DB#0wc)4Ey22Pqk6E3z7wM29KyzOL=0 z1vaQ!d`gJlk2T=s%Rk1ql$1CUs-Y0s6WDEcW4O>{P$KoTTDlECV+F+cST)-BD5ypU zWiFP^6dBUomoeof$IG19AX{x9dCQEw1<1yQgg{MC)5=RRg`}H+!-fy(4Ecxgm(K-< zjb!U$IlXGq=JRNpM3s*@j?dO$jUw4O(R_FY3kR;8HSY`OJi330E9ho>P_MfUq=yc%BG#zAq z4WYPM?`b(xSA7~}jJQ9r0RqTFf(bwTCDp~QTUi}%7U_K_q7{}(VPFHC}EfKp1 zxK*azB3|-E`K6fd=i(cwmHBsO#gcmeTBBtYZ~TG16oiCdz&1Yd!@-kWP_wVbu%sk$ zFc$iwiqH=EOKB;I5Of&Nee$hT1pS0wlbP=7z%RcM&_5ic-6Ppr6W-96o@nB8C2x$l zIHaGt@8`wY3OFi1g47lv@6X!XHxPLxZkOCqvS0Djca+^dD_4;5Pz9|(I1c+3WhwJ@ zXN0HHHEO32S?);3Mj_k-!JsxFp#&R~1SNz**BD{ry*IK+Zv^gAyv!cz;=ipysXzee ztHJJI7{lwOv8-Kdw?m&3mzuX{n3h#-O#|KPSlGQGX`z24O0~>$^c`G%5)$9sRO6!b zcG&i&s}3wqk3?D*jm=u86LaIvT7%SA|I0U+iL}bQ!J=bdqk7(Ecf3ZEtk^Upee#>B zY>-pH@p10-&NiD!l>mcwK2oECNlG+x>kiY5)2H+)_k$w3Od z4x6j>a2|H-%uersUf-)o3w&0|Cpt+$?5(3yj}e+^ zP4BIj(%9+yHQPo@Z%fP0yMB%b5y+cXl3H85!zY!|yQajd*3Y#r-(#RmS>ixp@zZ71 zj0+Gp*c0?zMFh2Y963zC$uIGE8`Z>>u)y(v9%CX9F!QOumzvI%pJ z_%L_)&e!o*sXEQ;lNBakm#6gOT6|XD8#&& z^IJ*QtU%Ly$DcSQw-xEX&aLZM@X|zZRWp4RZ^jvK8-`rZBcYp?NYiLE;^@l%W-$(N z^EE?*8@tECQm4RHRTLwn)!0B)Qw1JN&aOWRQCoqPsH%mT23dGO-$f7CN6-6vSAr+f z^`2B4?ji1bmP*$P_`w;`CJ*xHG26LYFu!C4 zN;)wLv84~qz~RG^253=HIF7CEGfX-U&agmJorqQqRg!`c7eN`V3=g?jVQXtg<`w`zBQ6GlA4vA@s|&a}aC(piUA|)B4BRwl%4)OAZb#3NY^|ufPtaEI0LbeSvNVa&U89 zQa_3cfB$cXRK-osX4;f?37HS{s)}8HzWX+$#f!L0e$q z4<%=8@xWWfI_f6I4hVGfWFKqmR7Lc!VDJT}=%wQkCM|eGWLeQguzW=Y!X&wqEuWgT z2XWB?pOmjZ2Eo@(9qeq3bYAq7n<3VxGkp z$8(>|L{cz%c}yS)PjS0AW@|IyREMZEx%Woe=8sZb#0M7iG22k48ka=P7ir&&x38wEr67BB$ev68@f$yGQg_sV+;aX9 ztH;y!_pXtPPivJ)2~`&Cv?`$h0?-i77s_vQ>h5irQB$>@RHP@G0Z~3m8=WGp)huO& znyLZ10fk-P&hBJka!;e??KE2#w{9ohugqVX6Xpphz1M1M{vV55QZ>iU4 zm+5wRaIcrqjq1{3ZYBXyr^L+WbfgDr_J|78UIb*eGEnD|3G#FAVlBxty5qy}rB(Zj zh$m^}nCw6o0`|h}u!_{LMSMRt@6tK)2U|!LhPyp0b0zkmiw~U(=F5>fWLBFqQJV-w z8$z~q{|bt?o^72h{ax=h9Zi?aLuc#ipLnj_=n^$fRvB#L~ znE-e4PjKgi$0uL|BcTS)dV9zBTEnY}MVW_}mu;TK3 zJnY>A5+fUNdeC@7a0lGufg_>iGthO%Hq`LoCv$!rA_+p2;I=CcBh#eVy2i_`*sj61 z7qkenaSNaBAlYl&5xJ$unx)lHQc23R4|~@_IWLV$HPsv zDYHSY6y|b!aamu>a%0~I%`T@zcI-Mn#(3&9c5+Nf6csrp(~ z%=7@=nz-khymc`={0EbC)%l(8H`b&y{yXaajiZn^SAeDus{HvcS}t!%9w@!6EaB+s z+rX;R^w#UeAw;_Ki@t;BKMY-u=HK)){KJBvh<~M1Tu-OnD-6X>R2QA$1&Flm9bXnL zFw4!T8djeo5&G*_5?&9lZC^|bggSgY5UVB^9BmZ(!NjcoGN5E}xzi?S%7-s>t)TWL z`VYrGA{!@B-BbK&Ct_FE&ejnuaY0!jV?TUN+Dm^JH#^4syPl-+6K(QUOm(eq{2t|E z^kF-W=QqOuwXjE1MsGJUNh{LUh7-R9j1!r$TAKK!w*&QS)cDK+JeVY1@)MnoDK))y z&9b9HW0qk8*ottuHdJeMRIasKXZ8baMn2eNrZxP=27Mx}G zCh5oG|J0byyya?8`pVz+AMxBCoATC4+N0a+n1z~!FGD@zb8F%HQC-Z|a;kD6yT{R6 zt?zi(p#yECj4iaRF%Myj(~3oztZiNWB|nLBx~2sybiSxl=t($H9P|6vjbXXEZncWG zou;6a6GFVQA%NFRA)HTOG-4{xGfbYA&hY>O~yPLO^Y$Px8g?l)~=%-bEM zx&-q^2Kj5Zi}T#t{~M6~XL(M-yjCp%{VwTp{;phi)%5~<_pw2gnAu+|-ZKHh9tm)H z%kDx^=xHn9o?`xW$j*bqDCZG=Mw>+sIx#HmgjVnnE+~8{FwGmVbm-A-@`2LN@A0bo zMaf4^i@0$v&2*j8SS0*rmfr~05$#8<)SfC>>@BIOAjj8gbCiN~EOP>z^BbD(gsk|n z&7X}S$;iU%34-oa`JtP#Bi;&43CQ!|(`;GPARr?%PAOT5X*QCQY97b^2nqtpSe0K3 zzzPXtYag0Lyl)1A&&I%@oLhOq82y)xoz}@$m5n~5r7htbVqv43b9Rkq&a!iZ`OkbW z@=H_5>Xcp7?*8I+!v-Bsuvw%Fv+#hF+E|g>7(2e>Dt~Q4_h9#z6AfH;!B{h^XjExH z?3#MbkUK`OyWhZ-hG^>h_q1-=uYZE(5IL^~h^ySxC1j0QhG8Ux*;7j zU3Z**<0{h07TRMT0jLo2*fod1;|g-|rqV9K1m5BOv`eSISz{up-0u?u>p>uO#*2ZNgvKjoJ-MkxfHIK!7RES-4EJ`bO7~ks;{wg5wkCp1A^7 zBIC6RDhkB&p)TI@UZ!gE@gvpgU8Gb>6@?RvVid)+?$<2qf7AL|YOJ(6AHM9NEX=-& zW+{W86uy%ABbS#hTM{V~cy|s-3m*b~GlrLr7g@$eTOfhP{6!+F_e=OwQGo8{*u0+(zexm zwuaqPi1LF5Bhc+j+z-7Gh0wmEp$;30%D3BG8t^%L?J<)gmL)~-fF(;0celUBd-s3g zGOWZ&?z8l4qVTvQow?&~_((|bVlRs)LT_#?t(06u(!dj|`K#a0A+h(f)F-Hzs10Sa zU|#oZX33fA|CCd-T)Pa!ztWkxgNeR_0Cl-W)q!eShl1MoDX-$@bQR@gVV~A=5--^F zM2<^fl12O1*^6;k;rm0cwbd&ogvcDp7mKdTEc+9d_hMal3?eD*A|7NL#1-vu!T!Qu zZ#*%w0f`ci7d{p>784le^w15HaSg&AAcof})<8MA_tx$BCVAuzM4WIy zKN}P1%3qt5`Ti*l``J5k^KOy3{R)o!(X%T03*d|LTP=-QVXSRm!C5O=ZE_b^Yhcsc z>_~qe9FmU5%MLn|oH>UN77ag*i+kz`6%xz6A?GF2onIb#xV{SLS)2xW-y%%jx=iy| zxy++i{zaWm)m+>&qF((3f^62dm3i}e`9wjtqL!(G*pV&3IX6&s4#Vhupa;m{xiyd* z>!oaVqWIoE2ZV1$Wip^rpXKLgb&cPyA07*naRCr$Oy$76KM|D5`eeZ3rTJ_##tJ;#ABpdf$Fc>f;5OAf0-XZ)#4Jiad ze!&TW5JC(XoDhnQalpNI*|IFTNw(Ej(ymt9`@Vn9%$+-D&YijMz16PlT9u$*Tt=F*+O=Ga2L+2F4jiqex1^qtR7XX^bl# z#~enjw50t``W7)|WA2C*fTC@r6e8Ry{u(Ph#sZ+A60T65=?jts?%EgzBtXm$JOX!i!V2lRytW!K2O6EE#)@FdN0#SRhf#>F7e?+fM!y?88YvrBJic~e)TE7gEC!Pl zE2Fh~Bx3N$r-=D(9PpT#zlvNSpKncoatDP!!~J&2)l$A)Cr3Xm=ab{f?|tu>XUzDt z5AgY_Tnf!RV*#U2x(nfv!|2;vaU~>SOv6D!vxHPn0{7PD`|!wN^wIywz-ak}!LF-&_n&-iffgV6v)7Scq_Mnmf~#TBAesW28}{fn`_Y0ua>m<1@-3ZwzZ z5zHBz10#LpGzKWf#QF&NYQpG)`F|pep>-JCjy0{*l#FC%Y1Ko@u`rC01<(WNh>zKz z+C8uO+$ffKqZ|R@@LIG9=B|g@<(dIJLZ)04vpEtjssm6uj4ZUv_AU|75=OHLHSW>4 zz{mmu(%p}dNd!6^7)hH)_*4H_0@_HKB&^=sWmNPl4MrN!>{*I{Q8A9CwTT|;F?=vG zeoHW40T^R8^1&E~ja+7mdC3xkKFTaO<{}+siY;d`KBPxD42~i~m{`C5I1+#;LL{A@ zSiTccB=-nyykLw(E25tb-Nk6(D0vOQXd-Qgi$^5{&OxWtq>L|&95G(ex+@AJ$2x9o zX+7RBMgpKIY>l4#w~=6t9`jrld5pyG#PXwU2|HfV7;_yW{=H>#M-D}#$R3>;S^eJ$ zqq|NQk4dL8{d;Z9U3aiB9wVksq4j8COh*4q;QdI!$j(zDX3H!%hBm>R_2_qIn&a<` zxiKFk$>Cd|KaGKF8s9h;qU3KzL%&vG)Oga&S1OD=bQkh#9dl%jqEInu7&IzmbTFok zY+y^m=!U2ZLsu9^qjJ;u(KnAPY+3+f|48cUwCDy0z}gO;XOWyr*0ib3wH38Ra= z($?pDm*b7E%d-&+qDDGG|I=X%;l%LU*y1s=0ELiNKw>3dE9DgeRBC_k4$&AWk&GAc zQN7@CCX$u`LMQzk)CRKrDOPIww z-|;9=L|h*)WwJm%iViqA9p+FvMId8^R|#HjaUncL zk&aUF7{ka@R*oQya>K3Q5wspF7>yG4(VFpjX2G$SFc#(JRGOUVtw^!jgtx+emfwDG z4egF?pHDM)+Hzy{!swCC!-ml-rA$+mipTMUQSzdXAGvZ4 zDa~{k9Rbio$QS%3&OYl^@owT=Y%2X`C|PsB-6Hp$B#azUthB-AiV9dbkwY6zDY8Ds zISd%t@L@cL_D5-i4!M)bcM9V1h{G7#QE~ngv`)Mt*BR!GIFpzxfcu&xc5*}JCz>y% zj%T%N2~I}#{Q@RO3z6N8G8rvlleFC;pVDBoXBlG!qq{dM9gp_?Fdi)qG=GGs>tmLr zP=^FGS!a+uQ#gDW3n?NEuM4A9aLLjvK3??J!pH^EY_18d32%t5AJkKsr_5ja8Cmb; zR)o0{Y-ey|)E4#T3747q?2(^iH(=4>)Y!mi;j%c9E0Qq!YTmfXmWk#@sTg}}3yoYX zOY6#UV(F4BGU2rJ(anC(t*?cO2~l*oE7g~4pSV>G!Dy*wm{y)IX{cN(N?N-%+x}&_ z%zv&FRFn&ky)*@zxt7^T)e;xKYyEY3=J1AdlBx<;gET3cn|=zoXSDKLicCHXTN zJhO21>$%9;d=d}O#zr7cyN^UB_L5v5JPtLgu{Z-V4U?FMk12d~HIMn8l`;4fP%O=* z!pQTMqWKdtz*L1S02(hCV-?3;(iA-MgE1eB^u0qDQM%uYjQXtdT%!DM-Sip?qhtVoAF<(p;6UHnak9tfwUWqWeDmnVgH>Rob zV#3Pt$V2Cj@c4LVd|}KiTzzQ(%ghzv8GYQe#h-iJg!nnBvG}+FrG~?zYXMJES%E^OBK$^QRFzv_7uI(u6JmW5{1lwWft|?XkY54%_FO z$4Z627s7in3ZWQW2Vis*oNunfgVAFFxG)6VlT@He(eV6P!#KsxS?GDWjv|;u;Wv#~ zh2}JZ$~B$*J&n*lE)T&IJ?ng3D(!smasl=!o>9PuZKIxMY%$8#Fo?{mQf$s}WMeX-xXsh0#wd$#CxOD`<$~FT!}tWU|Ps6qt|@N#UcI zhmW7QVA^*Qm@eYo%)-@g$UA|R_$9W%qrN%Ox(svc#h8Uy^JprO%=7vQRx}Z{yl{HG zn6uhA=4_u=%j2{)TgpDbm2_$=J-$rCjgO9Lmd()0=Tb_V%W=jBM($L)5z5kG^az05 z?38NuIZ`8MDZ&e`J5q5_$sY^N3k&a=1972Nf9^rC>BPaCLC`V)7C+Ao6xFc@=|Cm6@rhZ zX*hoE!O#=Ki!Pxfa>XgIU`Om)Z=l7xFTVJyZfx;|-&;w$fpwC6^WyUOG3WLrae-AIEp z33e3IN+X%;$KT;nMW2&XU@}7ukhTGC=`hk5yn!wkOkNDcnmH-t6o#=bJA@^b18Azq zpsu0}Rb}Oh@ypA~v;bsD0LTr>DgjVp#&isYV2Sxj2!=@rhDiwYe*?oq=pP(J*WeHi z4UFK${wlN&D@Q7zNX8qF8h*Fd!e=E*$0KtJ9a@!2YaLiA45P9D?qi&3HSzhC7OsSu zXOrn_(rfe?47tU!b0y_?EMb%^&Hv^s73&3u)K&%1vrV}n%&i>4%qpO!yaH7f6{svL zM@3l<6}d8{`HA__5Q`OqM_H_7@F8io=6^H-v(tPBqv$|Ih2?3wU957ldK!QL* zpanr$fuTX=67>xXpm$&ZT?74S?j6RazFG{L129o{$Av8I5|bpY)9}ceZYS_)-b><9 z)7!Sy;fMiWB2gmoj6a%wZ`j`8BEZsLX-P$J{GRkA5 zor|PrlgGr$g|b)}<=T>3W@dRmmQ)X8VpWA={+bFc09x~t0Fd8brnJ6de8c=C%Ete9 zPO&v(C}+~RLdG2;Ay9%agaHx+5`e)$^bTqv=BnKz&t(=L_vYvcz6s*eLZ2Ii8oS3^ zY4B#G5zz7L=3Rj-M{q+%G+K!B^Ln)%Di zQB_U?P^Nr-G$g5Lp7+6AYkt za1h-C{YnVB`ueb|XBeCNY9edE8PIG}1yeeir)K>{&^ir|>O01CK3aPfH`_=j0x*&v zxs{R4mn9GKLZ4)@Q)cn;WC5hK@xxfD0lDOPm{(SQDI!a6pEXc5(IVcz#kmS6O#}Hf zM#!45&qo1cRdyK1RQF+KO&RK|t5Hh=pfrCas>-$IS6V+uksjvqaHeOwUapg+E;a6u zwg&!v0SN+Gf}X(v^pF7b_oJ(?7khgKv8ksL-T9mi9mW-5l5;t3eRM8BYjchf({Qx3 zCMGq-RTjojb+6>fG(_0?<`_|>5O>X4lGhaV4x(RIY zCIq}{OZ^^ENAC@+HBjzQ6dfXWh^#4lD4&qe%r&YM#|S@T zfX5```UFg9cSku(msgCK=-e%pVUpHN0HjVb5BoxqKA%#)&le)YVSFJ{i*sL{Gp_F) z3!@%|`>vyf(cODAWCyXPwjWb!s?ktgjruCm{^a*-pP&9Ctxs-`j`C<%heIP7-!Q!V z*J8rGZ`oiWwg_rpFswGnMhJRnKQPdb&c0rB^z@*mrxzQ0DsXVPQiLmgd#UlqW0Ltf z98xex1Ea^wa3=NfV;-5s$G;_TQMN}jI#Cn%M8GF&?q?PNdnu;TcXD&WArD!T(2VZ$ zzTPlNJ!lxtg|Rj}g5zp>FtxTCjWsoj`Rgjl@2}8qPZZ`fzP`F}foXgj=W)p|HGb$h zE)d3xBuhY~Hr61H5Jm0~?FEbw?Cr;j5%E;$u{=Pifm8!ueQcG6wSzQwpef)R%aYK#=g zPF#y5eL{Y%&nRGwukwjRz}dj*&$9VER#o?4L0uUp)YNM2Us;VB#r)*@@RMDo_G9OZ zN3iuud6vHWyVYY!o5-z#?TKM^oJOOG66KXkM2BU4YE#^g&i+2M_x9jWPd9dS4dBV% zTD75e&OTygJl1$L{F0`@Wz@%YJ!2kWFxtJGyavfVA2P)_IvORK4y(T%3vjtIs@iWA zeiUa`#o%l~i3^W;I)$+xfrGTT#LL{$&Vh;qM1f)uX$Uk{Fs7MaV0Kv_RyX9)R9lC} z>KZgsxU;HSg*z$KsnZ(hU`xX&b#<{qz+D{4@Wr@AhCC`%8l4=I5a>;DKRWt)wGec7 zVROd_whh**5UUMFFKHhhC5#~3Y)mW7+L130n1ACqcpwf3*BQGUNV z>7@;CSx$vHX|roW`P{|P7%*1SSL##zXL2lQF}NGY_XKoeOlJhNA87B>R^VV)7as4b zK#STGb1PgdtwYbru{czcuZj>D^~h-Xv2++C0T8Cqfm06ZdT7byw$hl=iUb?ixv_== z6JqeOfssZzuDToZ>nqU|34l8As;oq%+VoPSN5}ak^M|x~F^L@fEX?LU9+Gd3FRf!dFFE1z zh-0M>#wFXwgxnnoX#w-Oe3t$;DHBNt!cEQK0yS1Ja)Gyqo>A71;~GXVskTnJKMhgH zQ>QtUMd{4e=XWz!iqq_p%xR2WtWd?9W916zvjR$)P$$KGeaaPTi>$!Y9eHdYs^-U| z!Xl*6+NUTv{e1M{wC379P3eaC#^*Iix7cTO!Z2pE02siFk-9XKDJ9#p5P2g^YB4-t z%=p4skr}}$wVjw!SBHspSUI}sUT0b~z2^5DBDTgJ(R0L4Wik+3*; z=+vaRJ&^gQZB?E=OB7cEBfVaOs_<)QoN zSSxD!(Qxe&z9?H9T`n*pA41iaon)0ros5YI5FFgbq#}6aX=uzsg5$Fk2HzAK9ilp8+6zQ!)9t;zIM_`Qp$>VN#_1DfCHc&Xn$;YI&oK&XDV4 z1f$S?z{k*qm|QQC6HenMZ7lsQCC@?a1t=^^c|sk%y-`TC6Wcrc@OW>1q`PAuAf-si zw*i&3m$WU0Z$h-TD%axOz);M%KE6y^I*$Nw!xds4pMV%7%I`QJQZSf34Z)ib3T{dG zoRUDr!B~|U#=5$0%&4zd(H~-dN_RGKf2!jxCcnp!OP&dE;qdwT+^YCCyu}=dajW8N ziq&2quLOW1LY;Id*4v}3z`o8-Jk(W-o)Ov%j{=Wr_a-E0Sqx9vRakh&meyWX?Y96N zm_m}zi!FHLPJYxK8jmw+8p9?f*Dj_Qi^82l7siRX0jzHrz~s6HOsu7}huUcKTcIku z=){+12yI%6*{~Lr?Z5-lqF8m|hFm2KT&>XA0HscwgRu@J09|P5>cpcRW!OJdQ5tx$ zlg-^6pQ7|xgOHL;^Eis6ucK$}M%(9LbKYSVAW%6Ix@cI9VlHgO^%&rfw(!9 zraSshfnDgf5JH3ns8#|%(H}beQqdps|5d&ZZ^L4f)l2(bVd3tNnbVY1DglV1L6jQN+SRF|LHGAe2x~8e$Fx0^$K6dt>7@7;qP5%;@b@J@ zn*H|ZVRQsQPwjI{45LZM!)NBw_6y-ByeVWWPrMX8ig5hE6Hb>#m0hJ%5a)anltg{1m zcQv42SzPI-2N*a0IPLk6a!jLj(#~00bAGTYBJ_sKrJ?7e(a8d6A_cUmGmDMC*ypW( zY>CbH?bb%ROe7a2nchXP3nRA>5)H+}*pL~(DfPXW($I*BwRI}|Sx4?qBmla7A@6zQ zTA$(~I5s8P=hK(s{-kY^L++O9H9C@yQX_Phs1kslF0^!X;Gxb+92_wTa!DSrEUW2b z=%7EhxOOd{VO{D1NY8{AIH~Qe`V9p&(qS~=bE}36zQA=}`IEs_9?tW4_j6|5}xn7*mFpSA{HUebh|2q8X)7sM2CnzY#ncXr^(&MbBf)kI5>c;qYdxI0Waa9UeI)t|a5Nm>EU zs+K?eIOXu^kzJLP2BQ&5Ge#uPN1ybL!@ek65lfBF7U%Fbm-J}C1ujpvMAT&03?Y8Z zMmQS2)XTi*mUUxwLk5%U^#+(CK$Q7OY0ne^;)h>_7&2rHWQ2xN6m+3`UZ+*7K0)qY zpqQ~FlP5RBb}wQ!!qi2AECAIAP$-l(!c-@)btu{hM>NzFlCG?b>V;^XAX34LvRzsy z^NY0>VjJA3dv+4Wl(ZY4uBFG1UK?3}*i+#X1(F68Co*Z1mn6quMY9S%et_lA%`g}|3?Wxx$f(!J3A!A&e`O;hhrQo$?VV#JGbK> z@4X!z!$YXZWYJVvh53^v{FNi{+&ru|3 zuz_7m0WmAJYS4EMT6BGXP7= zJFv9A43jAZB1(W$Wsj<{tuA^A#s7@hgwjI-48_wV12En7C@ z*=M()VrUreKjm~BGjp!8K0ZOP^i9?lr=1y4DI^uo_YDoIa!E>wXzS@hYiB23>>R+R z0g42r;4!8tr(*%yaAg(Kntt(gkQ)nHj}pd6078r5lI$^U!Oe|%w$QjngcGVE8o=i- zN;pOj<1!L}hH|wBm_UbMlmbD0KBHDAJ{PE%FrUF>JyI-TPu>qG|_9ojFT~!R~ zj?nw|?Ze}bJ&O9S9(?@F^J8nkT^--b<;K|OPSHk~TBxW-T9E+IM!2Q316w->@bo~V z2j6@)9~~rZLo^iLLPB}@c!hZviAAUJlpL!tj7$I=dy=dVjsfv4)Z^o)=9+V+4FTyB zI1^Dxd!HlRtjSn0*TNlL-hpNHIb{JT1zP6-QOgrbg3GE1P{_BI$$H!($Zh|oJv;HG zTYrNquelbJCr?oe<5$U=EK~aInP)a(+lCGJ#HnXvYJG#(1>=}0v|rGNVLl7ciI&bT zB>|7P91iTD#FBxhK)ExV{CCHu=1nq_8m;h=0j7GZzdWbA_Z; zeolYWf3gycFG0FW1}3>MUn5rYOz|-4JwR4%f+-7BodO5;0BIq}5JMW~yzZXc(J`?B zXPkLlI;MhBx=JRl_i zlm=a{(jfRAAdLyr&I735|J6VH5#D~qm1t;ejJh(I&If`481|c+o3Z=xCvffY>s0qS zOEKwOli_KN0aZnt}Jd|9;FGOOoY-N!4o%=1P7^j?|8FVwrbk}KBp&PCb! zd9~!CF3OI^XE5otBw;jxwrSZOoX{|cDRtTfGIao^>l+<}MNlRbZfMgfAKZ25AU=QF zZ*le2*P^1L!m$8)ZLa>|)}Uqoeylvyg9S|!9RWxSo64{&jjja1)CfmmP*on;*@>s< z9ALOEHUN6X=A!I~dIj+4qqV}Z3L+G9nRjWlj*o3iptTDl;XM+{rR%r_NZVlW0u^o! zxl~HY^_flX8tM6x@-F+^r1Z(MfP^mr8{&b-;8IOocEq6Eq-HZp4>U=YEfTRrP{ox&3<*Qx?#qoLOjw{jkY{L38saWhDVKx z(b75%vuXSoa?eWR$IQ}o@8ohM!eQpCV*GS&#$=JQ0m|ps@e^gf;KJ@rl2B5((vYi7 z=9x7uYO^^}CBy0dpEarhRylGx+Un}?DtAAORY(gx(%96U;Zwi*Ip(ifgOk>-OF-+P*Yo@Hp%hjc>wmk{4#!b`|UXPxHUL={W>gJxCoOcPew&m6)LML^|eYP zBhlRh`u>5=&MvgKAHu$U`>|`+PHfroEH-S|fc^XTVQ^p&a~dY#sHxMGa6B?N1%r9& z9V%%pm0SpyK6iya^U+$TMi{&57aE_kGvk@sEi>og!zcuxkTja_<+dSBQj68znyu_P zpj>1zI@qTbxL_u?JI7bHVL^SB5&&|8RQKnKO5FjDodwvH+ZenrLd2nL?e4_c)YPN}iMc%8-Q9R{!xK35wA1nEBM&2&D^o(SY}xX77-KP}O`VEWD_1Bt%6t}N zNoHkKuOO-i=ceX z$XB2({qOAuTk+-FZozv$_@Q`G9`YO-8p03%f3a+qPouy7kz&aU<&LYO#3n zl7tYfU$+*MCQj5h$e2p*h}rq7dU|@$-`|h&@^bYYS(tvhM5Bu=LkC)0TX5jO0c_a3 z3(sxu4jlJ~a8`)1OQCh>Ss%ZJ1jYvs_XN@fE3l}L+n=<`aTib&vln)e@MCyHjzV(GyglV#97~~1DFM_gp?{0j5 z^9H=_?SJIBHROuy-?tAdR<6SJ|Mnx~^CNiEn=eO0LxW;iV%DlEYF_33oOkZoXsEA8 zfB%5e>iox8h0e}SeBuB6AN2M0se*oj^yHJ*~HJ$ zTtdx@St4dEL~9eNQ0QT_c6*;h-$i+2>O1Z(b6T@;Olpi;aKr_bl<36e>4GZlKJ&E_Q;w@HrxxMRiS;~8pf6Xt%Ogu`k9AB?Vc z_W80>D1l?jTCkwL0+VV@Q!LsCP+b7a2`bPQMY=yE=)ZaTNo>vzUd%hofFqZtovKBPm;I!d27{kO_W;!(O7#r!P;DV#+) z1U^?+!f4->F!Jh+NQFcX`(ey1UH>js5aVY2Yle1>y?w?GWs$}&QecM4(eWIOeEC*< z^mzPlH_~F@a_b6sNsfiuEZ-nkj%{NQ6OL@{oH-Lskxwr}qXa$q@QW8M#L}aepud06V`l9~ zWL3WY7k`0m+qQxB09*hloH}Ld6uj%5?^Hs#fBykIxN$F<4-Pt|P=||0t$YIM%n_(z zTDvhJvoe0XW%$uPsh^VkX!zNumL-gtW$XVqb|$Qhnm#oAarryf)V@U%Sp3dl^L)7B zm7d=XZCN*ilZT$6kQy~Pl5qLX5cE@aecZ*$nV{|GU zD3H-(OLdXKzdn2)+NVrZn_K!J_vNXlp2VtE$KW@=`4vt-?F>wtKHbaM)zwwF_`(a+ z2DZ1i&vAX^xq%sg#{cNYK8D@9cgL23qCoT?{akzPH40xlcJ0UAPqs$59t|GNiE$E- zt_UPu9uo$2&utBTj2*HnS@XmA!KehlQXmPiOP#duHK49^`plWnElE{w;!7V4ezWNx zRlcwPo}TN$>gqmBQk&sgG*+43pizA=wMXHXT(iML8KT!e`T(|9!4CCZr$j#;%5vuDjheSIAU2ZvM$GuDWnlVkJUzx?orxap>woCpyyKkW_3 z1zNUrnR0)g*xZa)n)`!pr`4-zzO^5Z_FazsB7F3OA`9_EDYTYjn0F1Y0-0s&-yK0` zHa_NRqm<2y14G(H*+x4X{Tl(~;I057ov#lQ#vtx8D8~p+tk{of^|f(*usRe|^#ODy zKoOy2i^R|Y8R@W_pLq(u+4elHzUEqOf%19m+O-RF=FCY@*FU;;1&6mwBJkv2P723lmXmz^vvfTP+xckEh^%bP+Q@2aBb z)IVlX%)L<`@q5JhWtHY#pXT5eB-V=_E8&|r6376I6El4{p{858K@(I+RNo3|QX{BM zA|=R~IsrXe5*{NI8+Y%-7k~R}eEM^rLzxOmx<5QEV&;q)SiSmK%$qk?jZd3Z`XL4; z*G9WN`lOfqc(M#KkBFY#x@{Xi|M|}=p)u|cjeXf=m#Nd?M>aKMcMENjCERJamh>}< z&FD@atr`AHqP3K+LYAZeKN?}AO9JD(Gv@3sJNZ3Pg=!Kdej~&sw18wf14L#=F`tlf z=edyERIC~0j9*|!mSjn+DsRJrnw-5MCb}fU)Crp_QQeF2jF0Lv)!vRn_}G8^6z{zH z>bMR-x;zxCKWfPmoO$NyaVV4`MWn6yi7)?M3ji@V;Utftp z3&ic4t3B;>g@6o6FVp;qLYa^Y#3frIAu07^1tTTMomkPv8s+MfVQQ93=@II5ST)RY zZ;DB1cjQ53kRSWSPcd`J5?pxE#qnX7VdgorXRG|488fD<&93<&pTDh*LX|>BO@djBPyD7>FY1S z6VG?yV5dDtaO%3f1u_9OetWE5Od$lM36M`X?DM06ab~s)E35l;t8{fou+9&vimpm3SNj2dVTN^wZ19b{ zMK?VD5N_G}9Ik!u`%qa~rG((vV^(4Qym^>Ef1b(^2ea9@JdtN%G4B$Gkh zv=AQ8_tRQ)mY>#AJbnB)CNM_w6$tjnY?LdK z*gP`@rhpg&7!}OXhTK@GJW!5dtSE28?3$eJ8CqSf(uZp*^$9WM329591;BTK#-_cy zF}UhzeDGr*jf>yqX82%hEAG1OcHHrY+pzV87lZm(<6PLvC@GH8uF1_gC#x*ce(zGPjA-+EM6?*6JC~~XsFSy5EYlG%QIq2KzjmRJWoxoj7@uSe=~lwZzq28 zvl~{ zPUJJ?XqvqqxeDt1rjc$c^Q7&Ko0=&yi=IphT@*!O2b;dWO}+&%T5Hlq9~e}bL^np; zqF|JJmLNZ-(>k;K6p8{#AKd4E`TTUB=g*&uR~exup~C_+FJ}H?p5X@7^=XaX@P`BK z8fr3wSXJJR88zjqa~xR$3XR5=AgAjFv?b7Y3EcbQ^VpUd#@GMuZ!vAg3}=nBVg2zB ze}ublza6bDtwEm8mX{-w%OR5^#?w|tYuF4%hK4ZQ-;d$Jp?IS^I5eojrS(k{P}|su zC!X4bx@oIXUS(RIn5lg9kxUZ8tx%9&zA^I@Lu(&TahjRmt!r%&HWn}fkpS3QktxtBd3KyLa!wx4-c>cy`k>Y9s9XDXXmkY5hV! z{DfB@k_}>@zaM=aT}sG?vehV?xEv!HbMuQ&3GrD%>rZ>8SnVtE$dy>gLZpqIhMiK@ zVV}(`KjjL>p~W$SbJQJgAkxgE)cPDTX@IA=T~fg~LR&0>gcXa&G$?Tes4SDmimF~L zYbe9yI$b_VKaae!4G%Z(#MK}804~1d5_D7LRY!*^dU@{I=kUnA_oL%b_yCF+zpT2N zVydb9PYh3I1eKLk7O78!N$U?%zn`ui^p8{_Q@;?%`UEND0;Va1QQ|Qk(vL@HMu(2Y zxMz}gjI#6zY+<*TSpa>^uJg(!Mw+3QLQ@Ao` z$}~)DG`FyL>}W2B^19mCw^t!mb|}W**tTsec2X|U?Ae$*cdmAM1_reNU@C^oC&nGR z)A4B9-y~^$_!nhsCMtwS6-Q+C4?0hWiuyT6}^144m1NY#aU*v9L=9u z@j7yW?2ns&?P_2tPg3Vw11B|y9>-=)+9_QJiJ2yLc$TyuydL1l!#Jm60B23gM>(tzlIK<=^{>!;5qbI!QZOW$^03 zxTvxZYa8<_Ym_#`s)m@tqGe^++183bz4yh{ z8OR;OrFGJY^Qld)a7{uXSBge#L;R?jTCY#KS@s=%JZr>Hdd`srNb~iqUJvK`OOmE9 zI>`V&i{aZ-aDj6*zdxPAw=S+5{K)fbY&+J{if$a+m{HYZ)M&~G0Obn({E0_!-?kUg z-ruL<^8JH@sI98T{F$>*RpGDujpxf|)m|W5?q-hC#+Nkxp+oH$80be$O*Lw2YNHMC z0D9WnF<3bR+4^~bdJKNSNFlt*?|m9HWYa=)fEaTH=&{<#d3jx~(Dy@~MFoqc+5~=E@>_G-=!&O207m#VY#K-HqPvZVXpUMs@M2d6$|Psb>&!%wg7amKt)-(iezruvkTw3=MGf^P+8%>iCxwO#LS+_ zsHjlZQ$V9wCMu8_8r1Rs{+=F{N>SN34Ski1SYAyLc+|)nCp@NIlpPUN@sWty#I%+d zWsd=^-7Tv=VOIj+xF1}axF2qq)c{sVnKw+{_xx;{OiN_W5MjXg?;{jqRmxTqpT|0FGNjp z^OXKTsSoro<@pZ{tB%jKL9UrxG!MHnITf z)K}dq$s#0CLtV-M9U2}|bpX{3_4vb`_hRm<*Q+>sWERaMPIplG6^?poctrU9)2k_-veg%}3Vfy5$=VvSV zYP@iu88>ZwQngK?qM3;`b(lMGlDdlMnS(8;udPGhzyO+C4`AMmnJSU(VEZBT_V=Nw zz7h4cwMEN<5`cUj4HFs_^Ou#EBAb=P_m+N|Q48UbuGF(n8o-L7 zwSG%;inIk1kM4qtfziS(w`|40Xaw2vqJAs0^3-em7iF9N?$KsYA;7_%aA)F8Y4o}C zx5vMW#}ek5ZEks7*#6E@7iATWIgF95NWeIP?zWvct7%wuliqo#1uJLH!Rk5lR2Y=5 zR@K#E`fh+v{`yALG)_<%n$Nzx6|<*K$AtO@Y~8sXmDwx?hKI3$-VO8x^+^R`tFECQ zSG@1Ns?$V!dpqb(G3xeq_Y?ck-W@f~9W@@~%7J7=DNaohf+T700M5hRmQ^+P*$p_S zuisPTv`&MOZ>kx?24KvrJnb4GvLdpR5NCE@QCvaAi&r?_*oN6Qq0|rX$PJf)I5Je^ zMcEvuu`P}URDVZENW0A2Y?$Nj!RCG5szndgx@#k5p$)GbY(>xD0A@{S!q+c-D<;?1 zX#t4-cl-03al^(ZP+eJtoy~jIyOSCxprf-BSFU>CKgx2ebx-7QWc1jLzDG7779x&F^%<&SUS3 z_oC;}&bUa0LZRPy)7vqlVS>I;0~wVU^o5&$fgK&~sLkcn4Kz>h-ihVYXX3NxU4pub zO8mv|Z$?{w1WomHL7l$GtGl;Xg<0!r{4UYFg$wYJPk&OSKTu(f5rDQf-SGCQXZPX7 zJtEy&G(GmY9N-+|ELVlrdo50@* zF>9f5xp_%ODw2c=ZCBEWA#+yZe;;<%ku+x{^fmmYAbb=llYLdI$S)a(aJ{)E-VQ% z6OqElPlfm{q`iDX_4)mA01i;G4DHhxeBu1AsnTHdYc?N@TuY=d zOFoaSkKLd>xTs8V(Uht9`lXkvQc2%s8U{~h`~RO$J%%4Y_7E1#nxmM%r>_@#4(!A6 zbLQiNr=5*kH*drZk3Wq0GiPJ+geJAgJ@t&!aoO80R}HXCsx`Gwp$ji4LGIu|Edaar z?8kkZs55jS1~qu(S~5gyshPR5^ZB1C8aLI;kPKQ3j1m@~vXiuR*OOU!+O}4N5iI&nB(gY!?=9*Ujo*co)oN1<5TA0Iwad@Z?FKzgD+Y~F4!TJS@@tN~4(RYf` zZH;l{$fkeuMj|&p@d$qQ_(N&~OqiJX-mCWpj;0EkIUE)xE(o?V+HS&=2ToN{2DNS;w27o(|(c z?;&j8bh9G>7p*)N?>qG@eUE@Dig&e=uXA+&(2%;Lm%7YNuB$^?mQEKmUg&+=58Sxn z5$vog$94a39s2ru(bd%x<4zaC3@8C03qW1uNC4>Cqr0B$K>r}ee#jjt29K6m5||F; z-=Mw-1{htF)l&wu`N)qsnxKIQemWC3U&Ko-E<`$ZSuQRnB*UaG9p_?5JCX>I7KqcK`^ zHGw&whG^}_BfEq;iuOrb$Cp&U7GPX;`g@tW@ac3zKK)%B^ijX@qirt5<{fw6V08}t zrVm`qs4im^hQn{@LNIcZYgZ7iZ!lWig|X}44(xsL9^KARS+oq^apHRQUwny1+&#~= z1QsLiHLDsjeVaO6hP|bEHx6`nqMxEd6DQ!$zxGviHEK^!ui7k|lVGv{R3A(NKxYBe z5}gF#flUX|*6F*LL}IKM97~r|;?de-zpXIuYfEoRYo!wK)6zG#t4h-I47j>3n}I1dfgRk}^05CG`{Nn#HS0TeIm&<|m6M>~GE?Kwnyym zX*2e>9>m$_orjmUy#Tr+jD&!Cf0~ZZBmiUq^wp>OFpLD?k!M=b+-3yewT8z~VUD4_ z#CsYO7cbD3zobIWNC61TVlpwwCyi$m;K24r zaj5w@B>4h8kDfuNNj$XUB{WZ{!&UG9 z0J7E9v1{|w>wm1SRLYg*Fm2jYOq(%HMR|Vsz3<^|Z+)A(Lx48Hef@pt?&^-t0>}dB zQ0P<79l+N3FihfD;#M-D5ny9MN}+Wc0~X_M`K+=}DHh9*+_IbBlQ3pho&J8Eq!>B0lqcsOtEyc%=9$Lpb**>3Hb;kQW7i9}==HZvcLUiZ=3Np~=lq|-VUhD4KG2Z=6>Qd`ShCq6Y7AjKALBW5cAufj#yd`sk-AS-~H zmAUz`<}CT0Mz%er=4w7IB9&|mV+g}xJoC6FtX{oLG5@5=lhM%F7z+SB|N8UK#~0U~ zp-zSQrk;d=V*B5D_+I?k|NT4Us%sSU6Jt|{hl!IW>fECL&h-4|U;PcvI{R$hQJOC0 z%VyOrFjdu6=-U|Dxi>|8_khdDY!Y| zu9noxwHIGl6q`}4R_DrxL!i;kp^&yx!^olZ!zioav?F%XQ5hU}+;Ld6WRY@xC?m7B zrUsQ&RjLQj%P(%l&;RTzxOC-e)&vY_?e4S|pThBL)?oJR*(w#9!k}~*M(GfD zKSct-L)KQk6h~{$xP}oqgGk%%XT!~f39j|Q<)dftNq+A&-(Y(IGe55Ue z`7svb```U19Dn?YXqwoB*>h*3ueTTfb?dFT>-O7m!TIN_&?sGu@%u+w&^I8NYwYmo zDy1~nGG0M(S~N9_)yJb@0VozmW&t9{qSVWiZH63^BUzPWba(WK19uu>^i7QRT>da& zba>s4o2*@x8O0e)MLWt4K8N*hd;^xPK1NxA#>PfeM;5@OM-b!QbmNU^z5O0^4Gm)U zMd#s!wd*71&tUT8iKwDZ&?Wwm5Pa(6pTHGYT%`rFp&qrhH5ks1;H7Qb@K4uWhjnY$ zstC~?kM2cV7svS+;nB;3AzDYsE}GVabKVTu@QUv;Z-KmmI+3?%afLE-%$e2&l7`Lh zm?gEi8zXl4PUROrI1!pw@v;d(c`C$|y7Y00_%Pnpk1ve#(1LlnPTbqP8-MzhFRR<$ zXU?95>gsA0k>R&JQm3}hT=QNWfA(28>s+z~`i2+M+~o5+KT$!dPvdI?Ve$K=FZ>^M zf%d!KeWhxRLhq34RZ&@v-Me<-reFUCEeH1D<$XZSq{ZCv_h=r8+;n#&wZ%$a}Uxgdj+D9y}-z6-fc{6e~r3Y0)b zNDTIw;n?#bs8krExUvYXEyG?csm)^R!2?)v$;B#EIe)=?6{{x!Fek%W@8;2Rpapfc zb!cg6Ro~Uu*C`)9)DTO4ZkV6nEk=1i-~G;Y%HMBnY{G=b379!+CZiurFC*HNo%*5Dy+Z^Wi?Db0hX{yo+)fimjc+^+MS+qvh3#NBRSg6w-%g)G~VhJ;5I#qamqw#|=ixI5N>`=|HCe_vB(Veg0 zjH|A|%2lf{YxXR4YHI{QGPBRl@n?#8o{vG#4-XEarFpkviK^NLl>@Y4!xPx}V(EpxS}>Ml2q)!sMcv@^r58Whx&?pv zx8FunQxm4on5MM6^y6dA9r>Py*|}d|s!P3SSIun(wcK;x8ISaa6J=o=VR zu93QB{<#sS!g#dI;iEMl&pm?TY$>Uz^|BdH3x{=9OM%gbZj%9V19=!m zpB>2@tM&lwC$=Ku66#_uPbSUGH>D=WVDp-qLb3pMgDf_Y<8@JXOzkneC|j*f>?hQ6#5K}WoRdv$mr}PI3 zQ??&!M^AST{^9TcFIo>C#6N!j`=~O_aHGhNvelPmEJJdYnT2$3G zVWhkYmwxoG&_6VyF6P_0b2o0iZznps2ct``t?oOLmrzGQMovXU8z&kQ!R1`Ao_3jc zL?|Dv4TC2xZubR7EWtC!o<%MY_oe7}`L|>)=_hjIA~zmso0p^`6`i|!4%`aCX#7jL zU=EKD?n0ZqJSLzQCswp#ayNs<%}6 zVsF37>LdZ^+>z%jbk~h8ypZ?ruF`>!5NYA)QMwniB{2n}c`>*i)9vTYZk#CSCUPpn)gm#y7rN4c&_9(4b zeIG82hRKCebfhwaNB}~B_&yIYxS24G0e!002dEF|@qp1M5J?y(qYEcgwW|VlYJ^4C zqt;ecp{lG5x4if)PI~7%Fn|6+WV0Deo;q1Is5MuZ4h;?|eKJCff3OYDJpMTD`Ry$@ zX38}D_^}7^nXh~e=Ui~EN~%lS8w~dM;lBU;0q*<7KVxv9PlsKzIV@dw9!`D7hcP&u zR|#=s0ru?KgWuo39nCHMfs^}U@%z7t)_#G=9DCM>Ue$}TZLEM>5&pZ+f}{xpXW)=_ z_dO#S-x7Zo4qn8pNl{GvwuQG-2`+-8KDRE@5i3qdvN;$+puFFb&2z7<6_o7+GnJ2 z`TibHS{I{aElk1%Dn>K-p7AkSyqgx`HW@Dn%^6zAk%w_1TCk#aP=!F7)P)#U0LpT@ z4!EVa2YWj^u)SqJI{JE5z?XcKk>MdsuB}%c;ucPxg7T~ujNd=^44$jZ;S-%$& zloFUdyLYSHo}-s8#oBf2RMnZW3PS^Z`0-ahfbE+fRjJgu@(Qe2e?DISp|7GRDvm$Y z)~4!$@4Nd>Y}Sg|%{aOim{@17M5EQdZAX<`Al!GS8eacP}deKxs3_Q$;_ zn@hZnvzihW_dU+$T>D$ecJsvb+wP8m_f+7Cv#$IcX&6`McVT{gxv~J}PB6L`xH4C! z^7M6+6bYkr?(E-fz1{fWuYQhieCyj-b<8oCHD{I*fIoWc+d!9XOq()Q6~VmmvNz(C z*S#)wjh=n@4!pAIQDk#vn7(i+7Ogo25H~;qAShQpbCNwpw)aH+V=)>6G+Nu)Wni?DNqwB8^?h9xf za)nfZd?WxAUNtQepWnIz|MfsKD@-v8N8{eIMCr74Y2ng3sS2d4tTF|+z?a)G!h@wqI9b(6A{P<^q)aWj;bm*Te;+$L%GUL6?8xj8la3Z_IM zP`VV4?gUde!;=NbYMrJPfYn*yzccv3gZE(8si)wAi!R2}GnMsr9t=vRvg_d50w(qKsASEKzo3@(gJ0DR1C24@#V==!K= z!SWprj4SE-1*r{ug5?*f5xW)@x!Ct3NW7Xk~&Qx`rbVpegpyn;A0pcLq|;gKlY;R z26TZ_i38WjR13qUzRydS7^d8~L_|9>Dqg6m&?9)J9S4`TYv z>B|2v^@j@p34!SpO%{Oa1@`UTiRR`5xcTm#Xz!wsX}TLy()?0Jf-lPleS+sxpi)tm z1Rc|}#jH7l%<6MKY?W24Ajj+SWU=dwqcCjI3I+zePa!Bp5P*?;O2+EQ{G<{t^PZM( z!|KXTOpXPh8a0)bsEY0cGwl$4WRg~Zo_VpY70)-+;QUK2!GgsL)d_G~I<#+GO0gy_ zPo02}yX!y^x>t?N2mT!kzP}n?f*}I$NJ6DdYkrU4VHb z`?0)w0F&tqKpcXpE0IJ;XwLMOrX~Y6gC9Kl0M=jr7A#%03QLwQQ59t&H^;a`TnI>5 zNXx(f>Z|d?AOBbt<*P=yjsWPXIiqrB3%NiXi5&Pe-_!RF7y0m9$@<;WVDu;P`qYp9 zZ0X1@EUp12)$0%_U5iQC-}ST{t*)zm34BNJKD}L~!-=Jpdu|6Z> z4Gr1{3+>;yQx#HDg~kXeO352szzWgYg~k5mgHg|;1i<&25e8pFBP%F+kv_fZE>HjE zein)hNWB>W8cdI~ab^7^hbf5yzE&TMvijkek?ojQSFV!aCe-RvU^)b&GzfDkUVy{m zkImlTrPc%Z-sUIqwZHspRYXG@V1*Y?2MFJoRP55wP>+wi{$k7>>BC@OKYCUjkC*rE z!(V;to5~tcrC7^>1GwkzyYb@7`?0IN$y2!Gj$S;ilQH}xT`g9VrwqL5jqCpxx+vR) zk#n6qN6=5Y9a(Lt)y^7?xaORXMxSwpl)ebxCRi4-TRZxUR~XrVptUI`ZmXZ=4v>y2 z@k%f&>2@ihn6E{+T|sFu@>sH-Ps2l%V5{>xF{iFV)dA>3uxcFwjjlxEhhU*iuwl1H zcD#g^`E%9jFO^cxoUN}&^=W)rHAeCN?_PHu9=q!<%-y#G)w!H{Z&&XCHkVi96QBJo z)~;W#PJ`(%?8cw{43nnL#RE@wsVkF`cnn*5M>R#LOry0gCeIH&M^9@%jPBlw+bv^r zll&Njam_g&3lzmiE01|eG**r0<X;R7BO>8)+ONp>^ule!CTB3FzQzE?*k~kS zEXN?$U?*nP(;=8HgsFE9!R#q;F%h8Kwmy$VZ+JcC%$tiPM=wzY_2ws8CdqXx)MXfd z@zt+k(c(qe_@nP*;y@oLzO!%kA}l@m6ik~o9jBjlrrHRT1^CI2e~kHymf_AvTQM-C zGLuq%Jb3ig;JUdB)+UF@W9)trw3aymNnjnsXxyz&E$SRwMFE z!>EVX&_&rYvSu8#QCyT=i2)p+-Gv!-HOd8|L$G>^09DYf@HurUp3ymyU_OEPj~BM! ztgEiT#7UE|eC4t@V^o$(`uu+Sj1Ii01H~P`y9Gb_!sqDLY<%RK-^PknD=|1Qpw0qF z04NveSHJuvX3t%O+aB7FzQO4B_*mL(u}@sV$3yH~@y2o(eHinJ@bS|w$_`zMu8NgR zx{w^NI2hetw?)DjPnAI?767Tyy@yt5emmDOrEZw5?`|0>Z9J*1lb&cY|HIX&#b})B zd_PXg?Z(u)T9pXbSglWitIErj3q)rC=0^&GFDdTdwmpZpfACLK=jX*oElz|#jXM;N z={W>5-+kcP_hR!i&)_qk{~XT0@Ith9u%KHmNTy06qh07GeA;i5z~UY{FjL_ew)7J?FEV@-y?d z+>=OERw|4}K+|EY%lBg~odTOWfNDAfqf_8=bqY)&P>mJtviY5jzM(<U3Gnn8(}T6cg<7S^{Q~6!nQK!!4z=O_`|ejEQR-QG%RM`B zu!9|jd1)QOqr|5VkCI_S*0~Tr@NrUT?RC#X&xeG`@>nDQp~>BW?H-7KUMwRgrJRAm zgw2kf9N8y8K5Zhc)hJ-h1Jm;dvAU{5Wr0qtsYOF|jjjWrGziMc_uL64^MOp@@Ne$D z6KB2s?KpPzu~@KZL3{$NAQeUQoEn9Mfu1D+pmYdzYh*_U{_(o&aMIef>H@vn9^8RF z`}-4V=Wc?Uw6KYdl(q^5yTgU>EYA(Nbnby5g3YtH>R`&9qxCdg{! zXd?0JH%$_&eLdd1#hr$@1~G)T;Zk`~Hr3MFIk+ZqSR#Tkd1zNGjEbo|wFs6OHH`B| znz5p~UsrqF!5*!JhEnW z;zDba#c$~!3#}6uVFBfsUm`a#;!#^9<6}x!E~q4#vMcRZD}wn3t)Xve<74>D7r&$~yjZbnxhi+$_>5Hrvj&d# zXG+Cd3@vVC0o2Wry}fwqsi*MZ0}o)`x^+qb9^beVPrlF@&1LCgXk=O`*~pV-I#<~I zwD#iB6l9t6l!za+5{;B)-t9x=@>dBkj#%$qD^K5^E)pUkTSgEw$DPM5K-h#CBjz?g zCrG-FVM6*Ql$G$O0H^<0=&+gc=)ZNpk!bDyIozF zL3;ucfM=fDiTj^AG_f~r7vsn1P~8ds4pBy3SJaQLXr`7Oy?vD0M~n&Sl8 zcT)r)4KS^F{E-EpAozf_i?Tw+eYucd=SOgwK!jZjIiE}1^&`)#Zg3N8>y-dd9RTeC zR0uS>EL&s36<@gz*sy08dR82bb?Z;Yq{)*ocfQWz^f9@FmAgox9HHjDd$8fRZ$Vl8 z8a%OWCf@kQH|iT>_U*&Amv-U59%>CHk|dQx8ngMnGf^VWgdri}Ra`#Y%kjsW)=3yM z$DQ{HW0#`YLrf_BGp-GMn!yN(d@d%vn2&!RYSbH&^w1oI<_^PHh9RuaZ^e|l228B0 z#RNJ7hzemy0H_C$X%8Ga3^Oab?Uk)q_13qji}k3b`h*4o_&OQceJ!N@9~O3ZX=5My%0a8 z!x#yGPtrmzjZgCzvIeDSm14${7DZZ%!-uhEq!%YX+NM;oK|Uqf(!juUf8JDEizRgQZYw#hBEQ1Fu#|ZP?Wf@g*;vAnDmlj|BVp{7PzfSQU*RF#nc zxyAX482PL_Iv@X%`$OwLZ!wp!nWC^BDo2H6p zC@GEv;JzpJVediXX7G)_#AAgPhaLa`4rAs`%xfMJ1QwqAlxU1D%JX)3Rp7fZ{?H$Uc(psk^o4ttP zCG)SL_2I#2?kP68N`+vI1c2*YDbvXsDlQ0|Qc^?twlHZPC-ozb%u zbIN+7GDz+IsAgDn2$t2CVMyyQxpr`P82|9#J$U04@4>9ub3k_k&zLo%Aanape+!)m zQz6WkzVHQnT^)FN zf0gs58+uN2OOh)s9*+iMt17rh;HNeBGF$;oLgLmdrYU1rh?$^i0pMsg!|)xoTkYin z!kLI?h|*JO#nGIca%mPo`^|X6$Xv7h2$~K)iAmXh#r!J#S)uEI$^YkP0G!0qy6rmD zhC6rfz`L)yN=0d?X#Jjh?!ua5k5&CW>6Vy>A9@JKpL8NFy7=Pwf{i5GxcQmt`>12I z!OsKt-;XaqTm zQ!p|-qSBy$^Q&K?;+1VGoqA|^7&`{@Sh!{lPCNB9b&YD;Pg3*Rr|-V&E!>Nq?t$0g5ry^Bk5KDNVkgJ7tHT%iXSuYhUR8$G8!0-E{x}vFy@gN z>{Icoth!`fSAJ!(IwLa97g7umhOuvO5Sj9FR8~|VpUErNsi&t0`GJ9W|1grtpr*bN zxg6Ja?5;I0j11mr{oP$XDim5>Q-y4n>V-$t;TH+sNPYyvsPLpPNO3EX)~R?*!sy)5 z6{NM)Qqr;UsR%9*d<|@@xFXQCubJa7APW#OPe#Oj?n=nV_o@YJ8iEYV)l0~+2Pls-NuxRmOo=JKU*+oyc{2gzKrD}`LQd7h8;+Jn(e3FbJL z!pAL+Z*8uo)K3(HNAsMu`jXb^Fcz9e!r*fZ)0{=Fyp#Z#J%A-CfG@TRetgl*fZ( zhQ}bFg<$jrN8KaLbQmS>I9`$#-B0e(!N@(H%n28KCU8-<(f-^9Bri|4wDeu9?2=nA zi-)dc(A5oxT9(pQ#O+OEmLWr^9vEXHA0CVvBW6C@7nuG=mUu4AE{v9C#uG-Xl#=P@ zQfX<5XjU{m0j*1?*TR*YeP5p0_*H?Q)?9Ix2BQqq`|ucskt;Yur_2el1&FvL7Cuw7 z5PeYa66(m@Qq>q6BUX6o!x4X!OJOg1i4{$#hl{%4nZd|Zg>+(c^;T4|Q3{N)2R249 z8i7>BFNUZF|D(j?s9=nudvSq^ht@|J#tbF*ajT@tPKj?!n#S0|7+C<7o14rTSCE+U zF7drdSTl?iiEw<%oTtfP=pmnp;MK{vV9#;yzY*WL7*OyOJiw&{_sQilwXXIUnC>-i!pm z0Ph1-B8dOZG<3YCXpC4xj0V9Wom}kaMZy@vT&&gdjVr1B|6nX^yIwnZ%$#uHXBpS? ztxQNubEfx2K0;cbKTFTZd&7Ka^D)y{z$mqqfo&{cl$vX_cpNQ^#VDNr%`p0uIp;~2 z){y{6rcTppX$Y2*E#025DT>b*_;pJT7{$QoxgR#6B&R8giRP10(AUcfy6AD{xV^ZfBwQn$qPlmrxtv zSml;;{gM7&2Xq9$aW4}s96ab_FN?GD`Y-b?5k?bd7#A4XI-N_X#{x!;htcBEy?igC zg@7?m?I?!UUOXNF7*)_D#E(2Tjq#f2IxhMsbK*tZ1#-=Y)?q?wSs98n?$*$7NtPzb z6##b*b4ca>n{^uN49q<=JCB=6tw&)nDq}NtFmgmoR+fgnXc!L*k2H(L0l#pf+!Kehlcc|?zAm9t|`CjJx0{&(K4{|K-YH^(- z{c1T++V^1%?O%V|^W0(-TI*@9>!F7ix|V*#j+MBQmcfB;bU0e zv(hpYut*$6=2z-pIcy?O-Gr2$P!Jzefm0?slMMmf& z!X#v}SQuFWjO5Lt@F=VDSc(MC;qu9(Q{5K_1oeWPF2@o^9`O_Fm-Q=ZiRs;`qxQH3i+Ep(_MsXlqhIOGsy-{slAOLrdgZ- zEU5(*a{Xq0pHxdLSqhAN+z=ia-klwKAs9I=BOZ@4u*L{RHB13(?7eG1@R_&g#@NFc z5P*;y;&THmvF)69b8BOBuI?~@Vb-fs45l=#cJca=kegM^CY!G{Sv=|+e>5=q>Em_i16j1mA{kdZA3h!r2S%fSi>0;n zPm(&{hZ{eAGACX9g>kzm+ott+{JWAaPY$_M(dY5kNB%PJIEN|NSil3LxA_=+dt^-1NWFm9YC4Z^~Di%LR2;agS#mE+? zEU=6suqvLoT}q^N)!6I|E|w9oE%|U-9{qc+|>K04=>Z^|eqS{1xsvm}fa3$;Mtr zXk*Yb$eeTuS%6~Pn#63;O9mqbdNEu`>6j8p^{;`NbFsum8jSRwyttW5Z#s-&1xDY< z`*D3R`qnHt^6+5vqcOr!T!zZKwHf@S(Pcbfbg>ybu4ynTl!mA0uR@e}SK zpEIP`q-sB0JQfEd69B2v#x6z^ONFWDv#rh3yn!@47NW6ofoKoF7byBisxkC}-TZt` zH1>?sNP{CPsd;z@9}OyZFWgX@{@%xEa@=B`kqGx8(agvjgBX{{5=76&*D14PeVdaI z(JUS<=|aNBpBPIRB@908Ed`)h82P$+!(|_>19*(5O5-h`0`|k0Iq8x=V7`T=9~Zb&%&6pZy;e+tI?uYN{*X<5J@S004X?MLF$%y7zyAjrH%;UUho@PvN*J z8hQc%1cUz*jC3vn8UTPzKuJzU$1m?FALpC3uKO@*EEhjHrntBbpE7OtKWHU123P5I zY|h|iLTBX^Wdf@fj#P=3_7cG^QDe`}aF+weL$v{g{RJQ9X z53c#}){cr!vwDHGlY$c=J5%&gXCA^eaDTSyy{=umwY3gqHh?Pq9lP|qvJ{+TEqiOA zwGQ?FsXT2g zdr1AP#GFJ42#94KHZ&vACM&XL|Zbo4)Cz1Dom5?;pNtkLJIv%S7DtwY7=N7+Zmnpg=KPL@^7w%1{@PKQp+nYHPfIbA!0lVffuwQZ(LOO z>77(Hak=`F+@8uZGRw`7HhS@det~(Ga>Byt6(4T$=b_kMxx&@gXs#jXPfqW&i{skxC~HM}z;zclaS5R1nP z5m&{TyqOw#s&Lm8=z{-#=sM6w)Wt@0p)fuLoF6Rz!aJ^X^;2Sd?&7t%_l#t^JUif( zZsf#HXsOU-F|(8Sf*>q$(jz(p7H-&_dTjDpV%9$nRIc{nNo z7V0Q_s$4BWoDGOl41v5Atw`OR^cpv_Z!h9&o zSm(m&IW!X4tbu8wLX>(a%8BUiv0rCe@O*}{ji9$qAvDjMhyWh<;?BX{85;yWBj;CO z(31}bPO>iJj~Hp}=q1rQ_5HVQg}KVSlo^|12N*7?tIxO@NqfzKwq1QD{Kl#(Pn0d` zSis3=zoF8y?7b~+;2&QiCw8zX!cn)9jPzLd9ZmNQ&%bjfTfesQycKf-;;Cdkm!Ss< zF_HEX8TD%so6}B;W7moEW3)tSL_pYpasnUpLV^4k%)j=dWWL-zhRFOm*}*Dwt^Bqr z#*cwlUYJ{$*qW?zwlvxK5Wuv@^!A^T9u!`PpQ;m{#WO-RmQnT-4Vq&Q83WXF-d~{v zi@V%J5jk1O+s`}8(czsH5?E)Q9G;ljr{ZgpAWzE@pw_R@_H|amHCsupmP?Zd4Kx51Ck*^VmN1tVCE*VGoJr zGx4BoPrWqI97{-*1ih_d$PJ?TKGr~mMxYxXyx@2fo1rokaCW1hiF_K>(D zkg#=q2>56)*%t8tCk~qUMG>w; z%McW8O#Kyx7WDC}WmzGd2{9$wJ>-{&3=-pf6Wpk*T!@_NM4( z9I1Brl}gWK&IZrkPQO`1Ovb#C0q?pcGxtGneVRweQv9hW{fpOi=PHnm1&_}eyk)9H zrgq~rsS7QKDa@8pvHUl6#K?U{u}_32`IyV(=R{VGvyyV}DnzA9l^I|ob1>-u;JsjrHs z9~o&UK01+zm7V-ckbphIWYDH@?Sh#0GtDUPL=pCI!2GQ%hnG%@6dB^oe1U#^`?jO? zXVD6Uz-P*DZmwKKJl2g4VR-g5Otbwwc53z_nENK8li)br^7)+?<_`%t??48FP2~?b-|GB5&4_GSoGBZ-2M0kDrIQHgy zM4RD9A&dY%Z|VOYlOM8R*IugY zD$OP->fgT%E`Rv(YTsVBLo51Lo)zEzHx-LXLHCHSun(mfaFELASw^lznLD!`S<&3p zzN~CDX>))kCMtt(YY%u-J{^@aOzbt@V5_W_2%W=?u}@Y_yWv5#UH_q?}K$KX2OB-w{ErPt$0sJ>3!kUB_E-;t%Q z&w1Dj`>rU_C@#$Y9z^c>QNiKIfwgBBl*7cCFZSyPVxxX{8n4JgQK)NGtoT34RdAF~5}}OyKbK`msjQ zl7yv2Ie90=5Ohv4W42yB6d^T?zbSbNt3Ahu+12oT^UBb_?b39GdFfY}vcDO2>tTus zORPJwqQ{WECT1p_)VEa2XBQqE`(^rHSYpD{gXN<%&CHEi-uTU}+t`Qf?Sccy`s{W= zG>+8ElRrd(^xQwZatGxfhp~5*L$K*r$B~}(rnzg3SUrqwW=b9Ban?ib`GqLv$>`T} z_!8(@*8Avqh-viG(~BYY<12!@k{7|^M{iNbT~uKmO4YKWm-`h6xwZc=%xU{-&L4-| zFPH5uVGOz?v(s;8q3A#22CYw_Wbxa`UP|xpunlr#!6}1fdRAa*(<)x4*4a6+QNjvt z-B#xJti)%-=>W-;CM`4S&zR+kFnKRCUpP$$=kG_Erh>xRzdKQ)X^AGuL^Q1{a}V-n zEPHVw(xgVc=BbPnIs`S+2$iZ1nSztUz`#lywL{e84WZh`y<~7vX8&@yTH&syP>!eo zp&?ZXZQ3}Y#eB@o_4zLs9B(w@#=S#fnD;_>pnxWZzTOiF7mD5(CfHF5`5>B`-K8Vd z^S-9q&Sz%fgj(;#aV^QS+4tZ~)AMHc%f9;1obAJ`*0vCt<52jj#zmV(EdHB%#hwO! zmQ=g$j~tMb+75<0K20wn+pgBC>Sj*A`p>;DB#0wc)4Ey22Pqk6E3z7wM29KyzOL=0 z1vaQ!d`gJlk2T=s%Rk1ql$1CUs-Y0s6WDEcW4O>{P$KoTTDlECV+F+cST)-BD5ypU zWiFP^6dBUomoeof$IG19AX{x9dCQEw1<1yQgg{MC)5=RRg`}H+!-fy(4Ecxgm(K-< zjb!U$IlXGq=JRNpM3s*@j?dO$jUw4O(R_FY3kR;8HSY`OJi330E9ho>P_MfUq=yc%BG#zAq z4WYPM?`b(xSA7~}jJQ9r0RqTFf(bwTCDp~QTUi}%7U_K_q7{}(VPFHC}EfKp1 zxK*azB3|-E`K6fd=i(cwmHBsO#gcmeTBBtYZ~TG16oiCdz&1Yd!@-kWP_wVbu%sk$ zFc$iwiqH=EOKB;I5Of&Nee$hT1pS0wlbP=7z%RcM&_5ic-6Ppr6W-96o@nB8C2x$l zIHaGt@8`wY3OFi1g47lv@6X!XHxPLxZkOCqvS0Djca+^dD_4;5Pz9|(I1c+3WhwJ@ zXN0HHHEO32S?);3Mj_k-!JsxFp#&R~1SNz**BD{ry*IK+Zv^gAyv!cz;=ipysXzee ztHJJI7{lwOv8-Kdw?m&3mzuX{n3h#-O#|KPSlGQGX`z24O0~>$^c`G%5)$9sRO6!b zcG&i&s}3wqk3?D*jm=u86LaIvT7%SA|I0U+iL}bQ!J=bdqk7(Ecf3ZEtk^Upee#>B zY>-pH@p10-&NiD!l>mcwK2oECNlG+x>kiY5)2H+)_k$w3Od z4x6j>a2|H-%uersUf-)o3w&0|Cpt+$?5(3yj}e+^ zP4BIj(%9+yHQPo@Z%fP0yMB%b5y+cXl3H85!zY!|yQajd*3Y#r-(#RmS>ixp@zZ71 zj0+Gp*c0?zMFh2Y963zC$uIGE8`Z>>u)y(v9%CX9F!QOumzvI%pJ z_%L_)&e!o*sXEQ;lNBakm#6gOT6|XD8#&& z^IJ*QtU%Ly$DcSQw-xEX&aLZM@X|zZRWp4RZ^jvK8-`rZBcYp?NYiLE;^@l%W-$(N z^EE?*8@tECQm4RHRTLwn)!0B)Qw1JN&aOWRQCoqPsH%mT23dGO-$f7CN6-6vSAr+f z^`2B4?ji1bmP*$P_`w;`CJ*xHG26LYFu!C4 zN;)wLv84~qz~RG^253=HIF7CEGfX-U&agmJorqQqRg!`c7eN`V3=g?jVQXtg<`w`zBQ6GlA4vA@s|&a}aC(piUA|)B4BRwl%4)OAZb#3NY^|ufPtaEI0LbeSvNVa&U89 zQa_3cfB$cXRK-osX4;f?37HS{s)}8HzWX+$#f!L0e$q z4<%=8@xWWfI_f6I4hVGfWFKqmR7Lc!VDJT}=%wQkCM|eGWLeQguzW=Y!X&wqEuWgT z2XWB?pOmjZ2Eo@(9qeq3bYAq7n<3VxGkp z$8(>|L{cz%c}yS)PjS0AW@|IyREMZEx%Woe=8sZb#0M7iG22k48ka=P7ir&&x38wEr67BB$ev68@f$yGQg_sV+;aX9 ztH;y!_pXtPPivJ)2~`&Cv?`$h0?-i77s_vQ>h5irQB$>@RHP@G0Z~3m8=WGp)huO& znyLZ10fk-P&hBJka!;e??KE2#w{9ohugqVX6Xpphz1M1M{vV55QZ>iU4 zm+5wRaIcrqjq1{3ZYBXyr^L+WbfgDr_J|78UIb*eGEnD|3G#FAVlBxty5qy}rB(Zj zh$m^}nCw6o0`|h}u!_{LMSMRt@6tK)2U|!LhPyp0b0zkmiw~U(=F5>fWLBFqQJV-w z8$z~q{|bt?o^72h{ax=h9Zi?aLuc#ipLnj_=n^$fRvB#L~ znE-e4PjKgi$0uL|BcTS)dV9zBTEnY}MVW_}mu;TK3 zJnY>A5+fUNdeC@7a0lGufg_>iGthO%Hq`LoCv$!rA_+p2;I=CcBh#eVy2i_`*sj61 z7qkenaSNaBAlYl&5xJ$unx)lHQc23R4|~@_IWLV$HPsv zDYHSY6y|b!aamu>a%0~I%`T@zcI-Mn#(3&9c5+Nf6csrp(~ z%=7@=nz-khymc`={0EbC)%l(8H`b&y{yXaajiZn^SAeDus{HvcS}t!%9w@!6EaB+s z+rX;R^w#UeAw;_Ki@t;BKMY-u=HK)){KJBvh<~M1Tu-OnD-6X>R2QA$1&Flm9bXnL zFw4!T8djeo5&G*_5?&9lZC^|bggSgY5UVB^9BmZ(!NjcoGN5E}xzi?S%7-s>t)TWL z`VYrGA{!@B-BbK&Ct_FE&ejnuaY0!jV?TUN+Dm^JH#^4syPl-+6K(QUOm(eq{2t|E z^kF-W=QqOuwXjE1MsGJUNh{LUh7-R9j1!r$TAKK!w*&QS)cDK+JeVY1@)MnoDK))y z&9b9HW0qk8*ottuHdJeMRIasKXZ8baMn2eNrZxP=27Mx}G zCh5oG|J0byyya?8`pVz+AMxBCoATC4+N0a+n1z~!FGD@zb8F%HQC-Z|a;kD6yT{R6 zt?zi(p#yECj4iaRF%Myj(~3oztZiNWB|nLBx~2sybiSxl=t($H9P|6vjbXXEZncWG zou;6a6GFVQA%NFRA)HTOG-4{xGfbYA&hY>O~yPLO^Y$Px8g?l)~=%-bEM zx&-q^2Kj5Zi}T#t{~M6~XL(M-yjCp%{VwTp{;phi)%5~<_pw2gnAu+|-ZKHh9tm)H z%kDx^=xHn9o?`xW$j*bqDCZG=Mw>+sIx#HmgjVnnE+~8{FwGmVbm-A-@`2LN@A0bo zMaf4^i@0$v&2*j8SS0*rmfr~05$#8<)SfC>>@BIOAjj8gbCiN~EOP>z^BbD(gsk|n z&7X}S$;iU%34-oa`JtP#Bi;&43CQ!|(`;GPARr?%PAOT5X*QCQY97b^2nqtpSe0K3 zzzPXtYag0Lyl)1A&&I%@oLhOq82y)xoz}@$m5n~5r7htbVqv43b9Rkq&a!iZ`OkbW z@=H_5>Xcp7?*8I+!v-Bsuvw%Fv+#hF+E|g>7(2e>Dt~Q4_h9#z6AfH;!B{h^XjExH z?3#MbkUK`OyWhZ-hG^>h_q1-=uYZE(5IL^~h^ySxC1j0QhG8Ux*;7j zU3Z**<0{h07TRMT0jLo2*fod1;|g-|rqV9K1m5BOv`eSISz{up-0u?u>p>uO#*2ZNgvKjoJ-MkxfHIK!7RES-4EJ`bO7~ks;{wg5wkCp1A^7 zBIC6RDhkB&p)TI@UZ!gE@gvpgU8Gb>6@?RvVid)+?$<2qf7AL|YOJ(6AHM9NEX=-& zW+{W86uy%ABbS#hTM{V~cy|s-3m*b~GlrLr7g@$eTOfhP{6!+F_e=OwQGo8{*u0+(zexm zwuaqPi1LF5Bhc+j+z-7Gh0wmEp$;30%D3BG8t^%L?J<)gmL)~-fF(;0celUBd-s3g zGOWZ&?z8l4qVTvQow?&~_((|bVlRs)LT_#?t(06u(!dj|`K#a0A+h(f)F-Hzs10Sa zU|#oZX33fA|CCd-T)Pa!ztWkxgNeR_0Cl-W)q!eShl1MoDX-$@bQR@gVV~A=5--^F zM2<^fl12O1*^6;k;rm0cwbd&ogvcDp7mKdTEc+9d_hMal3?eD*A|7NL#1-vu!T!Qu zZ#*%w0f`ci7d{p>784le^w15HaSg&AAcof})<8MA_tx$BCVAuzM4WIy zKN}P1%3qt5`Ti*l``J5k^KOy3{R)o!(X%T03*d|LTP=-QVXSRm!C5O=ZE_b^Yhcsc z>_~qe9FmU5%MLn|oH>UN77ag*i+kz`6%xz6A?GF2onIb#xV{SLS)2xW-y%%jx=iy| zxy++i{zaWm)m+>&qF((3f^62dm3i}e`9wjtqL!(G*pV&3IX6&s4#Vhupa;m{xiyd* z>!oaVqWIoE2ZV1$Wip^rpXKLgb&cgP)PyA07*naRCr$Oy$8HqRh2*fJ@>wHU(ZYLq>>H^EeQxDbOaStETf}Td+$yW&~e6b zEb|+gadgyiP*G+al_n}Bp+g8MgoKump1hRzUS99_{#d)5z4ku)oO|yp0ssHsU-_A)(-GGe$7~X$tnfjsvL6X1_+Qtj=oag2LR|_R$WH#^^30aea?Z66J9O9 zqnEso?v$U+cjkQ(((F4W3`sDi*poEO#la}=;`23-`yutgsOL$4UAz?x<64P1Jj9;6 zcGq)%So?ZqGd|PT97baJ9B`vzKYA}-njP)Wnn8(K=)GoP%?eUfG^zD9ay|e!Kihy9`(-+MxPQ2?aR%C+Fj56;WZV8*Tez{ z*CxP?uWE%=#3VvzYYx<`OH3@jBZg60U4P~diePrd_<^H~G^1(3(89q#$0>l2;{(CS z5=O^0@WNEi^W5TOu{Lxqtv1qow5S1a@=jawzOf~KveZ|Y{GfL+fX zf6H)O1wb->AQ+!}*xK(lyy!EkE^`wS37Pbdd{kNo__fJV_~eJ|9=K!5Zrt`1Ytx4V8-Ih zS0NbiFuu!3n$oVPt*Lkfu8|8yTEMEsW9W4_gx3p888R_(OYvTW zWvnl)ue3sTaTl%&)CJZf*@qE@QLj;~(3YH|m?~!+6$A)T5bk%Vg?Aht2h_SpuQ4^g z80x%u%pnM9ai0Vu;YqKn3c#bFlcBYwlO98{nfNmV7=dATi-uJIW}NiKn_itBEpn|e zq6jFmr~!Yd<&ATKC~4r^Qz7$M(Vhegq8Um(Uf(Ze&cG-yOMsC-;`It6SHMXy>bVGB zWrF5x{aN}vA0BfgPFMs4n}vL?oNTlm=>M~gGV2XKK$Bv94w5s zc{j!|nbsZ{bGfxUx7@qh#>L=14OsvL^JjBwp>hOCf%}!YJ`JG#Gshr*Z3}H4jl2%B)E+0=ZPMde^4Ahm>YfEcaQE8|K%; zxKW%W=8JWNVz9%J>fRg2)LcLcgVF2|y8>jdMf^Yx21e~C^XKKmBY%1!xNxuc+2y$T zalF|u>V0~DXnL?P#ywBd(x&yRd+s;C^6cG%-c25~0L(h+@|#}WTci-DvvAdZNRp=2 z$nh~u+-8(-yh1gJ4@MW!KA3!y^I07?+ED~tNxZ32I-(5b;^H;JV@P}#CobMb7LP*_ zfvRgf{jLyi z{Wd}{dX@i3!Km?GBpyQ;S@cIQ{zD!eEkZO76767 zWgd@}Fl_6*LbNrP5_LWQDq>o=hUQP>rdv%XWcVUr)ZtodBCjQk9t$;O7~@iSC;aoSC>;MoN(M6XHg&6WruD=ANOzX!aoZ zeuTX=cVYC^li3!^jD)4DJ` z8e3tg!eM-sPuK3;e0M?n1O*Aetfg%Y0K@!oOv)J{;>X175hUG{BpBSJ zx_+`xNa8e`Yv+BI>dyg2R}tl#hkJdTRkfG;wm8S(y%2>Er^u4NA3hjUNUh$!>380o zp#lWJXO_4|D`s+qOgP4r3uTT=<5&hmqM|5_5+(_cM0lLwIbBZv zj9`?AO39KQ7mqqjE$CG|9wnLexP!;z$igV$Dw5V~cWk^PvKEL4z?@UAP>F6yQmUEE z=VnB;usu@Lq)N}cP(4_vNgi$(?LKM=YRuX?O4fG&560t(#~_EuS|C9H@-bvSzdA`c z>}i|4a;~kDe0$f8D%_;T3uCh2{`tVjBQ5TGK6_5T!O~ifS17IBO*Wqb7&#aNVD0ve zzq71>B>+Ld2n2y!D{$dicz1|g@9cN;WNL`5S`id^WJTOMAi0>Ibmncqv3Wd=p zJT6o4IdVLXB#b^LF9wf1Y9?K(=qm~SBwW*2?oRGt@K_v-t`+bI0LA^?aG_>4jRfB! zx0p~|+&G1P?;^^z7Cw!Z&tmz6AfIM*?}=wPa-dQ{R_qnhKezQ;fdq35L(-?OE`}wj4pr11zmhRiM2bJ6|e+g_OdI~s)wZrgnc(zp$YGG z8OQgWHxjSUr;*fT!=|!oU~!v6P)jbf?nixk05v5!l&1oe zrGSzkKsseAhDi@*b2;>7f!a&vUoxT^Q*a zH}!+h%MW99svmR9dr@B&pt`ICnUYe$_@yN!QUFpU0OSUxgaF78upttKiHZ412nI+9 z21p3xzutj<^z`+iy{{j~db4=BCxey&;Ycwm=ZBFwToxXR$D@Qll9_6iJPr5_R|XqN}$T?Y%u{=o-M5 z?kekG!$%um)-`~TKXyR2uUCxxz%c85p^ zgdp^zmjrIeNqTIdb-iv-HYv=Y3%DOQ%(qPuIs}Y$G5?qWIOKu<%@9e-#vJ= zWXP|r4Ys-X@oQZk4fK_wU=)-jLsU- z%a4wNG>u7ZdD8Q>tbn>Cm*oQRR_6cf3s?n}s}wD5?nrA`VWg-l{&=*w_(~H%zt_B` z1ugR6Jex5N(Id}Q%&ha0bfl^P7&EB>oK(?`$(1Fjsi;5|34qZ2<;avu%`dcmnj$^S z<>5@vR=r$Dxi(9?L(&@f*99a9WC=R^deKP&(9?tV?k*hc?8BDMa&+X=Xd!JO0Hz6!al>g`zw z12Gk;nK)KJI07~EDFpaf*E zD#W6ND7Ut+*zed+#~Od~@;;S?!ekr5(e4TL+SqC?~kkrim`?nZl8 z7aF^|u(2b9W7$$i`4oajR~+-v&1+UA5h7ix;}jaFq3ixKezR`(2t(}iVqgqXt4RQE zLN2QsUAX{Ce=8b_^!ZpWVfjSdu%ct;B(~JU^*AoE_&xl+gi*ejPvI?pECfcI7`3TB zEUW6lxXKFDR#c!SL)xGG{xX!8mZCgeDzrYiJu=E8T^$aM%lMk%-M>bM+2;gn%!C#} ztP2Lj0$B?|C#?s1d(hV1h1Ska9PRAF=FT!S4U{|KN*B+Z!A1^`QP$^h_-O57P=Aht z(c@)U5B2b45NH9=3*bT)Dh6=3afhq#IciN4EqjG8N8^m^6T*ly7v2@$oJ+Hv-K512 zqh>gRB$``QDvMJpJ2Aeh0(F&@g88e<$?q?dZjTCcYG0rDo=10l+Fpvft?}co;{u`I zlO-T*XloEgh?F}-YXL0;hdaBlp(BIVY>9)^I7`4Uv$bYnwD#lC7Uv{d$2~tPK1Sgc z%a2-6#G2#g;KbA3F4CX*Fh(D{;Ym9vWg9E4_2LhB=2ysjji!{(_fJNrN*@mxwb+yd zS*)mP$N0($jH;?cZH8Q*3@XZ%&(HjQcV{;mhnDl?8sD`FoWxu}-0wA(%*I*H+AJeW z(ALu>grKFP6NfuH@l<;ix^q-NAhDi=M;>RFtitJO@A%liMVZvzo#9rIE2Ze3g)4e4 zKMo^|YlFEI0Sb>TpIIXQt66#(CqdAwDM;;US(MxMxT_s>70k~?-t2L9Wq~GfJQ4-6_+Bhi$ z8gQ4n-NUMV)+;RWQWZ;KDHt=40u+r%O`zd|G0vpQ@28e@V`*&;^;OlVtEfaBg*!79 zBHT%#PMOv~8(R`ajsmUOjsUr{OiezDVA zQi_t2veycQcA?%a{+pZ*81$iKo%qA5Z zW&`93^`lcog^qQ1qPe{Td)m73bZ3>PtG9-Jc<`9tF8Fw;5GCm2)1mQWF!!{p6xVV0 zCrNT$H^jZxbqIXp(ltDsrLS=(=n`bOVARjCg?3U&4^FAgVoX)FaDQr5$Wx{{l!$Cj z$^4R)-FQ|Z+TJB|q3%x7{z2FlShzxRuYgh}#7=Q{H(I;9(5$S$v#mMo?yq1Ly%<`@ zF`%pUU3$iy+m@sp2TSYXU{nIYLPKGUpirjd4|Jtbn_5?B;_mTj0X>Ef#yCrpWHS9Q zmIYayRn>-Z)zuhXO}>8>YE`O3d1(nsRh(aBax$;qXl=)tG_k|-vULex4_k42i`V$^L+S@-T^(6V@MgGTG0dZ(?m^iK7QW-B zA{#})7%uD$j8jW{u&gGFG1WD~{izkcze#hTU0&(-%l}-Lr_jwUmuaOchl1=!t}@f?(GM*&SxM2+my+Ji?;KXXtviv)>j z>O3-aws7e6#vO|89_Fop5Pw`@)y<7Pu5@_9x>3G@o+q9zU7+xPD)J(SPB2kAI23aT zwN>w`C#`Z)47r`{6~@^7`4$vBIwZJo@Gwf|lCKq&?U-IuA+$d&ereN7?Dnd{7K-?o z9p0z_B)K+)xH(LsLjB^44*3MewK96gn5+OL&dId^S%D5Tb+luDTZga$*%3N$Tn2vJ zR`L01J)(!AyN7uzdmWs3`a4wbsOX`WoKcN=*AwFzqLKuLV1_AmdaWEw|KA|P=V-}s z?69kpw~>KybgBm{YWpyzrWT_st1zmfQe=8ku8+*_lqn7_^W_U)#xXD-Cuxj)f|In6 zrqF0V)fv-TK&4H$bakPrgCat$c)BHxL)lCu0Yy?$)5lM1n--kbnm&cQ&x51&U}2Q$ z-g-k&*j^F+Oo|-ke->SFa;6otYBCt3 zv_FMDDb1PE9Yig!%IJ)9eKbSoTMrZ(0(Gs4tz2AXW3J|I7`@MCA=UyE7NtC))~+rU z5^clowr;HNszJ_sn70c-emweM_FHFntTzYRA(iZy`G0=Swui8*<(1z&{l0*AQqIFlwZY*cdnf{_4c zSTte7I6B>nm9@PXTV0FMRh0Hnr53+sqOyy2d=Cb}pz(BmQZzk&PH87js!Pe}Po<3h zkpG{dn%opixbkCg<3;eyN7veUdTsl&q3dONx}^r zxwa>s@lH2R#qiBdj)KgWu;ev)K2z#`=U9e_AD86X_{^e`OaXSBxwN0TyrLB+)K&-q zpy&^6e(79)(aC`}zSL6DWj4tpzOJG6JYCnsK;Ujd;fK)@0QqR2TcXv0>v+VO zy*S4834qVHk6+jhCyZ%iab9%`#?{m+0jNYZ2|y{iKUCgmV*bVC`?w68&l1F0fMOQS zZbV26PZn7W3{bZ@3WxTJ{2-AVM4Mu5tytS$iymQd^R3AY<|TEKu8(tDl4u>ZbM6xh zh0*3xt|<94)aYaZq_*HTkK2r>1e$4RR2WSriOtvTW-ObDIFoY$^JxIyM8mRS9`C?B z-^?kRwm{$12E90|rVHb0>oB^iT7*BV$^B6RAlnz3kZnF~T!^dUYV~5=pQJ@{oREn& zE7_b%jgVQQLI673akRA+PqdYzDXSCYqCDWIwT|!jXsv}qcLAhpTw2HTno++#55jNt zIgC1dZfr#!80Vewt~kF$Jxzk7naRXZc~m~iz-CZ)iO5AQ$x_JQ;zZGAw&G!=kte3R za9ZsE##WmMkct1x@Mn@6k}pngtBxo}3_0Vmk;J zu&=)|hSrY86eO_~5EneH_>7>+`)!rvS^>_gMis{?6S+rWuwpxi9+%8h(j#F~%6r}! z?^Z>2wt?{;LLF&QVWeG#>DlBg-sW0eO*qdX)EY?5f|A*sm+zqLB4C_e(t)M50mjzI z1u#W`DD#ujo+$#vH^1UGwem%PT-StB6l9@$PNr3hK0)?cAWpFIxk_;`>V+_+MUVxc zLKzB$(n6T(1h)69g|MQbq>y3E5bK_F0;M7RX+`?SqG)X=U__ps7e>DA6vvN-kAiv2 zl?4b@t$q4>xc|h3OT1@a@CLSAWrtm%oiTMTvG1+;HtW6&_N=#Or*5CC&Z+OeoM zjd3jhM+iWv?CU8zJ4D2e6%|Gosa#{b_ios`8~^t3{b(KNM_G_UeR&2m#*D?O(`Vp} z8M8&fO(7PCZ+OM+6L8He1t2SW36TKkydVmNzCe+nzFJkd!tvzfWSNO6(t8dZ*X>t? za&?uS?<|tGLwb3D9?L!y_hHZpDu` zd(U-b6hvWol0QrT#wx-h_RvM{;9#6z+KTx#B^XO75Gnyqls$_4A6fJg7ysvGv=FAH zgtSlm`sbK)@<~{=>O3){!-o%J+qSKE{`qYv>mR^}&N>$-O`a~Sk8ey@xC+@g6Fb5= zi1v!z{e7Zbl2Rg?JKNFN)`pkcdaUD4a{qN9SSBopJe5+}TE?jEa5&F=fLs*xuHQXM5`uG7H6H60Lk= z6iaI^BuRW1(TvVKTv(!3i3xyV46peLpXD)a5py>ji1bao7#O+D_L<}W^GaK>pe8LW z0Hr|793X0WLP>Bb5dkVR_RlSXyDr#rU@vaG_YPch{S6p9cANl=A5W^YOzFGlp4);Q z8#drGXP=MpHMLIawX;rRVFK4t;{qFJ0gkq{2?5w51i;5EoP!{;djJ3+07*naR0ewK z>C!)r$%<7_?)8PxIy!4PO5rdv7l>;lKE0Sa+9Ty3qH@Ro<}N9*WXtXh43MEeU&sq<{LAT%{K zV*P#hpt^vGpea>Jm4GLk{IG)mc z;4(00dN>T6J2SEsr%=<|Dh3?QLv zXlTIx_0QmjQ&)(Z1a4uZdXe|$TM)}NfEEA~1)|~@S_D7Wn!}EM5&*ph@H3?wp!Cz( zr+v+L@rPb>K}mvxE9R(sEnzg@C&Q?01qnb{lqK@S^y%St_hQNk5|7tQW^o;7TFIa? zcgP%otsbMgV=!{5NP!+#k1b)5WAkU)FlsoWFmjmWT%s`QK-+{=Cr+#F3k5*e0qCx8 zv=PRc%^pb(oKHLNJJy6R-*-2zyY2>*m6cf*K+f6LKinD|J$x98k9A^Z{b)-7%wCKw z1Y98Wdm3E`fUXf%VNg*X+17?lv=1;)9U6deL|$|1=2o?C?f-mngjA3K7pu6n2FC_&6fmPPiyQS7FK zfHS{nk)F+B|I_R7#;G&0tMMpaICKzunj1wFN96bbq8||G(2bHb`g{6BQ?DSG6AO8A z=cubiO(rASyokkqMU^;VMyEnN)n0+-9N!5(-n34_W)iLA+_U2NF_^#NJzS2QaG3td z^`qlWx0FG*kXi%f^XvGIGM{jM_a-Wou5cwGSGsVkE02oB=4g=&C;NX^iUwGvNT+FI zU4{ki9nbjmXs(5+JHzLG`zy>`whX5)UmgKQM}X4lGP?y%Ol8eKo&o!m*e6*$m5~B?+7W;F_)*KqXQc^JcF~(IT!1mdJ^e$ zi4cMX3l@gMXiG6+{CF%`yhylF+vufdhEul^uBg`4_N${dyce z)Pzwp&+!c5)2=R4=A%hIp75;;^Ns29($M))34l-YDj&&8l;ccV2xI3nVXh#>jqiT% z6BKP_ii2@xNjpxe$zhCI2va&Vxk1zji*|$K@`1dJ=X8DE-PDMi?z;yc_~^&N%emXr z-`|g){P;(>@~v;fD?7Gh`HGd;ym>RKtE(_)&fJI)tX#1iV@8jbC&=hZZstnq8#+5X z(bLm|($Z3K9a)$jIz*$LEJG_A8;|11kt5i!bst{X-H}kl;iF$Z#`a;Rn0vStFGMN& zJPvn^c)<$huXwLoIJ=&ZGf21Dc`k)8P zt2!}`@_|%Iq+AEcQ(t&Rn4E=K{JQVm1@YE{`|-oA8}QC|{e|V$kSlWd&><{Zyac!Y z*H4klW%1UxU4`1(TEVcyteFfoud-hkU3flfYiiKb(<_cq=+sw8^td4BO4FkaC4965Nck`l0-YbgR5xctGbKJ9}?*> zs#wWQ!4Ks{_Z4L)3Gr4eItw9@zmj1L=CAxqb_%vaY1pw>F{DUl(u}B}vuZ*;5+*K> zS{9yKAn%H52W@*))|h{rybu`kS=1a*9t>c4MKdN=SBFLMOcqqL}!cprllZ zCw6Yfod@^e&2PEFa$Cq9`T5Uo#Tm<&iyh!|&s~M`a(5vrfhWcuGiD6tpEy_iC99!r zole%%*U`0W)~vz5eD8af^{A|@#23Ht1<>E-=4Ko{dK3p64&$K>htSzgf~3n=b%mZo z>jLm-B~L1bmUQG+eu%Udw>#?s!J+HhBC^{R7GQ(c9Dfvop; zy0*8s7dPH?6Si;PF5YvYAmw%O#TVn;bI(OnQcQeTHDIe&qGlddG&@;A&TMrFbDHjzE>2)*ctzlp>1Ptt}#Oyq`55TlY4!i zt5A&i*gC_uA47vt&(SBUql6pOA*#YeVSGiESO>_;FjW}uoB`ldimnjc`qX1+8e5MQ zD^?1|?d<5lgAd-1Ide}GX8}*1JQ?-Mr+0UQX?*hG=ggjk`SVT`ZcoyStjgE_{_nA4 z#}3dMfC~VHQ^$=ThxfkcJwgZ%A3lP|Hy=bpQ=hZKGs}8Iea%Li1>`t}f9a%gA`jHi}0VLJ5&qQ!TT4%$ivY!cKpGA3pi1PhtQ5{h_6x5Gnnm*9|vZFYvWz-(jrX*r;$_JRXgpNAYM! z@}kVD!=QE^f#xC3!kVWBN9#BkCB#f|lK>b7jsk2`r`X?Z9Uc`E&FoR}iPv^M7<|u( z8^Ny+CZ;>Fw4xhh#A3J#bs60oRMiJldlY`iH5)#zQ03Njk70LN8W&u6QMd+p>d7Z? z#_|>6-8|;6nfjz9i!pV|6x7sIqpz=DgfR8Xw{xt2`|(eHf;;cL(~1xg^V1@mT%ZN> z7YO&~nXL`j)zIVdorjJ`35!qR#8cG#l8?XC8o+z(Yq8@i)wy8h`xF=Ig^zo9va4a8 zb*nGo!kULhh8w}r0LK|9^<3-cA;K6--vFh^;`Fk^m{3y{)(4ACF;O2tdjhgOy4xZ# zZi9@p%w5lI!W}za#C6x-AgyFBhkg6@VcN855o+lu&g@w;arPU|5>Xs_k@oNF>x=mQ z?f`WEi!Z*2fBfb*MU+Q}N=X1FjGut_zV|(#2oY_LJ-n$I-My5bUnH%4BpVE^!+RWp zh>wmk^up-OzEGVQMya&Q2Z9A>N(~ znNQf&E@m>(dAQG2LKOq!=%5>?RdxtBXp{(v%2OeAY6P`OBmv;jm!yiZ&HMM^EBE{s zpa0^QP$EK->?IS>_o8TRc*@ssCaUL) zfH9mhbM_aU`Tl4aG|`%H2`#{6g=0xyPKF(lT%I_$$rZ#TAldlEcvr|_Nog}?R;JAf zG3t;ET_>!ML`^yvPeXRF^%y?&Kfl0xuDdR*18`j)iq)SucP>`1J~s@7QlyBqwVN-b z@09{T3{I2Fp}&7X2n8|x&Ye5)t#5x@tOK+FjIOW8o8SB<>}zPjlUt7^QrBMR6@o_} z52*V>1?p2;abW22l6Z^%HZ&N61!rm($h87Sdz#0&z~ymYEaq3*Hxjdr8^hx|MJ(0u z!$=8ortt|G-;w(?CKZ!{LRf2qLg7za$B}--HPomzJ%su&8VuX#_YLsaOPQOqNb)sM192O zSaty4{q8^GvBw@2!ja9AU}Qx!>CJDt9M8Pij;1!bk6>H;7)xnc?qX@}WAHfUE{@hV z{2cZ|VKiO?6M#arxviaf$9LbhH-ML9g8b^ zWUF*>MzG8e$_ODyqg1R1&smY%c(GiIEC z87G_|GDNvmpcIBZyLRLGt=sVImMwVxx#w`?&|&19onIQKydr}YXRgFKt5;#v=+Wrz z?!nVfKaFpF=R3%fMHrBlVb<)~sGBe!I}g&rH%<|`3_El@nkU)Yh4M-HEP4z-T3-(i zMvjAEp>lx?i^(vh{A_|%l0`Y|@}w}$;C!3RIS?WAI(ZW-?#SyrY_h))TvEq007nPHlZG_?0Tw;A)^_GWbV^r5e} z7iXMtI!-(FlrVc!Ur+AJV{6vpN8kSe4j(xp+!xo!k60O%8bU(!?!SC5X3m={a(%w^ z^W=yS2%buYX z6(W7OvRv*EQ=X8t1X2Ke2WV_LxF3B>=Ha8C`ea!A?kX?1Y@x9%&TR5K|ILu1+7L`j!Dvh^C%JT50pg8 zaNVLRzeJ*(MudXH>NTX=Gz}Y!`OL3GMS0MVrKOFSSeZd>rF4a;xI`SD5n2LT6WBsP zlX>}Y1MWDq7eD{yZ6XJUr#6sgZ*6J8J-@pHxBudoVaPL)`>nn=G8Acd;TJTy7T_~*!!=pvpFsIDeN+C>)w#O63 zVBuM00bC#4=YRS9bf4$XuhZ|@WFyb=k-d=T7jg~LE>_ZA;V@PPeOOZ3f=QL7qH`Qs z0t$_WmLM(b2BZ+kvjiS~`9CQ{ z(rE-~bu6nEfFMA&zaIlVJs9Zg4;Q+9{e2=_T2ns?RdscEX44i_Pgsi5jBa_NALX07 z%gAxKbr;J%zA1**KAz$&i{2+>MoMB z=cn)Wm0!MgFjfZrIJv9^6D!L^)fjb;5E-MQg^F~CC~K4o;P2l0EMDsC#!r6o6O5fa zNro~Jpr^M7>z;TL|MKncqNTYx%J@NmG}R2JQ;P9TRLH%UqC+Ce)8CKY&QA1pccZsY z3IP2*amg~gcp!_Qq?#=@T^e#43l)8KfKLOsWbkQ! zpY;07q)$S*3+B3GNg651afpMF-xD`i8^*F=04J5VVOCWdbu3{{rcIZMZp*i*>kn#yql3Ng`5C-E4<;P?E6!Qs(YpL?NP;qlMFft1ux7pTFPNo#Q@G5 zmlA7&=Nk^-KOS3)bV&(ns;fn}24YHGxH4_r1dOiJr?5oR0m;uVt*#PL2y$seNR@4h zac0@EV>|XzF45Gfm_B{Fba{IFqyS(%21-XG$m!^vsVzVRk2;eyN^3*=!QxR8C?6h0 z;GAc(Di~=UMJ}FDKf0}ruj#G;&j%xqBr(G4;w%<*61ZOU26BPS%g(>HCCrs4cS)pm zW;AVDj$@~&%4gbo+B`wNGym5R%Ii%C);`h3ezMOl4F`ku8b#_|zEWUG)v#M+T3QM*Pg+!f0I>jD}-|!jIu@1_^-6XwjZ;nt|PX zeVctl&&4XRk(0NLy8+$TUrvr=o8Q+HjI+zTvAixPvPNk^ENX};ELu{6z0HmItGoUe zv!~4nng7VKCNZCJs=<|4Ac6p8wKdUtYCz=uP<~K*dmHxb*@KxgXNp~Asu>^)(9v=X z{h1RGR8Fvl9w|K9wBWRirr7ya5?8o`p|#{FIX~B>*22b>XFQC`0wno*oPFI$g3lM% z*ZTqUYeV<>KHcrRhT9O^S{bn$ei-MMb>QT>Kva)WqbV%_lq>YBXP&|%J6=XhPq&E6 z_w@ClDpP?Olc$JOio{ncCDsC|Qaf{$7QUqEj~#14Z*LDOD=Sc0S)~@hz36OdL0|bK zq-suZY^uSd-H#^;Z^hz~&nS+Lg7MHbRVNFUk)1t+&Oqr%4dYvdoC&6qxcmUsj{2`H#U+7CLh^zFG zMdmK;?oj%Lt}hnRpNW(qK68=+ZQXry`GZ`DbKd3>LlN z+ORA-N~Ab1+Civ3U)ECo{0!hEZ=72SE>wfDBynu!o=2>&^L?MB#iV1lw7dy(t4nMF zC@T}$qCx-=U~9vEeDC20P(OMs%Jj)Ed^a}+R4xE+E|C5#(xH2LMEt+IvrDW2`bz3h zGI|knHsh2^J^{%is$Pc87nSqTa-?XjbpQu6ZqBp_KKojpWv0Ru=Adj@HRRwm6iQF- zkMDZMZ+4dq1sGeIO9kct?3)X(?imRfO-M{tPDvt?p+2p=5i@JbW#w3h%0Re~hwCS5%-Rqt*+mNp6nPA1L*K{!*TQ|A6TDObg_iQFZ7|m7^s$ zU3oxpc;vKnA3jWY6vGUK*2fpdVA0vvg#msO6eA!g7OT&TB4qIn556WNai-HXA1-6t zT_Pj}?bttO)?#3^ncNj_pAd1O;6yYq(z|mqhcQXl4pRq-@^WA{CFeaV|d zK9YPDibp+XJx6_?PvLM{`k35DYd){yXl=)oXzXHP^r75_Q3!xN6|cXcM$%DuUf{yF zsSL|$b~AUlYx^YMUlPz)a1))9t1;EyZJx zKZd*RybJZSE<`Hj6yGcOjo!=ep12A^qB1`or3#UEb1&3~$Kq*i;C7eyMx^3lj1|en zXJ79>C|mb;R}D;a6x*XNy}NyEgA#lS=J9IXzO>AlB}V)5i@SUT+l5eB8BRb_Qp04h@X?C)+zW!)%|q51sI?U*`# zB1YBJV*B3RC{Lx(J1~HmbZ<;w&^QBLU0Z{zKllOBX`-d21$3qub$eU;%we>2sHVAt z#$#AH5RE8>DHU4HC?2qA?Ly6I?Pz~5jL~!vd6&u{Rrg4t^0-`a&3I#A3>KerJrh|q zv9N)tw!0h`x??XxLefFmxiGjy0!adJ*4 z2h_=PygItNgjTDrB$p`as+=%uCO+}`&x-U1Dy-20(A+E=-fnvS5MDmuq+2^pkL~FW z7LS^neYAGR~|3&h`KKv*X;lP$N22HcC+mKz_e4$|pX6T!iEsS6}ZV zgo~_vWBHac!w=)`XYWK`Pg_{jPUnk#^U8N&d~L04rLNqcH7`9cQYGe$n}F{>@*qwa zJr-|TvJ_RNW%%J^Yw^I27cqDG45WgTNNU@8U?18$+C}_p+Js4wyrFrE7UJ3u-hk4w zauN5Zf1RBjBJH}liCUf?!HYW&VbgZ%DCgqJ#e;v@XNMg)#eMh3J;O&Q&WMH5I!=)$ z@qvap-!se@OaSOh_iQizFvsWjmKbuRdHl1;J&u17=^#hr@w290BN#Oraye{&`Znpo zDGM-r+<1Kb%~y%6P~Tx1nyGYr<9|0jjh{XJ1ZGZ|CYZmoy9)=79Kxy7X5gdeoR53A zZpLlvpTvyGQ!%!#9wlX^ID6H(xbmG>i3V6Y)tcI;(190}AlIY>VBdkmcw`H8hUR$n zF@?q>*W_`ub}go6<~Uj>S%qR4v=A6wSbWQO*HYN?2^ODogQE^yX=MY1IPyufYa`+` zL7b-M)Pk+#qUyLWf?^u}5^+#seEWRL3|&qvG)Bv*LrnW7KDm-}w1!_+X4nhw@tv zj{s-`n%~5ESzLW-v$>qKT%a2%)n^L(!<%tt%%CwUBGG#yvtZd9#lqOzbqu?=++_*C z8yBC951xIVJV!tj#oJoR*EzbUzh9iuOI_y1R#&4WMY{_U8oHm>1GjH@3VSo9xaD7O z5$;ZVdq;>nSqRfB1b{36b&(?hpkt5LY-~kOpBpIjS%gCHXqb37@F?OoPCFA0MO-4E ze72u~xtI+GMj-$?M@z2v?1Qq!pw6Myl9>m0P_}G=5j{Lv=$J6TRNO(?#lomv1m6MA z;=33ayIK!n@AH2W-Q4I!mf)&WmgBw4&k`rg(}8+E0kDY_6%ejpwac_|-yZzrxefT$ zuYM&OaM97HydIb=00{v(4@4CewF)xY~X{^Q@jj}woyV$r0@R<;ulf$~KzrAa)o=M^-Js>Zb+`Y=)z z6`^bMi(7vtj#NsQq%mQ_cubfyK}30e@`E4Xo$q+3I76VnuOHpL-RNlVkb42b0?569 zO)nh5_HZ*SvMf}HcHI|!ofcr;pv-lr;#`g-26W)CT!z8GNCV{KN5g~iajsI6&kdHG z`yrX+&VLubIZSKuocdtF&OW&AZyde_&XRmMCP;48nfR$#7#WcU0b}RE_1M368zxPf zgzG=}LA>#@%f#8e1lm7-?(=xZ^f?hLz!_i8CWl{cScmzSzY(i1x+nyQEDACDy?5V( z3op6|Rn=9fuBpa^i4#P`XaC-Pxa)Vn!?o93t%~H^LjH^$n$I_(>1oMv>J65D5S64{^px2u&z8GIwu}bU;^Mx-l zKgIUH_vFL)+yC>=NLN$}<|oFc4iBTpjFuZ~0KWB&f5Lg^pD#N~)1iE+lsE+@Q;|V; zS2rpuEAZ8?dUY_2!Ck<~Pou z1T4lKiNyPjz}PUF>B*5z@s_DmC=5m+04C=>nu=;KQ{*Q(v}=bbWN1fo+@loi+32 zSATmm-n@9J74B>7XveR%ZN@d9|12iYq=PDCSG3x?T2xn8g;6E?{_#g2!($IWD#oTY z0F7N*S|)aho9UGI#-rkZ?PoV{!l}!aVd~VWA{Cm#ptKoA=@4r-kpS>;uwl8vXl;Zf zN^9-NX;q_Hn(m?Hy9nw!bri;08+`j{ZPbocR}k_W4jKN8(J{*dpSuEJP*|O;| zANU&Eahz#QZLP2XWl8`@tG~2u z8~*MiAIGQ9y-?ul)@Po=h1Xw$C8wM!^%&I!j2RcR^M-b!QdHd~Xy#FDz_xEG!8!yCZ%U3Gq4={G@ zXk@4pbdfI-g3o>WGr0QdYo$Qe)}X4Y5(Bv`UfHn&|9;CYSh0M$h!8!n?jV}mg>-3x z3<{4D=vbFsj$I@kJ>ffcE>|ca3O`LidpC zRaRb#{rmRe&fndEqel*5=OLhS%p8mV6}Q?#VFMB)k_oid0v5`dYvq-~5`Q!!>-RAc z@WeFxI7>p$)eB*VA32PnRW&YJaMJ3JJ5M?00vyELsuZ?29l@f@FB75488c^ySUm}V-Wk?ROFlV8h>jj@6u;HfR0|(I zt|6BDy&i|3Ek=1i-~Zk%!r!l}tH-FiQJ6esGR939FE_)E9>v2CKZNIZG$K_q$5Vrt zL`$x5Jh*lb#fvCIkGb%bwR#mAr|}SBj0=f+;ROQQ0=P)vOH&_^dEA%qq1-oArYF=z zabx6TYHi|&8%Ac48H}d|yD_!80(DiD*wo*H_kZ-GVv~yg(Fu*(1=4rRo<2EIv_e{% ze16W%;=S_!`HAp8#@AyCj0A!3^(h1NnRQR&f&1>qwryLnVBtc{oHLxi-nQTH9w3@0C?qf zb>l3W*=fBm&6Ejs+GCj~@}^jhR>{$UacqcQ9DWt7jiH$X?eaV)ww!xhbQ|U z93F?mwSnW49%mRU(2LVc8Ze=z8e^)fQCCrk=Z_r1luIteinGoVi`zPne=iWOHof?J zaZYe+8=4y%v31*4ajqDD`CKCUee;?-@$?^V$C16SpufKtsdO1qnOaO)yb@$EaH4z#vBUDeTt2SG@g<$*CgzDe_0s9|Igj>1Bs8 zzPbius;W?1S%s2RfZy)fflq(!Ya$dnZv5CVB|=x#xjsLoKTw#m*+#+?S&F?q`>| zTtAT;7kA;|`gwe;s3WEJT@!-OJ|9&-(`~+52;6a&#^7KSx^Q|~BgWQ{0LXK}s>(8W z>2L$~P8x%2Zuo#WxpCb1aaK4~S8s{(#jYNa)ky--cK8Tx{qc`*?}PW_@+;no&wuHQ z7*%f$($m&LK(9(vUt0eVHs1eRytw`$^!3POH)7_p%391iKYRLdeBtJ=;etyp z6j`N7YlFU?Zanh8Kf)uw{txu^cFVA9DvkLoF2dRG{y6#uav~v)EWm*S2k^&7ccbBG zPeNqHrPFZW(N`|fHP+3;CtfO9GP*#;JYU2+WbN_ z1;?~3nA~Bg`-$h)h9xr_2NJb zBLF37*$LukS0@g(wPN?t!)Wd95&>WGQL+R57+X~%I>gNyI}W8ODHwlz;W@lep2lZB z_j#N+|3o1$2lnq5xjpmd&&To=D@4_qwhH~d-T2wfAI9#j>qIJby0i?7R$h!ZeeA2~ zRK@Yfnwv#k@FQy<#I~3B;!wv#hB%sw4k7b-Ct2AjZQ{B_8`|oz2SaNgJ@Q#9AOFOC z=L#N0fzJDQcm`6~rzcPud+OPCV_h8_Q>$+AEanr2O>Y$tR>hA;)AK$Zk<^m#RP0cb z<%iKFv|i$P{MHcPEHD_R9+~eJ1Pz#11&prNM}qo1?#OiVsuI%dz9g?aPl;mWsNDKbvU-RWv?!EJx{F&y6g zvPhpM0XXB*cVop{-j6Qb9z_WNMS|9C+=*wNZ&3!<#iKr?S}qzx5^7~D_@q!gvce}p zYq<_H0Uf3QLt0Blw9|;(1GZ(oglK)@!WbF_AB;2(7j(wNq-7-hZ)tS!UE_s z!RTDz@^p#F)0a(B?3b@0mKK2Kt`2| zieRp|@(P^whBt(+(eqC}fL&YGA(bw{#98w(d)Zki%~Z+m5UM{ArAag#Jcwtv?ZG1( zk1}f6c+_|^XEzjvN6svA);?P6y#rel^JkjPF%!Sn+{M+T-c2yN+b((W@naz{hI>dP z0I#P*sQE#ect0vd;0AzEZ> z0TBIxs4n2pA-uSK5B~62!-yO>e%uer7CnWcYZvW{XyqBtFE*{Yx(b$_Pc9HQC9coz z>Ur&rM75sHJlqT=<)!$o1-D5Oz9M0?v{OVuJLBoGqZ*Bzo3m59FiwR)=}XmqG?S)v&7s|EWyO*>x~ z2~9H^#~mwfY>%7Dauj@2jMgx^S83+g&*YJ+fLtIg08zsc&DGHQndfup2kHm849x-J zCXow}Z=n-65&k@5FYHjQCanH_@Gxd_Jvg&uKgQM8iUlz30*jO3=|mW(9irP1%RE)5 zf5^U{-(34geB`FDV)VE%Vgbzah=d4+?J4DZ_oa7=wE*;x0CaYuRdtBdq0nFdX*c@% zqngu`C+*408A)2(u8~)$!i)l!PuzQlLTj-Ghzfw~QOBn}D~L>ME zFFOi42cW*H3U!%E5dtL(KsiCYA81_LKmL7hE{j`tzJR~{$j2~o(nR6^ z7yIG@KtiB9MUw@fdVxa+_oAWU2<}?D7cK1+GIbSCAqpo3szT5mT3=VG##sVwdHL@{ zg|U!1lLffo<0dmHRN^Cbc(S`+r5-5es@{t~40xZ1q<#1hUn6&z_k>(CmX^0+Y$yN~ zs4Oo>Mx6;p4RU$3hqH~F@YAX1mOO=e~6>6{1U19w_ww*Iy5x)nIXIec!X&khI%{0%Od6TwxRf@CoPX zHVKXIt#oC( zfA%v`lrI|Pk_*(@iiZ8$v31>lp}%Y?e*OFB(3_qRQy3F*teopqcw3;##Y?CuqqG*d zcT-Y|p|v}Ime3I|U$MK1Ly!mqjpgi~* zN#^r_>rdk4$g-b3Kf4ceDuFRIG6YJ;qLKv=2V$htu^~{&HWGhYDCk^(5B<;2@z1yX z8%B*Ci+Ky@iDH@vE2^DeUu^+>cl$4XfqTCFkGS}{58`dtT_=+3N=r*b@eQRz&}P_< z?c4FApWcDW@h2zvGMq8;(b^UQ^C?bA`Dj=it^FZZJ)L~xM}y-&L zC=v*tKCpGH{A7QZKnJcMt2`=3x*StTmPjvhIJht{se%R3KaUrW7})9>g)M!!PvXs(GrDBEB) zx?95&mTk+->kjh6Xj>)DkEZ6qtuv5RGEY@^ExX{8>N|GNuU%}Ct)5Y#Dl~PWgDvwCzg))({N%cF$`@et7EqHp(8caX52N}vW z%H^=Hs~1~KEAW{wei6%8t^}n+&}P`}zx*Y}jGvCjo^2OLCYc>-LkYtYakMs~okVLh zqM-oa^c*~`{oaVZwi+Ug%P#m-Oi{dIvXIxD#;W0S`E`sjEwke4Uw16`J~?sI49RC^ znIH@!j6Bz+6n$8Ry_ix%n_#jKrpDR?GrPcrM1bzw{vu|-sMl# zBp?pM`1`MZ4YTLW#^#^?5Tkp$LGhhKQ)grTnP*|bgo!x!ywzeMOcvnhKl>SG%wB*8 z*EOQIUt}gFygamylq*K^RE$22Bac>AR;wL9t@FFDE}vh?Ex5QZ5``NiuwBbL|bm)0xYu|!rH*d!1u@mse z#~RQfN+VsmXxG!?$e7$7A5FP?l0+NLl)Q7aPk4q(>$pX+_9VD#ZTLqCfX_hc8|XK= z)y?bt&H26biw=9~Yx6NE{qD1y?sxjLy)H25j>2d!wfVL;hfyOdiTG3s*@NY@3#{t^ zDrgfdqXZx=Pm6S-J#iMHyT1>=Y;3@LuenB4j!|nv&G6js4+YB88j-Wv?p?ctrk^rx z8pe+wFT$XEU;YzbSpT0WpY%a&-L_5i4*LBg`_S4!^z$(YXF5(3j&Ht3b7}3vBj+Vf zA9~L}yF!)dM>+TMvGh2F&{|((!nDD%3uz7DO0zqOLbNYurnt%Q?+dv`TNalf?)NTn z;{>oc7)RyWaYpG8Q3_dKsY)T01(1j0$t5t?_CA52-yeBpJ6dPY5ZZd;*L3A&>y90kFzk%7wue43od@UK3}2;uupt&4_?Ap5Rj+#Eb&&55C4B zrBGqBp_-U&!qQBu$O0W*S%un)N?8X$X%Li?A2}0@r+nLj@lOvwi1Xg{E}XpdWXzmB zGu#0dPgJ=-`MSf!k&^^~(jmmDk*%%xw_9$(8OxW81N82Dd=CyB?s4?LPZ7l_Jw}_@ zh64GtcLJ@Y9rXAEgM={-NnVcwYlCGMewqn@WLUewgw&dnNc_Ag6LF20?Xc4jXIxEa z6E1ZR%BEUc^9(Nad{!Dpd()0kNG^#BqcnO(5JP5*I0ed`3C9R9Bin#Q6+N;NjP?M^ zGpJN9kgf!?qs>~d4KtDU?;FVC=7;achd%QeOq?`HWPs}K(Awv>dI~X5+?u(wKG64y zZWFW{+}$nC5ctv;zJMD(@BuV5G~kh^_u!>Hot_b+cx27$oCB?8x`#Z7Ld{VNtrZtx z0cD0qDdh4#IfW#PolI-H(8gAH#lo0M2?6-jnji>-1+WjwHkpXhsS*FBUCXD9Rlr&TVGk)*!AwkZUo>0*I3%ySlJx(M~ghNqYcP3rvMDrK%J%Cc5tK32bjXg0(#zc>nd+i=&Rn0!XbWwFR;!{gR*s{ zn60_<@tj}5#H}^7g>m8F8@1uRHwUL(@~KtXY(Q>Mk!iE}{A%Ai!GDikXw4^(WG-EJ zeQ3((nPM>hNmZ9O`0c^PY?I@{PhG%w6#uZmwAy14sbO<|M*@r(o(U{O}? zGKphM=`Ha8D-6W%QWcfPT?nlsFp>a#ZdEp$UE{CXaT&yAGB-No0+Dn-2ZoQ!!)`WX z4IRdi?brkTFqWVnD|6d1uDTYZtE(`I_5f5N3<&`B0MhM&<3gYMA@}XtjwSDSyEs^n zTB?s4Et_D)ZFu=Lp83`l09pgIx9mXEhCZE2zQHS_>bq81(U!Pbuc(4HtI(EHhRrm0B%EIpw0yvUCVng89Vav_(E^ zP>gmiWUMHR@*7ve`Ev^y*IZwj?ZWA)J)#hXnqko{u&4ztEk!9Sg>*xp+9L3LmEY{% zfeWvGzes&vxMZPdp%~}iYr!bS6{2e?SBPAp|Gxcpyy5J#MQNn247=;0gXrohB$S*) zYkhw{O`A`A^ZgzN1E;wwc$)6T!MNd1-;qw}vWq{xCdkQ!un7}8fN+81O-DmFnjt14 zoa#59b#%>~xW=OehUK8_!eJaW(1K+phhzv;v_m8Tkh{QI03xLH@Wwzchac~H8SneR z2aw5RgaEi_3FKpme7}G;rtlF6X50zfB4Q#;)!w{kXs`qOH$AL-<-W9!IQu6C^FyTcKiD4j83!FVYGWx zl(^=nUnz^xcbKNUZX{ux)UzM6OIn5Y*S&yb1V{;hr&!%)W(nOdH$07*tIok`r=O0R zx?0SbHKP!oFZvpCfj;@skK!vg-z+x8bXqi}ORV48h&_jCH$-FH))+P(jk>gVdi3|c zL#egW;(Wu`99n5>?r;T#(|Twy$|vY`q+WJw4mH&+xgfZC!ympS1%O_sUQFu%UJfF^ zk2WwelX1gW?(!*aiL9p>m3OtR#P$)4zT$SlwK35;FD|T{oBS{uq1G@>>fDZLC0(iv zQo28)8CGd2N>cJL4A-){T-!G=fPa1bAzX3w`!QweG|<_=lcr3{%iM95U`f#;DulW5 zum2i1fBoyCMGAe^R$$wXX6$I7mW*0)NUXYT4mqtgkVD0znJibFMt#{lVmQMz?9#N> z_ea&{U|@XakKYc}y@2twi$Av}3#`(Cs{HxcHXWmlaHD|AJ8bqhq=*WijXX&*e{agX zJf#S3+(#Q0e!qloeCt+BO!o-)M^u3+|DU?SQ7L30ua>S(+`4%^uK(C4MCoH~T@5mo z72;GGdeN>eg(~OFof~e9aSXXoNeo1>NZ(Or=#H0O!s-hy5NXl6S#DEfBVO6pik*iu z)}8tB7)L*!E9SeFt2d)6xJTf#?R<741!E8dH?RN0w{Ft7mI83e=T_x%Q2PNI)daXS zPtk-qt|K&ASVo=@?WE#pPEMDdTpQt%USH2w{eyr}45MLWu30XN`lgK-lj;%7FT$T? zvJRO1f4&F6G372r_8n`+gZua3eb-(qqBK;r{?J2fuJvn##vC}*Axa}{@1NT*mwue? zaiY%g=EtLbr*G}S#Xaf|*y^fS81)>qD`sGP)p$n*fPOyp;?L*Id9M0_+Mi;F*YN`m z;*PaZ4wamQqam!1uJ&-RWo}lj;+pPmusuN*iEQ z1Vg=mXp29;4cNSIFFHomVC7k7Av=&2Y0!84_BSZowL>)3>K_=up1vGrEnS9l&N)XM zqnh+`-8X*i+BIwN#N&_SeOJF9Rh3o33Q#hfXqMH|i=(|$k)uNf#Y>G;EFOJ2FA0yF zzs0?U(At@$7e+@x#u=c9xs(M!&;0RQA@wXWo_5LS*W`F+sDQ;Mxf}q#z0E6()X?G& z*NqAhdTf4E!vlF@A-cWwBL4eAdI;7K_6#4MT;8pYQXzvuE(2B|oQmM2^ z3Z%_161;3Kivg5*cKTg$%TMdV@fd|s_Ipw|i>0+sOZlt=hu!AKSQteC8o58;6z-1} z$?$sN27$Xl{1O*AKC$zu2nWzuhIK)59f~*;ngpXuU?0*vnknx&Vw@lzZ0xDHFpl*h)-n+_cT2ago{|GioK8h;_iN}qP==hr|a$mwla#|Y_!H7-Iz9KFUW z<|(Qg$a;p-?bcX2D&iSi5WZL#<6INJ+b0bT3ARG2wm*q5GFV3n#<28GJghx(( zEzIg~I7j_`Wbabm?02)H2s|Dz>ZiIe>CY7R_b`8~3q(JhcFC7kA)q<|ewn*6@G*O+ z`eN!(`R{Rzm~UL}wD2+F?(@MN_iTHm5-%#p3q~KO4HZV$3>Qk*I6QJE&4)4fzG7+S zD3j2mC=hO;{l5{0KHaCs(pXplq@)!HU!3r^$7fVSu@iI|I?jp|`u%Xg7-tP!kKDcP z|G^lqG(48a->sp*DzP}eVQxu~i`D*#7C?h~+NED`#Edh&PZM#Uh}%kaZRj?*=Z58D zIBw^XtP)3xE1J0`)-!ps~FdrUW@@QOhoU3(}Wu*(Tg8v_Z(RD#R1ySqo z{ie&17NaHpNLNZ%h&IQPG@naMmqFcyg3F|g3FD43vXbbM7|PWOuGVp_0~Y|Fka>hW zcA4XwXPh-mV$_jcHx3s#6Q6-#SIyU6f9_jw4kPH=rVSLC%=XT0%CH)W}FM0k<_ z1Js&??)uCY!+gGCE$hrW;qYX0Sey|s|3TTN<3K?$YGDqmj|>WA&}k?z>b5QJ0nf$4 zsG`>vj1sQF!e}49r{-xLLd^;ZHp_ipA{gaA=PQ9^+w@wl_bF?%Z-YtX+TaKdvr>vGck> zdXUpD|I#XCvBo@1r#_n@Og|h>e1lN4L0~h73xpiUPNkNk*zI}kZ8VwbDDTzmUO0># z(Jtb+6J(sEk%p0;WN^R_obacjM%|T>!=vmHC+SuUj8T>x2^gRL{Wl8c>w+&7R^ak4 ztqQU_SuWNQj>$SKCKP6*zOc22Yh}1iihHi>6DPsv8$S+4pIt0u{p9n-`B;2+I!?E_ zG${neI7?Uvev+){YXf60h1Kit{>Iuuw7;fmq1TG*q!8#vTCQW^iwg1KU8EX)njZ)s zaW#YZgwaPFe!a`6KB3|Ifk$BqA#Ne}=7-Uol2a%ilN6IH$ioApzj`o<*7=mDE%;{U zaWs(g2#~vZT}-?`iDLPA&$)sY#jmCanRbd|K1vwuW{#}Ii4S-ml6*qtBb=*M^B|SO z$YakTygqFi$1sD1F$vZBv=ooEh@^wWX?m{Hl3?^Hj(mcnU>C5^wX8r&Jl0JI83`CU z47SC76?;W9|DY^@CgB;E|J6;o97TqlYDvyVu98i{i5OU=Gz{xO+0M2-mqS+pyZr9^ z%+oG%YUvp3MX*Dlb$FLw8!BK{0ORszK`^?^$5KO*4xtvf7~zAmLz(von3$UbyVsbT zW2;nlrj@=Mq=K8*-Tn98o!)%fo!h{C*G7I1g+Lh~J3++tseP2xL#kOviY}5|8-1^b zqs3QA7AFpte5P4egxOVKKB;z5RSb+AC$0wZN+f$&K0LbGiNiTeFlwQSv_LPE*2Te? z3sS4s-~D$5`}{6th9m$qm{=3!+LOdfye@SwKd@|`%w?0$jW1gYF$W^m{Yy<7c z!x+U(w7B2zo5u-QoT(W+9-}b&%wN9X2!FoKJ-HxP)PgsOn~K){?hU73_T{j<9B&V9 zR}4!8{NM7fW;b#W29xYNRlRlgK95v2>Zwn(_v~$@eWp$tFoq9fAb*pN)M`~_D*_+j zKOAh+-%2)W+#s4RwbQ~_(u^^v5x9L^Jn6mXJ|iB&#=mupIiuAvlB+b=MK~vkk(o5M zkr>GxZ2Q&Lv5b*38DZYixVAFDMZ?JHfVW|cnD=6w#;N=DzDM#)F|eBfYzNjPnxnr5 z8R68HjGB~*q(x8KM=>E0s%@mES?ZcZm8_X{_z7tVM$L<_jS=y-=l+8*c4o7^e^(8_ zof8w7A-&`$H)vU*?D{tVme)R6s-w;Gi+R`0i~>eQCj|NHmI|0P;c?}>ad;7Gz?`MC z!2@dvqa?GndtH*nt_0Tae>?2`Qy3s+gl-6jQ7*n62-UkzGu{v?3S|Ywt6`2XmAUwGecJ!9IvP>^XpzX;F^Cn9N&X#EXFr3J8I%7;D}!W=h;EdC096 z%3gqx@Asf3>&KnUZT$b|W6{-ywWbV`(AsyK?Vql%-ZjM~nD7-lbe=6Dy)J>PA>YLv zv(K3H38fgDS9ZKW^-b*5fHB%F#7RB80sTnRJ4@a0uGf`Fcv&VbB?NU z&cgbBwA7cBw2&CKHzP)nOn}5wvSD#C<-%$Vp{U>Nu+0p?ZCm{!1Jzus%rLV5);KhN z{H-zl8jP*?moRN>9a}EunhRX2ZMi<~s6N^cTlXY<9CbTouY5Dr2&GNcBuL4=S)w5t z1f0QG!gNPqlv^Nekd}L}c8Hf65dSY3phS?GoYV-v#4PLAajsEu8sUEn1Mr~C2(#5a z$jn0MBcUZkLP(5Ii_ZHSJMiwn%s}(Ucu~ zFGfv6q7d1G5$7F~8I!4Vj>Om4b)_6Xw)xZb&7Tu)Lt4a|je_j9HxM2XHV4UYjp9g{ zX^97Fo1Pi5Ed`r!K!$f|h5#Ab_(#EL55B=YTEK`bnmcHvV7ccy#xL_6?9zALI7c3x zV&>E+7WLn;l)a%hs~LKCM(SQ}let)ec4UVIGu$%}X)=S@o`{|D#l#;UPvD9-Q-l`E zQ5q*+cOd5qUVXr#&OR4S$YT`G*o>FP_Q`Z+0)!m3C)0})0y61xQbutDp%)lM-IgCjFS z8J`m{Iy8I-F$kIxMxG&HOg}!3Y%)$$|F<_ccSq-p!|Vom>t6W+%gJ7kD^O)a00000 LNkvXXu0mjfw1fJ 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 Nt$FWGg}QCn{{X0@xa|M{ literal 189032 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

      < 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 eko^3%`~L%Qw1fJ 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 FV1oG6@xuTB diff --git a/apps/frontend/src/api/index.ts b/apps/frontend/src/api/index.ts index 5e18d854..9939fb7c 100644 --- a/apps/frontend/src/api/index.ts +++ b/apps/frontend/src/api/index.ts @@ -1,4 +1,4 @@ -import { OpenAPI, CreateSessionResponse } from '@attraccess/react-query-client'; +import { OpenAPI, CreateSessionResponse } from '@fabaccess/react-query-client'; function getInferredApiUrl() { const frontendUrl = new URL(window.location.href); @@ -12,7 +12,7 @@ function getInferredApiUrl() { } export function getBaseUrl() { - return import.meta.env.VITE_ATTRACCESS_URL || getInferredApiUrl(); + return import.meta.env.VITE_FABACCESS_URL || getInferredApiUrl(); } const setupApiParameters = () => { diff --git a/apps/frontend/src/app/account-settings/index.tsx b/apps/frontend/src/app/account-settings/index.tsx index 47853fbd..f79207c9 100644 --- a/apps/frontend/src/app/account-settings/index.tsx +++ b/apps/frontend/src/app/account-settings/index.tsx @@ -1,17 +1,10 @@ import React, { useState } from 'react'; import { PageHeader } from '../../components/pageHeader'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; -import { - Card, - CardBody, - CardHeader, - Input, - Button, - Alert, -} from '@heroui/react'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; +import { Card, CardBody, CardHeader, Input, Button, Alert } from '@heroui/react'; import { UserCog, Mail } from 'lucide-react'; import { useAuth } from '../../hooks/useAuth'; -import { useUsersServiceRequestEmailChange } from '@attraccess/react-query-client'; +import { useUsersServiceRequestEmailChange } from '@fabaccess/react-query-client'; import * as en from './en.json'; import * as de from './de.json'; @@ -32,7 +25,7 @@ export const AccountSettingsPage: React.FC = () => { const handleEmailChangeRequest = async (e: React.FormEvent) => { e.preventDefault(); if (!newEmail.trim()) return; - + await requestEmailChange.mutateAsync({ requestBody: { newEmail }, }); @@ -110,4 +103,4 @@ export const AccountSettingsPage: React.FC = () => { ); -}; \ No newline at end of file +}; diff --git a/apps/frontend/src/app/app.tsx b/apps/frontend/src/app/app.tsx index 56e14ca8..a2a87706 100644 --- a/apps/frontend/src/app/app.tsx +++ b/apps/frontend/src/app/app.tsx @@ -8,11 +8,11 @@ import { useAllRoutes } from './routes'; import { VerifyEmail } from './verifyEmail'; import { ToastProvider } from '../components/toastProvider'; import { HeroUIProvider, Spinner } from '@heroui/react'; -import { SystemPermissions } from '@attraccess/react-query-client'; -import { RouteConfig } from '@attraccess/plugins-frontend-sdk'; +import { SystemPermissions } from '@fabaccess/react-query-client'; +import { RouteConfig } from '@fabaccess/plugins-frontend-sdk'; import PullToRefresh from 'react-simple-pull-to-refresh'; import { useQueryClient } from '@tanstack/react-query'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import de from './app.de.json'; import en from './app.en.json'; import { ResetPassword } from './reset-password/resetPassword'; diff --git a/apps/frontend/src/app/confirm-email-change/index.tsx b/apps/frontend/src/app/confirm-email-change/index.tsx index 89201d86..e72627a7 100644 --- a/apps/frontend/src/app/confirm-email-change/index.tsx +++ b/apps/frontend/src/app/confirm-email-change/index.tsx @@ -1,9 +1,9 @@ import { useCallback, useEffect, useMemo, useState } from 'react'; import { useSearchParams, useNavigate } from 'react-router-dom'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { Card, CardBody, CardHeader, Button, Alert } from '@heroui/react'; import { CheckCircle, AlertCircle } from 'lucide-react'; -import { useUsersServiceConfirmEmailChange } from '@attraccess/react-query-client'; +import { useUsersServiceConfirmEmailChange } from '@fabaccess/react-query-client'; import * as en from './en.json'; import * as de from './de.json'; diff --git a/apps/frontend/src/app/csv-export/csv-export.tsx b/apps/frontend/src/app/csv-export/csv-export.tsx index 65780ba4..eb2db2b7 100644 --- a/apps/frontend/src/app/csv-export/csv-export.tsx +++ b/apps/frontend/src/app/csv-export/csv-export.tsx @@ -1,4 +1,4 @@ -import { useDateTimeFormatter, useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useDateTimeFormatter, useTranslations } from '@fabaccess/plugins-frontend-ui'; import { Button, Card, @@ -82,7 +82,13 @@ export function CsvExport() { - setShowExport(false)} scrollBehavior="inside" size="5xl" data-cy="csv-export-modal"> + setShowExport(false)} + scrollBehavior="inside" + size="5xl" + data-cy="csv-export-modal" + >

        diff --git a/apps/frontend/src/app/csv-export/resource-usage/resourceUsageExport.tsx b/apps/frontend/src/app/csv-export/resource-usage/resourceUsageExport.tsx index 529ca3ad..1d8e5406 100644 --- a/apps/frontend/src/app/csv-export/resource-usage/resourceUsageExport.tsx +++ b/apps/frontend/src/app/csv-export/resource-usage/resourceUsageExport.tsx @@ -1,7 +1,7 @@ import { ResourceUsage, useAnalyticsServiceAnalyticsControllerGetResourceUsageHoursInDateRange, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { ExportProps } from '../export-props'; import { Table, @@ -23,7 +23,7 @@ import { useDateTimeFormatter, useNumberFormatter, useTranslations, -} from '@attraccess/plugins-frontend-ui'; +} from '@fabaccess/plugins-frontend-ui'; import { nanoid } from 'nanoid'; import { RotateCwIcon } from 'lucide-react'; import { useReactQueryStatusToHeroUiTableLoadingState } from '../../../hooks/useReactQueryStatusToHeroUiTableLoadingState'; diff --git a/apps/frontend/src/app/dependencies/index.tsx b/apps/frontend/src/app/dependencies/index.tsx index 54037926..71bedd8b 100644 --- a/apps/frontend/src/app/dependencies/index.tsx +++ b/apps/frontend/src/app/dependencies/index.tsx @@ -1,4 +1,4 @@ -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import de from './de.json'; import en from './en.json'; diff --git a/apps/frontend/src/app/email-templates/EditEmailTemplatePage.tsx b/apps/frontend/src/app/email-templates/EditEmailTemplatePage.tsx index 67c27838..d955082c 100644 --- a/apps/frontend/src/app/email-templates/EditEmailTemplatePage.tsx +++ b/apps/frontend/src/app/email-templates/EditEmailTemplatePage.tsx @@ -4,7 +4,7 @@ import { useEmailTemplatesServiceEmailTemplateControllerFindOne as useFindOneEmailTemplate, useEmailTemplatesServiceEmailTemplateControllerUpdate as useUpdateEmailTemplate, useEmailTemplatesServiceEmailTemplateControllerPreviewMjml, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { Button, Card, @@ -19,7 +19,7 @@ import { ModalFooter, Link, } from '@heroui/react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { PageHeader } from '../../components/pageHeader'; import Editor from '@monaco-editor/react'; diff --git a/apps/frontend/src/app/email-templates/EmailTemplatesPage.tsx b/apps/frontend/src/app/email-templates/EmailTemplatesPage.tsx index d6dd6af9..538a7cfd 100644 --- a/apps/frontend/src/app/email-templates/EmailTemplatesPage.tsx +++ b/apps/frontend/src/app/email-templates/EmailTemplatesPage.tsx @@ -1,7 +1,7 @@ -import { useEmailTemplatesServiceEmailTemplateControllerFindAll } from '@attraccess/react-query-client'; +import { useEmailTemplatesServiceEmailTemplateControllerFindAll } from '@fabaccess/react-query-client'; import { Table, TableHeader, TableColumn, TableBody, TableRow, TableCell, Button, Chip } from '@heroui/react'; import { Edit3, Mail } from 'lucide-react'; // Mail for PageHeader icon -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { PageHeader } from '../../components/pageHeader'; // Assuming PageHeader exists import { Link } from 'react-router-dom'; // For edit button link import { TableDataLoadingIndicator } from '../../components/tableComponents'; diff --git a/apps/frontend/src/app/fabreader/FabreaderEditor/FabreaderEditor.tsx b/apps/frontend/src/app/fabreader/FabreaderEditor/FabreaderEditor.tsx index c8536b90..79d026d6 100644 --- a/apps/frontend/src/app/fabreader/FabreaderEditor/FabreaderEditor.tsx +++ b/apps/frontend/src/app/fabreader/FabreaderEditor/FabreaderEditor.tsx @@ -1,4 +1,4 @@ -import { useTranslations, ResourceSelector } from '@attraccess/plugins-frontend-ui'; +import { useTranslations, ResourceSelector } from '@fabaccess/plugins-frontend-ui'; import de from './fabreader-editor.de.json'; import en from './fabreader-editor.en.json'; import { Button, Form, ModalBody, Modal, ModalContent, ModalHeader, ModalFooter } from '@heroui/react'; @@ -9,7 +9,7 @@ import { useFabReaderServiceGetReaderById, useFabReaderServiceGetReadersKey, useFabReaderServiceUpdateReader, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useToastMessage } from '../../../components/toastProvider'; interface Props { diff --git a/apps/frontend/src/app/fabreader/FabreaderFlashButton/FabreaderFlashButton.tsx b/apps/frontend/src/app/fabreader/FabreaderFlashButton/FabreaderFlashButton.tsx index edd34a6f..c2c3deaa 100644 --- a/apps/frontend/src/app/fabreader/FabreaderFlashButton/FabreaderFlashButton.tsx +++ b/apps/frontend/src/app/fabreader/FabreaderFlashButton/FabreaderFlashButton.tsx @@ -1,5 +1,5 @@ import { Button, ButtonProps } from '@heroui/react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import 'esp-web-tools'; import de from './FabreaderFlashButton.de.json'; import en from './FabreaderFlashButton.en.json'; diff --git a/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.de.json b/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.de.json index 3d2ad0d6..e3c3f602 100644 --- a/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.de.json +++ b/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.de.json @@ -1,13 +1,13 @@ { "page": { - "title": "FabReader", + "title": "FABReader", "actions": { - "openFlasher": "FabReader flasher" + "openFlasher": "Fabreader flasher" } }, - "workInProgress": "Dieses Feature ist noch in Arbeit, Benutzung auf eigene Gefahr!", + "workInProgress": "Dieses Feature ist noch in Arbeit, benutzung auf eigene Gefahr!", "error": { - "fetchReaders": "FabReader konnten nicht abgerufen werden" + "fetchReaders": "FABReader konnten nicht abgerufen werden" }, "table": { "columns": { @@ -16,7 +16,7 @@ "connected": "Status", "actions": "Aktionen" }, - "noData": "Keine FabReader gefunden", + "noData": "Keine FABReader gefunden", "actions": { "editReader": "Bearbeiten" } diff --git a/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.en.json b/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.en.json index dc57f3df..3048d49f 100644 --- a/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.en.json +++ b/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.en.json @@ -1,13 +1,13 @@ { "page": { - "title": "FabReaders", + "title": "FABreaders", "actions": { - "openFlasher": "FabReader flasher" + "openFlasher": "FABreader flasher" } }, "workInProgress": "This feature is still in development, use at your own risk!", "error": { - "fetchReaders": "Could not fetch FabReaders" + "fetchReaders": "Could not fetch FABreaders" }, "table": { "columns": { @@ -16,7 +16,7 @@ "connected": "Status", "actions": "Actions" }, - "noData": "No FabReaders found", + "noData": "No FABreaders found", "actions": { "editReader": "Edit" } diff --git a/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.tsx b/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.tsx index 6fe41123..0237afdf 100644 --- a/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.tsx +++ b/apps/frontend/src/app/fabreader/FabreaderList/FabreaderList.tsx @@ -3,9 +3,9 @@ import { Alert, Button, Chip, Table, TableBody, TableCell, TableColumn, TableHea import { Cloud, CloudOff, CpuIcon } from 'lucide-react'; import { TableDataLoadingIndicator } from '../../../components/tableComponents'; import { EmptyState } from '../../../components/emptyState'; -import { useDateTimeFormatter, useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useDateTimeFormatter, useTranslations } from '@fabaccess/plugins-frontend-ui'; import { FabreaderEditor } from '../FabreaderEditor/FabreaderEditor'; -import { useFabReaderServiceGetReaders } from '@attraccess/react-query-client'; +import { useFabReaderServiceGetReaders } from '@fabaccess/react-query-client'; import { useToastMessage } from '../../../components/toastProvider'; import { PageHeader } from '../../../components/pageHeader'; import { FabreaderFlasher } from '../FabreaderFlasher/FabreaderFlasher'; @@ -76,7 +76,7 @@ export const FabreaderList = () => { onSave={() => setOpenedReaderEditor(null)} /> -

        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 Nt$FWGg}QCn{{X0@xa|M{ literal 46005 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

      *dz`fBhD(rm(vc#1@cfZ0vw1)HSa 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 Nt$FWGg}QCn{{X0@xa|M{ literal 192185 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%0D)LU1U(b;cxK{kjU!Pv+e!kbA&!Rz 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≀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�M=#SGK>OF~wv(2} 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 Qxc~qF07*qoM6N<$g6scaK>z>% diff --git a/apps/frontend/public/icon-512.png b/apps/frontend/public/icon-512.png index 9b90163ff5a37800212a2484863bfbdc75c22e02..4e802937df6def13d7192b324717df1431e5de42 100644 GIT binary patch literal 40120 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

+
{t('table.columns.name')} {t('table.columns.lastConnection')} diff --git a/apps/frontend/src/app/fabreader/FabreaderSelect/FabreaderSelect.tsx b/apps/frontend/src/app/fabreader/FabreaderSelect/FabreaderSelect.tsx index f8b8ba98..47fe1981 100644 --- a/apps/frontend/src/app/fabreader/FabreaderSelect/FabreaderSelect.tsx +++ b/apps/frontend/src/app/fabreader/FabreaderSelect/FabreaderSelect.tsx @@ -1,4 +1,4 @@ -import { useFabReaderServiceGetReaders } from '@attraccess/react-query-client'; +import { useFabReaderServiceGetReaders } from '@fabaccess/react-query-client'; import { Select, SelectItem } from '@heroui/react'; import { useCallback, useEffect, useState } from 'react'; diff --git a/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.de.json b/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.de.json index 4182c290..fa2d47d3 100644 --- a/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.de.json +++ b/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.de.json @@ -16,8 +16,8 @@ "deleteModal": { "title": "NFC-Karte löschen", "description": "Sie sind dabei, die NFC-Karte mit der ID {{id}} zu löschen. Diese Aktion kann nicht rückgängig gemacht werden.", - "readerLabel": "FabReader auswählen", - "readerPlaceholder": "Wählen Sie einen FabReader aus", + "readerLabel": "FABReader auswählen", + "readerPlaceholder": "Wählen Sie einen FABReader aus", "cancel": "Abbrechen", "delete": "Löschen" } @@ -25,9 +25,9 @@ "enroll": "NFC-Karte registrieren", "enrollModal": { "title": "NFC-Karte registrieren", - "description": "Um eine neue NFC-Karte zu registrieren, wählen Sie einen verbundenen FabReader aus der Liste unten aus. Klicken Sie dann auf die Schaltfläche \"Neue NFC-Karte registrieren\" und folgen dann den Anweisungen auf dem FabReader.", - "readerLabel": "FabReader auswählen", - "readerPlaceholder": "Wählen Sie einen FabReader aus", + "description": "Um eine neue NFC-Karte zu registrieren, wählen Sie einen verbundenen FABReader aus der Liste unten aus. Klicken Sie dann auf die Schaltfläche \"Neue NFC-Karte registrieren\" und folgen dann den Anweisungen auf dem FABReader.", + "readerLabel": "FABReader auswählen", + "readerPlaceholder": "Wählen Sie einen FABReader aus", "cancel": "Abbrechen", "enroll": "Registrieren" } diff --git a/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.en.json b/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.en.json index 150d2632..835c2e57 100644 --- a/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.en.json +++ b/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.en.json @@ -16,8 +16,8 @@ "deleteModal": { "title": "Delete NFC Card", "description": "You are about to delete the NFC Card with the ID {{id}}. This action cannot be undone.", - "readerLabel": "Select FabReader", - "readerPlaceholder": "Select a FabReader", + "readerLabel": "Select FABreader", + "readerPlaceholder": "Select a FABreader", "cancel": "Cancel", "delete": "Delete" } @@ -25,10 +25,10 @@ "enroll": "Enroll NFC Card", "enrollModal": { "title": "Enroll NFC Card", - "description": "To enroll a new NFC Card, choose a connected FabReader in the list below. Then click on the button \"Enroll new NFC Card\" and follow the instructions on the FabReader.", - "readerLabel": "Select FabReader", - "readerPlaceholder": "Select a FabReader", + "description": "To enroll a new NFC Card, choose a connected FABreader in the list below. Then click on the button \"Enroll new NFC Card\" and follow the instructions on the FABreader.", + "readerLabel": "Select FABreader", + "readerPlaceholder": "Select a FABreader", "cancel": "Cancel", "enroll": "Enroll" } -} +} \ No newline at end of file diff --git a/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.tsx b/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.tsx index 343bf767..b6a267e3 100644 --- a/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.tsx +++ b/apps/frontend/src/app/fabreader/NfcCardList/NfcCardList.tsx @@ -17,14 +17,14 @@ import { Card, } from '@heroui/react'; import { useCallback, useEffect, useMemo, useState } from 'react'; -import { AttraccessUser, useTranslations } from '@attraccess/plugins-frontend-ui'; +import { FabAccessUser, useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useFabReaderServiceGetAllCards, useFabReaderServiceResetNfcCard, NFCCard, useFabReaderServiceEnrollNfcCard, useUsersServiceGetOneUserById, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { FabreaderSelect } from '../FabreaderSelect/FabreaderSelect'; import { useToastMessage } from '../../../components/toastProvider'; import { useAuth } from '../../../hooks/useAuth'; @@ -105,7 +105,7 @@ const NfcCardTableCell = (props: NfcCardTableCellProps) => { }); if (props.header === 'userId') { - return ; + return ; } if (props.header === 'actions') { diff --git a/apps/frontend/src/app/layout/sidebar.tsx b/apps/frontend/src/app/layout/sidebar.tsx index 8f62ceb6..435aa8c8 100644 --- a/apps/frontend/src/app/layout/sidebar.tsx +++ b/apps/frontend/src/app/layout/sidebar.tsx @@ -1,7 +1,7 @@ import React, { useCallback, useMemo } from 'react'; import { X, Settings, LogOut, User, ExternalLink, UserCog } from 'lucide-react'; import { useAuth } from '../../hooks/useAuth'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { Button, Dropdown, @@ -14,7 +14,7 @@ import { LinkProps, } from '@heroui/react'; import { useAllRoutes } from '../routes'; -import { SystemPermissions } from '@attraccess/react-query-client'; +import { SystemPermissions } from '@fabaccess/react-query-client'; import de from './sidebar.de.json'; import en from './sidebar.en.json'; import { Logo } from '../../components/logo'; diff --git a/apps/frontend/src/app/layout/sidebarItems.tsx b/apps/frontend/src/app/layout/sidebarItems.tsx index 17922fc4..55cbe161 100644 --- a/apps/frontend/src/app/layout/sidebarItems.tsx +++ b/apps/frontend/src/app/layout/sidebarItems.tsx @@ -108,7 +108,7 @@ export const useSidebarEndItems = () => { const reportBugUrl = newGithubIssueUrl({ user: 'FabInfra', - repo: 'Attraccess', + repo: 'FabAccess', title: '[Bug] ', labels: ['bug'], body: ` @@ -129,7 +129,7 @@ export const useSidebarEndItems = () => { const requestFeatureUrl = newGithubIssueUrl({ user: 'FabInfra', - repo: 'Attraccess', + repo: 'FabAccess', title: '[Feature Request] ', labels: ['enhancement'], body: ` diff --git a/apps/frontend/src/app/mqtt/MqttServersPage.tsx b/apps/frontend/src/app/mqtt/MqttServersPage.tsx index 287fae0d..2b5c04e1 100644 --- a/apps/frontend/src/app/mqtt/MqttServersPage.tsx +++ b/apps/frontend/src/app/mqtt/MqttServersPage.tsx @@ -1,4 +1,4 @@ -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { Button, Card, CardHeader } from '@heroui/react'; import { Navigate, useNavigate } from 'react-router-dom'; import { Plus } from 'lucide-react'; @@ -29,7 +29,12 @@ export function MqttServersPage() {

{t('title')}

-
diff --git a/apps/frontend/src/app/mqtt/servers/CreateMqttServerPage.tsx b/apps/frontend/src/app/mqtt/servers/CreateMqttServerPage.tsx index 54bd2754..672f1721 100644 --- a/apps/frontend/src/app/mqtt/servers/CreateMqttServerPage.tsx +++ b/apps/frontend/src/app/mqtt/servers/CreateMqttServerPage.tsx @@ -1,4 +1,4 @@ -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { Button, Card, CardHeader, Input, Checkbox, Form } from '@heroui/react'; import { ArrowLeft } from 'lucide-react'; import { PasswordInput } from '../../../components/PasswordInput'; @@ -12,7 +12,7 @@ import { CreateMqttServerDto, UseMqttServiceMqttServersGetAllKeyFn, MqttServer, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useQueryClient } from '@tanstack/react-query'; interface CreateMqttServerPageProps { diff --git a/apps/frontend/src/app/mqtt/servers/EditMqttServerPage.tsx b/apps/frontend/src/app/mqtt/servers/EditMqttServerPage.tsx index 79d8a938..bcda8cda 100644 --- a/apps/frontend/src/app/mqtt/servers/EditMqttServerPage.tsx +++ b/apps/frontend/src/app/mqtt/servers/EditMqttServerPage.tsx @@ -1,4 +1,4 @@ -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { Button, Card, CardHeader, Input, Checkbox, Spinner } from '@heroui/react'; import { ArrowLeft } from 'lucide-react'; import { PasswordInput } from '../../../components/PasswordInput'; @@ -12,7 +12,7 @@ import { useMqttServiceMqttServersGetOneById, CreateMqttServerDto, UseMqttServiceMqttServersGetAllKeyFn, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useQueryClient } from '@tanstack/react-query'; export function EditMqttServerPage() { diff --git a/apps/frontend/src/app/mqtt/servers/MqttServerList.tsx b/apps/frontend/src/app/mqtt/servers/MqttServerList.tsx index 53a37388..31481d96 100644 --- a/apps/frontend/src/app/mqtt/servers/MqttServerList.tsx +++ b/apps/frontend/src/app/mqtt/servers/MqttServerList.tsx @@ -1,4 +1,4 @@ -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { Button, Spinner, @@ -19,7 +19,7 @@ import { useMqttServiceMqttServersGetAll, useMqttServiceMqttServersDeleteOne, UseMqttServiceMqttServersGetAllKeyFn, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useQueryClient } from '@tanstack/react-query'; // Define ServerListItem component inline diff --git a/apps/frontend/src/app/mqtt/servers/translations/create/de.json b/apps/frontend/src/app/mqtt/servers/translations/create/de.json index 39ef6a66..71b702e8 100644 --- a/apps/frontend/src/app/mqtt/servers/translations/create/de.json +++ b/apps/frontend/src/app/mqtt/servers/translations/create/de.json @@ -8,7 +8,7 @@ "portLabel": "Port", "portPlaceholder": "1883", "clientIdLabel": "Client-ID (Optional)", - "clientIdPlaceholder": "attraccess-client", + "clientIdPlaceholder": "fabaccess-client", "usernameLabel": "Benutzername (Optional)", "usernamePlaceholder": "mqtt_benutzer", "passwordLabel": "Passwort (Optional)", @@ -20,4 +20,4 @@ "serverCreatedDesc": "Ein neuer MQTT-Server wurde erfolgreich erstellt.", "errorGeneric": "Fehler", "failedToCreate": "Fehler beim Erstellen des MQTT-Servers." -} \ No newline at end of file +} diff --git a/apps/frontend/src/app/mqtt/servers/translations/create/en.json b/apps/frontend/src/app/mqtt/servers/translations/create/en.json index d81de90f..ec5ab696 100644 --- a/apps/frontend/src/app/mqtt/servers/translations/create/en.json +++ b/apps/frontend/src/app/mqtt/servers/translations/create/en.json @@ -8,7 +8,7 @@ "portLabel": "Port", "portPlaceholder": "1883", "clientIdLabel": "Client ID (Optional)", - "clientIdPlaceholder": "attraccess-client", + "clientIdPlaceholder": "fabaccess-client", "usernameLabel": "Username (Optional)", "usernamePlaceholder": "mqtt_user", "passwordLabel": "Password (Optional)", @@ -20,4 +20,4 @@ "serverCreatedDesc": "A new MQTT server has been successfully created.", "errorGeneric": "Error", "failedToCreate": "Failed to create MQTT server." -} \ No newline at end of file +} diff --git a/apps/frontend/src/app/mqtt/servers/translations/de.json b/apps/frontend/src/app/mqtt/servers/translations/de.json index 1f262852..4d32b9e9 100644 --- a/apps/frontend/src/app/mqtt/servers/translations/de.json +++ b/apps/frontend/src/app/mqtt/servers/translations/de.json @@ -31,7 +31,7 @@ "portLabel": "Port", "portPlaceholder": "1883", "clientIdLabel": "Client-ID (Optional)", - "clientIdPlaceholder": "attraccess-client", + "clientIdPlaceholder": "fabaccess-client", "usernameLabel": "Benutzername (Optional)", "usernamePlaceholder": "mqtt_benutzer", "passwordLabel": "Passwort (Optional)", @@ -61,4 +61,4 @@ "failedToUpdate": "Fehler beim Aktualisieren des MQTT-Servers.", "failedToCreate": "Fehler beim Erstellen des MQTT-Servers.", "failedToConnect": "Verbindung zum MQTT-Server fehlgeschlagen" -} \ No newline at end of file +} diff --git a/apps/frontend/src/app/mqtt/servers/translations/edit/de.json b/apps/frontend/src/app/mqtt/servers/translations/edit/de.json index 9dcd8490..946074fe 100644 --- a/apps/frontend/src/app/mqtt/servers/translations/edit/de.json +++ b/apps/frontend/src/app/mqtt/servers/translations/edit/de.json @@ -8,7 +8,7 @@ "portLabel": "Port", "portPlaceholder": "1883", "clientIdLabel": "Client-ID (Optional)", - "clientIdPlaceholder": "attraccess-client", + "clientIdPlaceholder": "fabaccess-client", "usernameLabel": "Benutzername (Optional)", "usernamePlaceholder": "mqtt_benutzer", "passwordLabel": "Passwort (Optional)", @@ -21,4 +21,4 @@ "errorGeneric": "Fehler", "errorLoading": "Fehler beim Laden der MQTT-Server-Details.", "failedToUpdate": "Fehler beim Aktualisieren des MQTT-Servers." -} \ No newline at end of file +} diff --git a/apps/frontend/src/app/mqtt/servers/translations/edit/en.json b/apps/frontend/src/app/mqtt/servers/translations/edit/en.json index 4ab83867..16fa5863 100644 --- a/apps/frontend/src/app/mqtt/servers/translations/edit/en.json +++ b/apps/frontend/src/app/mqtt/servers/translations/edit/en.json @@ -8,7 +8,7 @@ "portLabel": "Port", "portPlaceholder": "1883", "clientIdLabel": "Client ID (Optional)", - "clientIdPlaceholder": "attraccess-client", + "clientIdPlaceholder": "fabaccess-client", "usernameLabel": "Username (Optional)", "usernamePlaceholder": "mqtt_user", "passwordLabel": "Password (Optional)", @@ -21,4 +21,4 @@ "errorGeneric": "Error", "errorLoading": "Error loading MQTT server details.", "failedToUpdate": "Failed to update MQTT server." -} \ No newline at end of file +} diff --git a/apps/frontend/src/app/mqtt/servers/translations/en.json b/apps/frontend/src/app/mqtt/servers/translations/en.json index 10f207e1..9f1eed55 100644 --- a/apps/frontend/src/app/mqtt/servers/translations/en.json +++ b/apps/frontend/src/app/mqtt/servers/translations/en.json @@ -31,7 +31,7 @@ "portLabel": "Port", "portPlaceholder": "1883", "clientIdLabel": "Client ID (Optional)", - "clientIdPlaceholder": "attraccess-client", + "clientIdPlaceholder": "fabaccess-client", "usernameLabel": "Username (Optional)", "usernamePlaceholder": "mqtt_user", "passwordLabel": "Password (Optional)", @@ -61,4 +61,4 @@ "failedToUpdate": "Failed to update MQTT server.", "failedToCreate": "Failed to create MQTT server.", "failedToConnect": "Failed to connect to MQTT server" -} \ No newline at end of file +} diff --git a/apps/frontend/src/app/plugins/PluginsList.tsx b/apps/frontend/src/app/plugins/PluginsList.tsx index 92f0677f..47d44a11 100644 --- a/apps/frontend/src/app/plugins/PluginsList.tsx +++ b/apps/frontend/src/app/plugins/PluginsList.tsx @@ -1,4 +1,4 @@ -import { usePluginsServiceDeletePlugin, usePluginsServiceGetPlugins } from '@attraccess/react-query-client'; +import { usePluginsServiceDeletePlugin, usePluginsServiceGetPlugins } from '@fabaccess/react-query-client'; import { useState } from 'react'; import { Card, @@ -21,7 +21,7 @@ import { Alert, } from '@heroui/react'; import { Trash2, Upload } from 'lucide-react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { UploadPluginModal } from './UploadPluginModal'; import { useToastMessage } from '../../components/toastProvider'; import { EmptyState } from '../../components/emptyState'; diff --git a/apps/frontend/src/app/plugins/UploadPluginModal.tsx b/apps/frontend/src/app/plugins/UploadPluginModal.tsx index b7847f42..742fd98d 100644 --- a/apps/frontend/src/app/plugins/UploadPluginModal.tsx +++ b/apps/frontend/src/app/plugins/UploadPluginModal.tsx @@ -1,8 +1,8 @@ -import { usePluginsServiceUploadPlugin } from '@attraccess/react-query-client'; +import { usePluginsServiceUploadPlugin } from '@fabaccess/react-query-client'; import { useState, useRef } from 'react'; import { Button, Modal, ModalContent, ModalHeader, ModalBody, ModalFooter, Input } from '@heroui/react'; import { Upload } from 'lucide-react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import en from './UploadPluginModal.en.json'; import de from './UploadPluginModal.de.json'; import { useToastMessage } from '../../components/toastProvider'; diff --git a/apps/frontend/src/app/plugins/plugin-provider.tsx b/apps/frontend/src/app/plugins/plugin-provider.tsx index 525d7552..871bd6d4 100644 --- a/apps/frontend/src/app/plugins/plugin-provider.tsx +++ b/apps/frontend/src/app/plugins/plugin-provider.tsx @@ -1,4 +1,4 @@ -import { OpenAPI, LoadedPluginManifest, usePluginsServiceGetPlugins } from '@attraccess/react-query-client'; +import { OpenAPI, LoadedPluginManifest, usePluginsServiceGetPlugins } from '@fabaccess/react-query-client'; import { PropsWithChildren, useCallback, useEffect, useRef } from 'react'; import { createPluginStore, PluginProvider as PluginProviderBase, RendererPlugin } from 'react-pluggable'; import usePluginState from './plugin.state'; @@ -8,7 +8,7 @@ import { // eslint-disable-next-line // @ts-ignore } from 'virtual:__federation__'; -import { AttraccessFrontendPlugin, AttraccessFrontendPluginAuthData } from '@attraccess/plugins-frontend-sdk'; +import { FabAccessFrontendPlugin, FabAccessFrontendPluginAuthData } from '@fabaccess/plugins-frontend-sdk'; import { ToastType, useToastMessage } from '../../components/toastProvider'; import { useAuth } from '../../hooks/useAuth'; import { getBaseUrl } from '../../api'; @@ -28,13 +28,13 @@ export function PluginProvider(props: PropsWithChildren) { if (isPluginSystemInitialized.current) return; isPluginSystemInitialized.current = true; - console.debug('Attraccess Plugin System: initializing'); + console.debug('FabAccess Plugin System: initializing'); - console.debug('Attraccess Plugin System: installing renderer plugin'); + console.debug('FabAccess Plugin System: installing renderer plugin'); const rendererPlugin = new RendererPlugin(); pluginStore.install(rendererPlugin); - console.debug('Attraccess Plugin System: adding notificationToast function'); + console.debug('FabAccess Plugin System: adding notificationToast function'); pluginStore.addFunction( 'notificationToast', (params: { title: string; description: string; type: ToastType; duration?: number }) => { @@ -48,10 +48,10 @@ export function PluginProvider(props: PropsWithChildren) { ); return () => { - console.debug('Attraccess Plugin System: uninstalling renderer plugin'); + console.debug('FabAccess Plugin System: uninstalling renderer plugin'); pluginStore.uninstall(rendererPlugin.getPluginName()); - console.debug('Attraccess Plugin System: removing notificationToast function'); + console.debug('FabAccess Plugin System: removing notificationToast function'); pluginStore.removeFunction('notificationToast'); // Reset the initialization state on unmount @@ -60,15 +60,15 @@ export function PluginProvider(props: PropsWithChildren) { }, [toast]); const loadPlugin = useCallback( - async (pluginManifest: LoadedPluginManifest, plugin?: AttraccessFrontendPlugin) => { + async (pluginManifest: LoadedPluginManifest, plugin?: FabAccessFrontendPlugin) => { try { if (!plugin) { - console.debug(`Attraccess Plugin System: loading plugin ${pluginManifest.name}`); + console.debug(`FabAccess Plugin System: loading plugin ${pluginManifest.name}`); const entryPointFile = pluginManifest.main.frontend?.entryPoint; if (!entryPointFile) { console.debug( - `Attraccess Plugin System: Plugin ${pluginManifest.name} has no entry point file for frontend, skipping` + `FabAccess Plugin System: Plugin ${pluginManifest.name} has no entry point file for frontend, skipping` ); return; } @@ -89,13 +89,13 @@ export function PluginProvider(props: PropsWithChildren) { } // Initialize the plugin - plugin = new pluginClass() as AttraccessFrontendPlugin; + plugin = new pluginClass() as FabAccessFrontendPlugin; } const pluginName = plugin.getPluginName(); - console.debug(`Attraccess Plugin System: Checking if plugin ${pluginName} is installed`); + console.debug(`FabAccess Plugin System: Checking if plugin ${pluginName} is installed`); if (isInstalled(pluginName)) { - console.debug(`Attraccess Plugin System: Plugin ${pluginName} is already installed, uninstalling first`); + console.debug(`FabAccess Plugin System: Plugin ${pluginName} is already installed, uninstalling first`); pluginStore.uninstall(pluginName); } @@ -108,10 +108,10 @@ export function PluginProvider(props: PropsWithChildren) { }; addPlugin(fullPlugin); - console.debug(`Attraccess Plugin System: Plugin ${pluginName} loaded`); + console.debug(`FabAccess Plugin System: Plugin ${pluginName} loaded`); return fullPlugin; } catch (error) { - console.error(`Attraccess Plugin System: Failed to load plugin: ${pluginManifest.name}`, error); + console.error(`FabAccess Plugin System: Failed to load plugin: ${pluginManifest.name}`, error); } }, [addPlugin, isInstalled] @@ -122,26 +122,26 @@ export function PluginProvider(props: PropsWithChildren) { plugin.plugin.onApiEndpointChange(getBaseUrl()); plugin.plugin.onApiAuthStateChange({ authToken: OpenAPI.TOKEN as string, - user: user as unknown as AttraccessFrontendPluginAuthData['user'], + user: user as unknown as FabAccessFrontendPluginAuthData['user'], }); }); }, [plugins, user]); const loadAllPlugins = useCallback(async () => { if (arePluginsLoaded.current) return; - console.debug('Attraccess Plugin System: Loading all plugins'); + console.debug('FabAccess Plugin System: Loading all plugins'); const plugins = await refetchPlugins(); const pluginsArray = plugins.data ?? []; await Promise.all(pluginsArray.map((manifest) => loadPlugin(manifest))); arePluginsLoaded.current = true; - console.debug('Attraccess Plugin System: All plugins loaded'); + console.debug('FabAccess Plugin System: All plugins loaded'); }, [loadPlugin, refetchPlugins]); useEffect(() => { if (arePluginsLoaded.current) return; - console.debug('Attraccess Plugin System: Refetching plugins'); + console.debug('FabAccess Plugin System: Refetching plugins'); loadAllPlugins(); // We're using the ref as our control mechanism, so the dependency array can be empty diff --git a/apps/frontend/src/app/plugins/plugin.state.ts b/apps/frontend/src/app/plugins/plugin.state.ts index 4efeee1b..3c65e8ec 100644 --- a/apps/frontend/src/app/plugins/plugin.state.ts +++ b/apps/frontend/src/app/plugins/plugin.state.ts @@ -1,9 +1,9 @@ -import { AttraccessFrontendPlugin } from '@attraccess/plugins-frontend-sdk'; -import { LoadedPluginManifest } from '@attraccess/react-query-client'; +import { FabAccessFrontendPlugin } from '@fabaccess/plugins-frontend-sdk'; +import { LoadedPluginManifest } from '@fabaccess/react-query-client'; import { create } from 'zustand'; export interface PluginManifestWithPlugin extends LoadedPluginManifest { - plugin: AttraccessFrontendPlugin; + plugin: FabAccessFrontendPlugin; } interface PluginState { diff --git a/apps/frontend/src/app/reset-password/resetPassword.tsx b/apps/frontend/src/app/reset-password/resetPassword.tsx index f5360840..36276aaf 100644 --- a/apps/frontend/src/app/reset-password/resetPassword.tsx +++ b/apps/frontend/src/app/reset-password/resetPassword.tsx @@ -1,13 +1,13 @@ import { useCallback, useMemo, useState } from 'react'; -import { useUrlQuery } from '@attraccess/plugins-frontend-ui'; +import { useUrlQuery } from '@fabaccess/plugins-frontend-ui'; import { useNavigate } from 'react-router-dom'; import { Loading } from '../loading'; import { Button, Card, CardBody, CardFooter, CardHeader, Form } from '@heroui/react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { PasswordInput } from '../../components/PasswordInput'; import * as en from './en.json'; import * as de from './de.json'; -import { useUsersServiceChangePasswordViaResetToken } from '@attraccess/react-query-client'; +import { useUsersServiceChangePasswordViaResetToken } from '@fabaccess/react-query-client'; import { useToastMessage } from '../../components/toastProvider'; export function ResetPassword() { @@ -60,7 +60,12 @@ export function ResetPassword() {

{t('success.message')}

- diff --git a/apps/frontend/src/app/resource-groups/GroupDetailsForm/index.tsx b/apps/frontend/src/app/resource-groups/GroupDetailsForm/index.tsx index 967788f8..8682a28a 100644 --- a/apps/frontend/src/app/resource-groups/GroupDetailsForm/index.tsx +++ b/apps/frontend/src/app/resource-groups/GroupDetailsForm/index.tsx @@ -7,8 +7,8 @@ import { UseResourcesServiceResourceGroupsGetOneKeyFn, useResourcesServiceResourceGroupsDeleteOne, UseResourcesServiceResourceGroupsGetManyKeyFn, -} from '@attraccess/react-query-client'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +} from '@fabaccess/react-query-client'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useToastMessage } from '../../../components/toastProvider'; import { useQueryClient } from '@tanstack/react-query'; import * as en from './translations/en.json'; diff --git a/apps/frontend/src/app/resource-groups/IntroducerManagement/index.tsx b/apps/frontend/src/app/resource-groups/IntroducerManagement/index.tsx index d925db96..59703c24 100644 --- a/apps/frontend/src/app/resource-groups/IntroducerManagement/index.tsx +++ b/apps/frontend/src/app/resource-groups/IntroducerManagement/index.tsx @@ -6,8 +6,8 @@ import { useAccessControlServiceResourceGroupIntroducersRevoke, UseAccessControlServiceResourceGroupIntroducersGetManyKeyFn, User, -} from '@attraccess/react-query-client'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +} from '@fabaccess/react-query-client'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useToastMessage } from '../../../components/toastProvider'; import { useQueryClient } from '@tanstack/react-query'; import * as en from './en.json'; diff --git a/apps/frontend/src/app/resource-groups/IntroductionsManagement/history/index.tsx b/apps/frontend/src/app/resource-groups/IntroductionsManagement/history/index.tsx index fea24aa2..7e7fd925 100644 --- a/apps/frontend/src/app/resource-groups/IntroductionsManagement/history/index.tsx +++ b/apps/frontend/src/app/resource-groups/IntroductionsManagement/history/index.tsx @@ -1,4 +1,4 @@ -import { useAccessControlServiceResourceGroupIntroductionsGetHistory } from '@attraccess/react-query-client'; +import { useAccessControlServiceResourceGroupIntroductionsGetHistory } from '@fabaccess/react-query-client'; import { useEffect } from 'react'; import { IntroductionHistoryModal } from '../../../../components/IntroductionsManagement/history'; diff --git a/apps/frontend/src/app/resource-groups/IntroductionsManagement/index.tsx b/apps/frontend/src/app/resource-groups/IntroductionsManagement/index.tsx index c405147d..0987ca05 100644 --- a/apps/frontend/src/app/resource-groups/IntroductionsManagement/index.tsx +++ b/apps/frontend/src/app/resource-groups/IntroductionsManagement/index.tsx @@ -8,8 +8,8 @@ import { useAccessControlServiceResourceGroupIntroductionsGrant, useAccessControlServiceResourceGroupIntroductionsRevoke, User, -} from '@attraccess/react-query-client'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +} from '@fabaccess/react-query-client'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useToastMessage } from '../../../components/toastProvider'; import { useQueryClient } from '@tanstack/react-query'; import * as en from './en.json'; diff --git a/apps/frontend/src/app/resource-groups/index.tsx b/apps/frontend/src/app/resource-groups/index.tsx index d6f22df8..04dbdc75 100644 --- a/apps/frontend/src/app/resource-groups/index.tsx +++ b/apps/frontend/src/app/resource-groups/index.tsx @@ -1,6 +1,6 @@ import { useParams } from 'react-router-dom'; -import { useResourcesServiceResourceGroupsGetOne } from '@attraccess/react-query-client'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useResourcesServiceResourceGroupsGetOne } from '@fabaccess/react-query-client'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { PageHeader } from '../../components/pageHeader'; import { GroupDetailsForm } from './GroupDetailsForm'; import { ResoureGroupIntroducerManagement } from './IntroducerManagement'; diff --git a/apps/frontend/src/app/resource-groups/upsertModal/resourceGroupUpsertModal.tsx b/apps/frontend/src/app/resource-groups/upsertModal/resourceGroupUpsertModal.tsx index dba44688..64d71d15 100644 --- a/apps/frontend/src/app/resource-groups/upsertModal/resourceGroupUpsertModal.tsx +++ b/apps/frontend/src/app/resource-groups/upsertModal/resourceGroupUpsertModal.tsx @@ -10,7 +10,7 @@ import { ModalHeader, useDisclosure, } from '@heroui/react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as en from './resourceGroupUpsertModal.en.json'; import * as de from './resourceGroupUpsertModal.de.json'; import { @@ -20,7 +20,7 @@ import { useResourcesServiceResourceGroupsUpdateOne, UpdateResourceGroupDto, useResourcesServiceResourceGroupsGetManyKey, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useQueryClient } from '@tanstack/react-query'; import { AxiosError } from 'axios'; import { useToastMessage } from '../../../components/toastProvider'; diff --git a/apps/frontend/src/app/resourceOverview/index.tsx b/apps/frontend/src/app/resourceOverview/index.tsx index 9be0b74d..0a7c795c 100644 --- a/apps/frontend/src/app/resourceOverview/index.tsx +++ b/apps/frontend/src/app/resourceOverview/index.tsx @@ -1,7 +1,7 @@ import { useResourcesServiceResourceGroupsGetMany, useResourcesServiceGetAllResources, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { Toolbar } from './toolbar/toolbar'; import { ResourceGroupCard } from './resourceGroupCard'; import { useCallback, useMemo, useState } from 'react'; diff --git a/apps/frontend/src/app/resourceOverview/resourceGroupCard/index.tsx b/apps/frontend/src/app/resourceOverview/resourceGroupCard/index.tsx index c4221820..1c31366a 100644 --- a/apps/frontend/src/app/resourceOverview/resourceGroupCard/index.tsx +++ b/apps/frontend/src/app/resourceOverview/resourceGroupCard/index.tsx @@ -2,7 +2,7 @@ import { useAccessControlServiceResourceGroupIntroducersIsIntroducer, useResourcesServiceGetAllResources, useResourcesServiceResourceGroupsGetOne, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { Button, Card, @@ -28,7 +28,7 @@ import { useMemo, useState } from 'react'; import { filenameToUrl } from '../../../api'; import { StatusChip } from './statusChip'; import { ChevronRightIcon, Settings2Icon } from 'lucide-react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useAuth } from '../../../hooks/useAuth'; import { useDebounce } from '../../../hooks/useDebounce'; import { FilterProps } from '../filterProps'; diff --git a/apps/frontend/src/app/resourceOverview/resourceGroupCard/statusChip/index.tsx b/apps/frontend/src/app/resourceOverview/resourceGroupCard/statusChip/index.tsx index 2546b955..20281653 100644 --- a/apps/frontend/src/app/resourceOverview/resourceGroupCard/statusChip/index.tsx +++ b/apps/frontend/src/app/resourceOverview/resourceGroupCard/statusChip/index.tsx @@ -1,5 +1,5 @@ -import { useTranslations } from '@attraccess/plugins-frontend-ui'; -import { useResourcesServiceResourceUsageGetActiveSession } from '@attraccess/react-query-client'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; +import { useResourcesServiceResourceUsageGetActiveSession } from '@fabaccess/react-query-client'; import { Chip } from '@heroui/react'; import { useMemo } from 'react'; diff --git a/apps/frontend/src/app/resourceOverview/toolbar/filter/index.tsx b/apps/frontend/src/app/resourceOverview/toolbar/filter/index.tsx index 633a2828..c0f96c64 100644 --- a/apps/frontend/src/app/resourceOverview/toolbar/filter/index.tsx +++ b/apps/frontend/src/app/resourceOverview/toolbar/filter/index.tsx @@ -1,4 +1,4 @@ -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { DrawerBody, Drawer, DrawerContent, DrawerHeader, useDisclosure, Switch } from '@heroui/react'; import de from './de.json'; diff --git a/apps/frontend/src/app/resourceOverview/toolbar/scanner/index.tsx b/apps/frontend/src/app/resourceOverview/toolbar/scanner/index.tsx index 023c8228..793d3008 100644 --- a/apps/frontend/src/app/resourceOverview/toolbar/scanner/index.tsx +++ b/apps/frontend/src/app/resourceOverview/toolbar/scanner/index.tsx @@ -3,7 +3,7 @@ import { Scanner, IDetectedBarcode, boundingBox } from '@yudiel/react-qr-scanner import { useToastMessage } from '../../../../components/toastProvider'; import { useCallback } from 'react'; import { useNavigate } from 'react-router-dom'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import de from './de.json'; import en from './en.json'; diff --git a/apps/frontend/src/app/resourceOverview/toolbar/toolbar.tsx b/apps/frontend/src/app/resourceOverview/toolbar/toolbar.tsx index 3b563cba..80ee6548 100644 --- a/apps/frontend/src/app/resourceOverview/toolbar/toolbar.tsx +++ b/apps/frontend/src/app/resourceOverview/toolbar/toolbar.tsx @@ -3,7 +3,7 @@ import { Input } from '@heroui/input'; import { SearchIcon, PlusIcon, ScanQrCodeIcon, ListFilterIcon } from 'lucide-react'; import { ResourceGroupUpsertModal } from '../../resource-groups/upsertModal/resourceGroupUpsertModal'; import { useAuth } from '../../../hooks/useAuth'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { ResourceEditModal } from '../../resources/editModal/resourceEditModal'; import { useNavigate } from 'react-router-dom'; diff --git a/apps/frontend/src/app/resources/IntroducerManagement/index.tsx b/apps/frontend/src/app/resources/IntroducerManagement/index.tsx index d5810af2..eb9d3416 100644 --- a/apps/frontend/src/app/resources/IntroducerManagement/index.tsx +++ b/apps/frontend/src/app/resources/IntroducerManagement/index.tsx @@ -6,8 +6,8 @@ import { useAccessControlServiceResourceIntroducersRevoke, UseAccessControlServiceResourceIntroducersGetManyKeyFn, User, -} from '@attraccess/react-query-client'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +} from '@fabaccess/react-query-client'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useToastMessage } from '../../../components/toastProvider'; import { useQueryClient } from '@tanstack/react-query'; import * as en from './en.json'; diff --git a/apps/frontend/src/app/resources/IntroductionsManagement/history/index.tsx b/apps/frontend/src/app/resources/IntroductionsManagement/history/index.tsx index 71268960..6c0203e5 100644 --- a/apps/frontend/src/app/resources/IntroductionsManagement/history/index.tsx +++ b/apps/frontend/src/app/resources/IntroductionsManagement/history/index.tsx @@ -1,4 +1,4 @@ -import { useAccessControlServiceResourceIntroductionsGetHistory } from '@attraccess/react-query-client'; +import { useAccessControlServiceResourceIntroductionsGetHistory } from '@fabaccess/react-query-client'; import { useEffect } from 'react'; import { IntroductionHistoryModal } from '../../../../components/IntroductionsManagement/history'; diff --git a/apps/frontend/src/app/resources/IntroductionsManagement/index.tsx b/apps/frontend/src/app/resources/IntroductionsManagement/index.tsx index 19dd82ba..e58a1895 100644 --- a/apps/frontend/src/app/resources/IntroductionsManagement/index.tsx +++ b/apps/frontend/src/app/resources/IntroductionsManagement/index.tsx @@ -8,8 +8,8 @@ import { useAccessControlServiceResourceIntroductionsGrant, useAccessControlServiceResourceIntroductionsRevoke, User, -} from '@attraccess/react-query-client'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +} from '@fabaccess/react-query-client'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useToastMessage } from '../../../components/toastProvider'; import { useQueryClient } from '@tanstack/react-query'; import * as en from './en.json'; diff --git a/apps/frontend/src/app/resources/details/qrcode/index.tsx b/apps/frontend/src/app/resources/details/qrcode/index.tsx index c821816a..d14ed6de 100644 --- a/apps/frontend/src/app/resources/details/qrcode/index.tsx +++ b/apps/frontend/src/app/resources/details/qrcode/index.tsx @@ -14,7 +14,7 @@ import { QrCodeIcon } from 'lucide-react'; import { useCallback, useMemo, useState } from 'react'; import { QRCode } from 'react-qrcode-logo'; import { Select } from '../../../../components/select'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { QrCodeAction } from './action'; import de from './de.json'; diff --git a/apps/frontend/src/app/resources/details/resourceDetails.tsx b/apps/frontend/src/app/resources/details/resourceDetails.tsx index c271ebd2..8ab6ec3d 100644 --- a/apps/frontend/src/app/resources/details/resourceDetails.tsx +++ b/apps/frontend/src/app/resources/details/resourceDetails.tsx @@ -9,14 +9,14 @@ import { ResourceUsageSession } from '../usage/resourceUsageSession'; import { ResourceUsageHistory } from '../usage/resourceUsageHistory'; import { PageHeader } from '../../../components/pageHeader'; import { DeleteConfirmationModal } from '../../../components/deleteConfirmationModal'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { memo, useMemo } from 'react'; import { useResourcesServiceDeleteOneResource, useResourcesServiceGetOneResourceById, UseResourcesServiceGetAllResourcesKeyFn, useAccessControlServiceResourceIntroducersIsIntroducer, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useQueryClient } from '@tanstack/react-query'; import { ManageResourceGroups } from '../groups'; import { DocumentationModal } from '../documentation'; diff --git a/apps/frontend/src/app/resources/details/useQrCodeAction.ts b/apps/frontend/src/app/resources/details/useQrCodeAction.ts index 6144da7b..81d6b792 100644 --- a/apps/frontend/src/app/resources/details/useQrCodeAction.ts +++ b/apps/frontend/src/app/resources/details/useQrCodeAction.ts @@ -1,4 +1,4 @@ -import { useTranslations, useUrlQuery } from '@attraccess/plugins-frontend-ui'; +import { useTranslations, useUrlQuery } from '@fabaccess/plugins-frontend-ui'; import { useCallback, useEffect, useRef } from 'react'; import { QrCodeAction } from './qrcode/action'; import { @@ -6,7 +6,7 @@ import { useResourcesServiceResourceUsageEndSession, UseResourcesServiceResourceUsageGetActiveSessionKeyFn, UseResourcesServiceResourceUsageGetHistoryKeyFn, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useQueryClient } from '@tanstack/react-query'; import { useToastMessage } from '../../../components/toastProvider'; diff --git a/apps/frontend/src/app/resources/documentation/DocumentationEditor.tsx b/apps/frontend/src/app/resources/documentation/DocumentationEditor.tsx index e924b3d0..a1d7c5c3 100644 --- a/apps/frontend/src/app/resources/documentation/DocumentationEditor.tsx +++ b/apps/frontend/src/app/resources/documentation/DocumentationEditor.tsx @@ -14,7 +14,7 @@ import { Tabs, Textarea, } from '@heroui/react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { ArrowLeft, Save } from 'lucide-react'; import { useToastMessage } from '../../../components/toastProvider'; import { PageHeader } from '../../../components/pageHeader'; @@ -23,7 +23,7 @@ import { useResourcesServiceUpdateOneResource, UseResourcesServiceGetOneResourceByIdKeyFn, documentationType as DocumentationType, // alias for local usage -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import ReactMarkdown from 'react-markdown'; import en from './documentationEditor.en.json'; import de from './documentationEditor.de.json'; diff --git a/apps/frontend/src/app/resources/documentation/DocumentationModal.tsx b/apps/frontend/src/app/resources/documentation/DocumentationModal.tsx index d107a03e..c14d7669 100644 --- a/apps/frontend/src/app/resources/documentation/DocumentationModal.tsx +++ b/apps/frontend/src/app/resources/documentation/DocumentationModal.tsx @@ -9,10 +9,10 @@ import { Spinner, useDisclosure, } from '@heroui/react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { Edit, ExternalLink, Maximize, Minimize, RefreshCw } from 'lucide-react'; import { useNavigate } from 'react-router-dom'; -import { useResourcesServiceGetOneResourceById } from '@attraccess/react-query-client'; +import { useResourcesServiceGetOneResourceById } from '@fabaccess/react-query-client'; import en from './documentationModal.en.json'; import de from './documentationModal.de.json'; import ReactMarkdown from 'react-markdown'; diff --git a/apps/frontend/src/app/resources/documentation/DocumentationView.tsx b/apps/frontend/src/app/resources/documentation/DocumentationView.tsx index c2a62202..213e6bbd 100644 --- a/apps/frontend/src/app/resources/documentation/DocumentationView.tsx +++ b/apps/frontend/src/app/resources/documentation/DocumentationView.tsx @@ -1,10 +1,10 @@ import { memo, useCallback } from 'react'; import { useNavigate, useParams } from 'react-router-dom'; import { Button, Card, CardBody, CardFooter, CardHeader, Spinner } from '@heroui/react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { ArrowLeft, Edit, RefreshCw } from 'lucide-react'; import { PageHeader } from '../../../components/pageHeader'; -import { useResourcesServiceGetOneResourceById } from '@attraccess/react-query-client'; +import { useResourcesServiceGetOneResourceById } from '@fabaccess/react-query-client'; import ReactMarkdown from 'react-markdown'; import en from './documentationModal.en.json'; import de from './documentationModal.de.json'; diff --git a/apps/frontend/src/app/resources/editModal/resourceEditModal.tsx b/apps/frontend/src/app/resources/editModal/resourceEditModal.tsx index d5586cd0..ff4da01a 100644 --- a/apps/frontend/src/app/resources/editModal/resourceEditModal.tsx +++ b/apps/frontend/src/app/resources/editModal/resourceEditModal.tsx @@ -11,7 +11,7 @@ import { Switch, useDisclosure, } from '@heroui/react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as en from './resourceEditModal.en.json'; import * as de from './resourceEditModal.de.json'; import { @@ -22,7 +22,7 @@ import { useResourcesServiceGetOneResourceById, UseResourcesServiceGetOneResourceByIdKeyFn, useResourcesServiceCreateOneResource, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useQueryClient } from '@tanstack/react-query'; import { ImageUpload } from '../../../components/imageUpload'; import { useToastMessage } from '../../../components/toastProvider'; diff --git a/apps/frontend/src/app/resources/groups/index.tsx b/apps/frontend/src/app/resources/groups/index.tsx index ee0a2ef3..6527353a 100644 --- a/apps/frontend/src/app/resources/groups/index.tsx +++ b/apps/frontend/src/app/resources/groups/index.tsx @@ -7,7 +7,7 @@ import { useResourcesServiceResourceGroupsAddResource, useResourcesServiceResourceGroupsGetMany, useResourcesServiceResourceGroupsRemoveResource, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { Button, Card, @@ -24,7 +24,7 @@ import { } from '@heroui/react'; import { TableDataLoadingIndicator } from '../../../components/tableComponents'; import { EmptyState } from '../../../components/emptyState'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { GroupIcon, PlusIcon, Trash2Icon } from 'lucide-react'; import { useQueryClient } from '@tanstack/react-query'; import { PageHeader } from '../../../components/pageHeader'; diff --git a/apps/frontend/src/app/resources/iot-settings/esphome/ESPHomeConfigurationPanel.tsx b/apps/frontend/src/app/resources/iot-settings/esphome/ESPHomeConfigurationPanel.tsx index 4317461d..3408746f 100644 --- a/apps/frontend/src/app/resources/iot-settings/esphome/ESPHomeConfigurationPanel.tsx +++ b/apps/frontend/src/app/resources/iot-settings/esphome/ESPHomeConfigurationPanel.tsx @@ -1,10 +1,10 @@ import { Card, Accordion, AccordionItem, CardBody, Snippet, Link, Alert } from '@heroui/react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as en from './translations/en'; import * as de from './translations/de'; import { useMemo, useState } from 'react'; import { ExternalLink, InfoIcon } from 'lucide-react'; -import { useResourcesServiceGetOneResourceById } from '@attraccess/react-query-client'; +import { useResourcesServiceGetOneResourceById } from '@fabaccess/react-query-client'; import { getBaseUrl } from '../../../../api'; function useEspHomeConfigSnippet(resourceId: number) { @@ -34,30 +34,30 @@ function useEspHomeConfigSnippet(resourceId: number) { return `external_components: - source: type: git - url: https://github.com/FabInfra/Attraccess-esphome-components.git - components: [attraccess_resource] + url: https://github.com/FabInfra/FabAccess-esphome-components.git + components: [fabaccess_resource] - attraccess_resource: + fabaccess_resource: id: ${formatEspHomeId(resource?.name)} api_url: ${apiBaseUrl} resource_id: "${resource?.id || 'resource_id'}" # Add text sensor to show human-readable status text_sensor: - - platform: attraccess_resource + - platform: fabaccess_resource resource: ${formatEspHomeId(resource?.name)} name: "${resource?.name || 'Resource'} Status" id: ${formatEspHomeId(resource?.name)}_status binary_sensor: - - platform: attraccess_resource + - platform: fabaccess_resource resource: ${formatEspHomeId(resource?.name)} # Monitor if API connection is available availability: - name: "Attraccess API Availability" - id: attraccess_api_availability + name: "FabAccess API Availability" + id: fabaccess_api_availability # Monitor actual resource usage in_use: @@ -124,7 +124,7 @@ export function ESPHomeConfigurationPanel(props: ESPHomeConfigurationPanelProps)
(); diff --git a/apps/frontend/src/app/resources/iot-settings/mqtt/MqttConfigurationPanel.tsx b/apps/frontend/src/app/resources/iot-settings/mqtt/MqttConfigurationPanel.tsx index ad92f410..261576b5 100644 --- a/apps/frontend/src/app/resources/iot-settings/mqtt/MqttConfigurationPanel.tsx +++ b/apps/frontend/src/app/resources/iot-settings/mqtt/MqttConfigurationPanel.tsx @@ -1,4 +1,4 @@ -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import de from './de.json'; import en from './en.json'; import { Button, Card, CardHeader } from '@heroui/react'; diff --git a/apps/frontend/src/app/resources/iot-settings/mqtt/components/MqttConfigForm.tsx b/apps/frontend/src/app/resources/iot-settings/mqtt/components/MqttConfigForm.tsx index 45d4c4c4..8124f001 100644 --- a/apps/frontend/src/app/resources/iot-settings/mqtt/components/MqttConfigForm.tsx +++ b/apps/frontend/src/app/resources/iot-settings/mqtt/components/MqttConfigForm.tsx @@ -1,5 +1,5 @@ import React, { useCallback, useEffect, useState } from 'react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { Button, Card, @@ -23,7 +23,7 @@ import { UseMqttServiceMqttResourceConfigGetAllKeyFn, UseMqttServiceMqttResourceConfigGetOneKeyFn, MqttResourceConfig, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useNavigate } from 'react-router-dom'; import { useToastMessage } from '../../../../../components/toastProvider'; import en from '../translations/configForm.en.json'; diff --git a/apps/frontend/src/app/resources/iot-settings/mqtt/components/MqttConfigList.tsx b/apps/frontend/src/app/resources/iot-settings/mqtt/components/MqttConfigList.tsx index d7c9864a..1452e1cd 100644 --- a/apps/frontend/src/app/resources/iot-settings/mqtt/components/MqttConfigList.tsx +++ b/apps/frontend/src/app/resources/iot-settings/mqtt/components/MqttConfigList.tsx @@ -1,10 +1,10 @@ -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { Accordion, AccordionItem, Alert, Button, Skeleton } from '@heroui/react'; import { useMqttServiceMqttResourceConfigGetAll, useMqttServiceMqttResourceConfigDeleteOne, useResourcesServiceGetOneResourceById, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useNavigate } from 'react-router-dom'; import { useToastMessage } from '../../../../../components/toastProvider'; import en from '../translations/configList.en.json'; diff --git a/apps/frontend/src/app/resources/iot-settings/mqtt/pages/TestMqttConfig.tsx b/apps/frontend/src/app/resources/iot-settings/mqtt/pages/TestMqttConfig.tsx index c42d69be..09369dd6 100644 --- a/apps/frontend/src/app/resources/iot-settings/mqtt/pages/TestMqttConfig.tsx +++ b/apps/frontend/src/app/resources/iot-settings/mqtt/pages/TestMqttConfig.tsx @@ -1,11 +1,11 @@ import React, { useState } from 'react'; import { useParams, useNavigate } from 'react-router-dom'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { Button, Card, Alert, Spinner } from '@heroui/react'; import { useMqttServiceMqttResourceConfigGetOne, useMqttServiceMqttResourceConfigTestOne, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import en from '../translations/configTest.en.json'; import de from '../translations/configTest.de.json'; diff --git a/apps/frontend/src/app/resources/iot-settings/webhooks/WebhookConfigurationPanel.tsx b/apps/frontend/src/app/resources/iot-settings/webhooks/WebhookConfigurationPanel.tsx index 6b2fa1f4..3ca13bdc 100644 --- a/apps/frontend/src/app/resources/iot-settings/webhooks/WebhookConfigurationPanel.tsx +++ b/apps/frontend/src/app/resources/iot-settings/webhooks/WebhookConfigurationPanel.tsx @@ -1,5 +1,5 @@ import { Card, Accordion, AccordionItem, CardBody, Button } from '@heroui/react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as en from './translations/en'; import * as de from './translations/de'; import WebhookList from './components/WebhookList'; @@ -37,7 +37,13 @@ export function WebhookConfigurationPanel(props: WebhookConfigurationPanelProps) {t('title')} {isOpen && ( - )} diff --git a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookAdvancedSettings.tsx b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookAdvancedSettings.tsx index 1871fb67..ddbe701b 100644 --- a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookAdvancedSettings.tsx +++ b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookAdvancedSettings.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Switch, NumberInput, Divider } from '@heroui/react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useWebhookForm } from '../context/WebhookFormContext'; // Translations for this component only diff --git a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookBasicSettings.tsx b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookBasicSettings.tsx index 08f40a13..39ef1df1 100644 --- a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookBasicSettings.tsx +++ b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookBasicSettings.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Input, Textarea, Select, SelectItem, Switch } from '@heroui/react'; // Added Switch -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useWebhookForm } from '../context/WebhookFormContext'; import { WebhookHttpMethod } from '../types'; diff --git a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookCreateModal.tsx b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookCreateModal.tsx index 44a6bc85..1be3cd99 100644 --- a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookCreateModal.tsx +++ b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookCreateModal.tsx @@ -1,6 +1,6 @@ import { Modal, ModalContent, ModalHeader, ModalBody } from '@heroui/modal'; import WebhookForm from './WebhookForm'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as de from '../translations/de'; import * as en from '../translations/en'; diff --git a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookForm.tsx b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookForm.tsx index 5474257c..0ee9224e 100644 --- a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookForm.tsx +++ b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookForm.tsx @@ -1,5 +1,5 @@ import React, { useState, useEffect } from 'react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { WebhookFormValues, defaultFormValues, webhookToFormValues } from '../types'; import { WebhookFormProvider } from '../context/WebhookFormContext'; import WebhookBasicSettings from './WebhookBasicSettings'; @@ -14,7 +14,7 @@ import { useWebhooksServiceWebhookConfigGetOneById, useWebhooksServiceWebhookConfigUpdateOne, UseWebhooksServiceWebhookConfigGetAllKeyFn, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useQueryClient } from '@tanstack/react-query'; import { useToastMessage } from '../../../../../components/toastProvider'; diff --git a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookFormActions.tsx b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookFormActions.tsx index 1a5f8e29..d56542bc 100644 --- a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookFormActions.tsx +++ b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookFormActions.tsx @@ -1,7 +1,7 @@ import React, { useState } from 'react'; import { Button } from '@heroui/react'; import { Trash2, RefreshCw, Save } from 'lucide-react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useWebhookForm } from '../context/WebhookFormContext'; // Translations for this component only @@ -10,7 +10,7 @@ import de from './WebhookFormActions.de.json'; import { useWebhooksServiceWebhookConfigDeleteOne, useWebhooksServiceWebhookConfigTest, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useToastMessage } from '../../../../../components/toastProvider'; interface WebhookFormActionsProps { diff --git a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookList.tsx b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookList.tsx index 4e4b1cb3..711d1ca8 100644 --- a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookList.tsx +++ b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookList.tsx @@ -1,10 +1,10 @@ import React from 'react'; import { Accordion, AccordionItem, Alert, Skeleton, Chip } from '@heroui/react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as en from '../translations/en'; import * as de from '../translations/de'; import WebhookForm from './WebhookForm'; -import { useWebhooksServiceWebhookConfigGetAll } from '@attraccess/react-query-client'; +import { useWebhooksServiceWebhookConfigGetAll } from '@fabaccess/react-query-client'; // Types interface WebhookListProps { diff --git a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookSecurityInfo.tsx b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookSecurityInfo.tsx index 199810f1..81c2c30a 100644 --- a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookSecurityInfo.tsx +++ b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookSecurityInfo.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Alert, Link } from '@heroui/react'; import { HelpCircle } from 'lucide-react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as en from '../translations/en'; import * as de from '../translations/de'; diff --git a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookTemplateEditor.tsx b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookTemplateEditor.tsx index 15b4a50b..0cc4e0cd 100644 --- a/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookTemplateEditor.tsx +++ b/apps/frontend/src/app/resources/iot-settings/webhooks/components/WebhookTemplateEditor.tsx @@ -1,6 +1,6 @@ import React, { useCallback, useMemo } from 'react'; import { Textarea, Accordion, AccordionItem, Snippet } from '@heroui/react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useWebhookForm } from '../context/WebhookFormContext'; import { templateVariables } from '../types'; import { useTemplatePreview } from '../hooks/useTemplatePreview'; diff --git a/apps/frontend/src/app/resources/iot-settings/webhooks/hooks/useTemplatePreview.ts b/apps/frontend/src/app/resources/iot-settings/webhooks/hooks/useTemplatePreview.ts index 2eeba213..a9f1c104 100644 --- a/apps/frontend/src/app/resources/iot-settings/webhooks/hooks/useTemplatePreview.ts +++ b/apps/frontend/src/app/resources/iot-settings/webhooks/hooks/useTemplatePreview.ts @@ -1,4 +1,4 @@ -import { useResourcesServiceGetOneResourceById } from '@attraccess/react-query-client'; +import { useResourcesServiceGetOneResourceById } from '@fabaccess/react-query-client'; import { useAuth } from '../../../../../hooks/useAuth'; export const useTemplatePreview = (resourceId: number) => { diff --git a/apps/frontend/src/app/resources/iot-settings/webhooks/types.ts b/apps/frontend/src/app/resources/iot-settings/webhooks/types.ts index 13de7b5e..f0fac3a0 100644 --- a/apps/frontend/src/app/resources/iot-settings/webhooks/types.ts +++ b/apps/frontend/src/app/resources/iot-settings/webhooks/types.ts @@ -1,4 +1,4 @@ -import { WebhookConfigResponseDto } from '@attraccess/react-query-client'; +import { WebhookConfigResponseDto } from '@fabaccess/react-query-client'; // Define WebhookHttpMethod enum matching the backend export enum WebhookHttpMethod { diff --git a/apps/frontend/src/app/resources/usage/components/ActiveSessionDisplay/index.tsx b/apps/frontend/src/app/resources/usage/components/ActiveSessionDisplay/index.tsx index 2afb5400..18db3123 100644 --- a/apps/frontend/src/app/resources/usage/components/ActiveSessionDisplay/index.tsx +++ b/apps/frontend/src/app/resources/usage/components/ActiveSessionDisplay/index.tsx @@ -1,7 +1,7 @@ import { useState, useCallback } from 'react'; import { Button, ButtonGroup, Dropdown, DropdownTrigger, DropdownMenu, DropdownItem } from '@heroui/react'; import { StopCircle, ChevronDownIcon } from 'lucide-react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useToastMessage } from '../../../../../components/toastProvider'; import { SessionTimer } from '../SessionTimer'; import { SessionNotesModal, SessionModalMode } from '../SessionNotesModal'; @@ -9,7 +9,7 @@ import { useResourcesServiceResourceUsageEndSession, UseResourcesServiceResourceUsageGetActiveSessionKeyFn, UseResourcesServiceResourceUsageGetHistoryKeyFn, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useQueryClient } from '@tanstack/react-query'; import * as en from './translations/en.json'; import * as de from './translations/de.json'; diff --git a/apps/frontend/src/app/resources/usage/components/HistoryHeader/index.tsx b/apps/frontend/src/app/resources/usage/components/HistoryHeader/index.tsx index 29b86a7b..6f0c7d5b 100644 --- a/apps/frontend/src/app/resources/usage/components/HistoryHeader/index.tsx +++ b/apps/frontend/src/app/resources/usage/components/HistoryHeader/index.tsx @@ -1,7 +1,7 @@ import { memo } from 'react'; import { Checkbox } from '@heroui/react'; import { History, Users } from 'lucide-react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as en from './translations/en'; import * as de from './translations/de'; diff --git a/apps/frontend/src/app/resources/usage/components/HistoryTable/index.tsx b/apps/frontend/src/app/resources/usage/components/HistoryTable/index.tsx index 3226eaae..e8a0fb84 100644 --- a/apps/frontend/src/app/resources/usage/components/HistoryTable/index.tsx +++ b/apps/frontend/src/app/resources/usage/components/HistoryTable/index.tsx @@ -1,9 +1,9 @@ import { useCallback, useMemo, useState } from 'react'; import { Table, TableHeader, TableBody, TableRow, Pagination } from '@heroui/react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { generateHeaderColumns } from './utils/tableHeaders'; import { generateRowCells } from './utils/tableRows'; -import { useResourcesServiceResourceUsageGetHistory, ResourceUsage } from '@attraccess/react-query-client'; +import { useResourcesServiceResourceUsageGetHistory, ResourceUsage } from '@fabaccess/react-query-client'; import { useAuth } from '../../../../../hooks/useAuth'; import { Select } from '../../../../../components/select'; import { TableDataLoadingIndicator } from '../../../../../components/tableComponents'; diff --git a/apps/frontend/src/app/resources/usage/components/HistoryTable/utils/tableRows.tsx b/apps/frontend/src/app/resources/usage/components/HistoryTable/utils/tableRows.tsx index 881f3b11..8848d494 100644 --- a/apps/frontend/src/app/resources/usage/components/HistoryTable/utils/tableRows.tsx +++ b/apps/frontend/src/app/resources/usage/components/HistoryTable/utils/tableRows.tsx @@ -1,10 +1,10 @@ import React, { ReactElement } from 'react'; import { TableCell, Chip } from '@heroui/react'; -import { ResourceUsage } from '@attraccess/react-query-client'; +import { ResourceUsage } from '@fabaccess/react-query-client'; import { TFunction } from 'i18next'; -import { DurationDisplay, DateTimeDisplay } from '@attraccess/plugins-frontend-ui'; +import { DurationDisplay, DateTimeDisplay } from '@fabaccess/plugins-frontend-ui'; import { MessageSquareText } from 'lucide-react'; -import { AttraccessUser } from '@attraccess/plugins-frontend-ui'; +import { FabAccessUser } from '@fabaccess/plugins-frontend-ui'; /** * Generates table row cells based on session data and user permissions @@ -21,7 +21,7 @@ export function generateRowCells( if (canManageResources && showAllUsers) { cells.push( - + ); } diff --git a/apps/frontend/src/app/resources/usage/components/IntroductionRequiredDisplay/index.tsx b/apps/frontend/src/app/resources/usage/components/IntroductionRequiredDisplay/index.tsx index 67a42585..90b1ed10 100644 --- a/apps/frontend/src/app/resources/usage/components/IntroductionRequiredDisplay/index.tsx +++ b/apps/frontend/src/app/resources/usage/components/IntroductionRequiredDisplay/index.tsx @@ -1,7 +1,7 @@ import { Alert, Divider, Spinner } from '@heroui/react'; import { Users } from 'lucide-react'; -import { useTranslations, AttraccessUser } from '@attraccess/plugins-frontend-ui'; -import { useAccessControlServiceResourceIntroducersGetMany } from '@attraccess/react-query-client'; +import { useTranslations, FabAccessUser } from '@fabaccess/plugins-frontend-ui'; +import { useAccessControlServiceResourceIntroducersGetMany } from '@fabaccess/react-query-client'; import * as en from './translations/en.json'; import * as de from './translations/de.json'; @@ -38,7 +38,7 @@ export function IntroductionRequiredDisplay({ resourceId }: Readonly
{introducers?.map((introducer) => ( - + ))}
diff --git a/apps/frontend/src/app/resources/usage/components/OtherUserSessionDisplay/index.tsx b/apps/frontend/src/app/resources/usage/components/OtherUserSessionDisplay/index.tsx index 784ccc6a..7a1b5283 100644 --- a/apps/frontend/src/app/resources/usage/components/OtherUserSessionDisplay/index.tsx +++ b/apps/frontend/src/app/resources/usage/components/OtherUserSessionDisplay/index.tsx @@ -1,8 +1,8 @@ import { useState, useCallback, useMemo } from 'react'; import { Button, ButtonGroup, Dropdown, DropdownTrigger, DropdownMenu, DropdownItem } from '@heroui/react'; import { UserX, ChevronDownIcon } from 'lucide-react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; -import { AttraccessUser, DateTimeDisplay } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; +import { FabAccessUser, DateTimeDisplay } from '@fabaccess/plugins-frontend-ui'; import { useResourcesServiceResourceUsageStartSession, UseResourcesServiceResourceUsageGetActiveSessionKeyFn, @@ -11,7 +11,7 @@ import { useAccessControlServiceResourceIntroducersGetMany, useResourcesServiceResourceUsageCanControl, useResourcesServiceGetOneResourceById, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useQueryClient } from '@tanstack/react-query'; import { useAuth } from '../../../../../hooks/useAuth'; import { useToastMessage } from '../../../../../components/toastProvider'; @@ -114,7 +114,7 @@ export function OtherUserSessionDisplay({ resourceId }: OtherUserSessionDisplayP

{t('resourceInUseBy')}

{activeSession.user ? ( - + ) : (

{t('unknownUser')}

)} diff --git a/apps/frontend/src/app/resources/usage/components/ResourceUsageSession/index.tsx b/apps/frontend/src/app/resources/usage/components/ResourceUsageSession/index.tsx index 8fcba111..5d320329 100644 --- a/apps/frontend/src/app/resources/usage/components/ResourceUsageSession/index.tsx +++ b/apps/frontend/src/app/resources/usage/components/ResourceUsageSession/index.tsx @@ -1,7 +1,7 @@ import { useMemo } from 'react'; import { Card, CardBody, CardHeader, Spinner } from '@heroui/react'; import { Clock } from 'lucide-react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useAuth } from '../../../../../hooks/useAuth'; import { ActiveSessionDisplay } from '../ActiveSessionDisplay'; import { OtherUserSessionDisplay } from '../OtherUserSessionDisplay'; @@ -12,7 +12,7 @@ import { useResourcesServiceResourceUsageGetActiveSession, Resource, useResourcesServiceResourceUsageCanControl, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import * as en from './translations/en.json'; import * as de from './translations/de.json'; diff --git a/apps/frontend/src/app/resources/usage/components/SessionNotesModal/index.tsx b/apps/frontend/src/app/resources/usage/components/SessionNotesModal/index.tsx index 13c7057e..fba7868d 100644 --- a/apps/frontend/src/app/resources/usage/components/SessionNotesModal/index.tsx +++ b/apps/frontend/src/app/resources/usage/components/SessionNotesModal/index.tsx @@ -2,7 +2,7 @@ import { useState } from 'react'; import { Modal, ModalContent, ModalHeader, ModalBody, ModalFooter } from '@heroui/modal'; import { Button } from '@heroui/button'; import { Textarea } from '@heroui/input'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as en from './translations/en'; import * as de from './translations/de'; @@ -29,7 +29,7 @@ export const SessionNotesModal = ({ isOpen, onClose, onConfirm, mode, isSubmitti }; return ( - + {mode === SessionModalMode.START ? t('title.start') : t('title.end')} diff --git a/apps/frontend/src/app/resources/usage/components/SessionTimer/index.tsx b/apps/frontend/src/app/resources/usage/components/SessionTimer/index.tsx index 1a73d097..0e8a9026 100644 --- a/apps/frontend/src/app/resources/usage/components/SessionTimer/index.tsx +++ b/apps/frontend/src/app/resources/usage/components/SessionTimer/index.tsx @@ -1,6 +1,6 @@ import { useState, useEffect } from 'react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; -import { DateTimeDisplay } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; +import { DateTimeDisplay } from '@fabaccess/plugins-frontend-ui'; import * as en from './translations/en.json'; import * as de from './translations/de.json'; diff --git a/apps/frontend/src/app/resources/usage/components/StartSessionControls/index.tsx b/apps/frontend/src/app/resources/usage/components/StartSessionControls/index.tsx index b293a154..1d776796 100644 --- a/apps/frontend/src/app/resources/usage/components/StartSessionControls/index.tsx +++ b/apps/frontend/src/app/resources/usage/components/StartSessionControls/index.tsx @@ -1,14 +1,14 @@ import { useState, useCallback } from 'react'; import { Button, ButtonGroup, Dropdown, DropdownTrigger, DropdownMenu, DropdownItem } from '@heroui/react'; import { PlayIcon, ChevronDownIcon } from 'lucide-react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useToastMessage } from '../../../../../components/toastProvider'; import { SessionNotesModal, SessionModalMode } from '../SessionNotesModal'; import { useResourcesServiceResourceUsageStartSession, UseResourcesServiceResourceUsageGetActiveSessionKeyFn, UseResourcesServiceResourceUsageGetHistoryKeyFn, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useQueryClient } from '@tanstack/react-query'; import * as en from './translations/en.json'; import * as de from './translations/de.json'; diff --git a/apps/frontend/src/app/resources/usage/components/UsageNotesModal/index.tsx b/apps/frontend/src/app/resources/usage/components/UsageNotesModal/index.tsx index 19605274..a0ddfd08 100644 --- a/apps/frontend/src/app/resources/usage/components/UsageNotesModal/index.tsx +++ b/apps/frontend/src/app/resources/usage/components/UsageNotesModal/index.tsx @@ -1,10 +1,10 @@ import { memo } from 'react'; import { Modal, ModalContent, ModalHeader, ModalBody, ModalFooter, Button, Spinner, Textarea } from '@heroui/react'; -import { ResourceUsage } from '@attraccess/react-query-client'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { ResourceUsage } from '@fabaccess/react-query-client'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as en from './translations/en'; import * as de from './translations/de'; -import { DateTimeDisplay } from '@attraccess/plugins-frontend-ui'; +import { DateTimeDisplay } from '@fabaccess/plugins-frontend-ui'; interface UsageNotesModalProps { isOpen: boolean; @@ -18,7 +18,7 @@ export const UsageNotesModal = memo(({ isOpen, onClose, session }: UsageNotesMod if (!isOpen) return null; return ( - + {t('sessionNotes')} diff --git a/apps/frontend/src/app/resources/usage/resourceUsageHistory.tsx b/apps/frontend/src/app/resources/usage/resourceUsageHistory.tsx index a9426a7b..72766a34 100644 --- a/apps/frontend/src/app/resources/usage/resourceUsageHistory.tsx +++ b/apps/frontend/src/app/resources/usage/resourceUsageHistory.tsx @@ -1,8 +1,8 @@ import { useState } from 'react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useAuth } from '../../../hooks/useAuth'; import { Card, CardHeader, CardBody } from '@heroui/react'; -import { ResourceUsage } from '@attraccess/react-query-client'; +import { ResourceUsage } from '@fabaccess/react-query-client'; import { HistoryTable } from './components/HistoryTable'; import { HistoryHeader } from './components/HistoryHeader'; import { UsageNotesModal } from './components/UsageNotesModal'; diff --git a/apps/frontend/src/app/routes/index.tsx b/apps/frontend/src/app/routes/index.tsx index 107f4176..b78b289b 100644 --- a/apps/frontend/src/app/routes/index.tsx +++ b/apps/frontend/src/app/routes/index.tsx @@ -6,7 +6,7 @@ import { MqttServersPage, CreateMqttServerPage, EditMqttServerPage } from '../mq import { SSOProvidersPage } from '../sso/SSOProvidersPage'; import { UserManagementPage } from '../user-management'; import { usePluginStore } from 'react-pluggable'; -import { RouteConfig } from '@attraccess/plugins-frontend-sdk'; +import { RouteConfig } from '@fabaccess/plugins-frontend-sdk'; import { PluginsList } from '../plugins/PluginsList'; import usePluginState, { PluginManifestWithPlugin } from '../plugins/plugin.state'; import { FabreaderList } from '../fabreader/FabreaderList/FabreaderList'; diff --git a/apps/frontend/src/app/sso/SSOProvidersPage.tsx b/apps/frontend/src/app/sso/SSOProvidersPage.tsx index 9b094b5f..caef4b40 100644 --- a/apps/frontend/src/app/sso/SSOProvidersPage.tsx +++ b/apps/frontend/src/app/sso/SSOProvidersPage.tsx @@ -5,7 +5,7 @@ import { useAuth } from '../../hooks/useAuth'; import { Navigate } from 'react-router-dom'; import { Button } from '@heroui/react'; import { Plus } from 'lucide-react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as providerListEn from './providers/translations/en'; import * as providerListDe from './providers/translations/de'; diff --git a/apps/frontend/src/app/sso/providers/SSOProvidersList.tsx b/apps/frontend/src/app/sso/providers/SSOProvidersList.tsx index c3d3bb8b..ae82795d 100644 --- a/apps/frontend/src/app/sso/providers/SSOProvidersList.tsx +++ b/apps/frontend/src/app/sso/providers/SSOProvidersList.tsx @@ -21,7 +21,7 @@ import { } from '@heroui/react'; import { Pencil, Trash, Key, FileCode, Eye, EyeOff, Download } from 'lucide-react'; import { useToastMessage } from '../../../components/toastProvider'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { CreateSSOProviderDto, SSOProvider, @@ -33,7 +33,7 @@ import { useAuthenticationServiceGetOneSsoProviderById, useAuthenticationServiceUpdateOneSsoProvider, UseAuthenticationServiceGetAllSsoProvidersKeyFn, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useQueryClient } from '@tanstack/react-query'; import { TableDataLoadingIndicator } from '../../../components/tableComponents'; import { EmptyState } from '../../../components/emptyState'; diff --git a/apps/frontend/src/app/unauthorized/loginForm.tsx b/apps/frontend/src/app/unauthorized/loginForm.tsx index 305acc27..ef58053b 100644 --- a/apps/frontend/src/app/unauthorized/loginForm.tsx +++ b/apps/frontend/src/app/unauthorized/loginForm.tsx @@ -3,7 +3,7 @@ import { ArrowRight } from 'lucide-react'; import { Input } from '@heroui/input'; import { Button } from '@heroui/button'; import { Alert } from '@heroui/alert'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { PasswordInput } from '../../components/PasswordInput'; import { useLogin } from '../../hooks/useAuth'; import * as en from './loginForm.en.json'; diff --git a/apps/frontend/src/app/unauthorized/password-reset/passwordResetForm.tsx b/apps/frontend/src/app/unauthorized/password-reset/passwordResetForm.tsx index da2be97d..0774b703 100644 --- a/apps/frontend/src/app/unauthorized/password-reset/passwordResetForm.tsx +++ b/apps/frontend/src/app/unauthorized/password-reset/passwordResetForm.tsx @@ -1,10 +1,10 @@ import { useMemo, useState } from 'react'; import { ArrowLeft, ArrowRight } from 'lucide-react'; import { Button } from '@heroui/button'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as en from './en.json'; import * as de from './de.json'; -import { useUsersServiceRequestPasswordReset } from '@attraccess/react-query-client'; +import { useUsersServiceRequestPasswordReset } from '@fabaccess/react-query-client'; import { useToastMessage } from '../../../components/toastProvider'; import { Input } from '@heroui/input'; @@ -47,13 +47,24 @@ export function PasswordResetForm({ onGoBack }: PasswordResetFormProps) {

{t('title')}

-

- setEmail(e.target.value)} data-cy="password-reset-form-email-input" /> + setEmail(e.target.value)} + data-cy="password-reset-form-email-input" + /> - diff --git a/apps/frontend/src/components/IntroducerManagement/index.tsx b/apps/frontend/src/components/IntroducerManagement/index.tsx index 14bba21e..9f843e6b 100644 --- a/apps/frontend/src/components/IntroducerManagement/index.tsx +++ b/apps/frontend/src/components/IntroducerManagement/index.tsx @@ -1,8 +1,8 @@ import { useMemo } from 'react'; import { Card, CardHeader, CardBody, CardProps } from '@heroui/react'; import { Trash2Icon, AwardIcon } from 'lucide-react'; -import { User, ResourceIntroducer } from '@attraccess/react-query-client'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { User, ResourceIntroducer } from '@fabaccess/react-query-client'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { UserSelectionList } from '../userSelectionList'; import * as en from './en.json'; import * as de from './de.json'; diff --git a/apps/frontend/src/components/IntroductionStatusChip/index.tsx b/apps/frontend/src/components/IntroductionStatusChip/index.tsx index db55ec58..797792d9 100644 --- a/apps/frontend/src/components/IntroductionStatusChip/index.tsx +++ b/apps/frontend/src/components/IntroductionStatusChip/index.tsx @@ -1,4 +1,4 @@ -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { Chip } from '@heroui/react'; import de from './de.json'; diff --git a/apps/frontend/src/components/IntroductionsManagement/history/index.tsx b/apps/frontend/src/components/IntroductionsManagement/history/index.tsx index 7588133a..10a3430b 100644 --- a/apps/frontend/src/components/IntroductionsManagement/history/index.tsx +++ b/apps/frontend/src/components/IntroductionsManagement/history/index.tsx @@ -1,11 +1,11 @@ -import { DateTimeDisplay, useTranslations } from '@attraccess/plugins-frontend-ui'; +import { DateTimeDisplay, useTranslations } from '@fabaccess/plugins-frontend-ui'; import { Modal, ModalContent, ModalHeader, ModalBody, ModalFooter } from '@heroui/modal'; import { Button, Pagination, Table, TableBody, TableCell, TableColumn, TableHeader, TableRow } from '@heroui/react'; import { useMemo, useState } from 'react'; import { TableDataLoadingIndicator } from '../../../components/tableComponents'; import { EmptyState } from '../../../components/emptyState'; import { IntroductionStatusChip } from '../../IntroductionStatusChip'; -import { ResourceIntroductionHistoryItem } from '@attraccess/react-query-client'; +import { ResourceIntroductionHistoryItem } from '@fabaccess/react-query-client'; import * as en from './en.json'; import * as de from './de.json'; diff --git a/apps/frontend/src/components/IntroductionsManagement/index.tsx b/apps/frontend/src/components/IntroductionsManagement/index.tsx index 42240a8e..501f9aab 100644 --- a/apps/frontend/src/components/IntroductionsManagement/index.tsx +++ b/apps/frontend/src/components/IntroductionsManagement/index.tsx @@ -15,8 +15,8 @@ import { Form, } from '@heroui/react'; import { HistoryIcon, ShieldCheckIcon } from 'lucide-react'; -import { ResourceIntroduction, User } from '@attraccess/react-query-client'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { ResourceIntroduction, User } from '@fabaccess/react-query-client'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as en from './en.json'; import * as de from './de.json'; import { PageHeader } from '../pageHeader'; diff --git a/apps/frontend/src/components/PWAUpdatePrompt/index.tsx b/apps/frontend/src/components/PWAUpdatePrompt/index.tsx index 37361398..4a7afde0 100644 --- a/apps/frontend/src/components/PWAUpdatePrompt/index.tsx +++ b/apps/frontend/src/components/PWAUpdatePrompt/index.tsx @@ -1,6 +1,6 @@ import { useRegisterSW } from 'virtual:pwa-register/react'; import { Button, Modal, ModalBody, ModalContent, ModalFooter, ModalHeader } from '@heroui/react'; -import { useFormatDateTime, useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useFormatDateTime, useTranslations } from '@fabaccess/plugins-frontend-ui'; import { useCallback, useMemo, useState } from 'react'; import { PageHeader } from '../pageHeader'; import { ClockIcon, GiftIcon, RefreshCcwIcon } from 'lucide-react'; diff --git a/apps/frontend/src/components/PWAUpdatePrompt/installationProgressIndicator/index.tsx b/apps/frontend/src/components/PWAUpdatePrompt/installationProgressIndicator/index.tsx index e63f4491..6a47ccea 100644 --- a/apps/frontend/src/components/PWAUpdatePrompt/installationProgressIndicator/index.tsx +++ b/apps/frontend/src/components/PWAUpdatePrompt/installationProgressIndicator/index.tsx @@ -1,7 +1,7 @@ import { Modal, ModalBody, ModalContent, ModalHeader, Progress } from '@heroui/react'; import { PageHeader } from '../../pageHeader'; import { RefreshCcwIcon } from 'lucide-react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import de from './de.json'; import en from './en.json'; diff --git a/apps/frontend/src/components/PasswordInput/PasswordInput.tsx b/apps/frontend/src/components/PasswordInput/PasswordInput.tsx index 54db4891..6edb0706 100644 --- a/apps/frontend/src/components/PasswordInput/PasswordInput.tsx +++ b/apps/frontend/src/components/PasswordInput/PasswordInput.tsx @@ -3,7 +3,7 @@ import { Input, InputProps } from '@heroui/input'; import { Button } from '@heroui/button'; import { Tooltip } from '@heroui/tooltip'; import { Eye, EyeOff } from 'lucide-react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as en from './PasswordInput.en.json'; import * as de from './PasswordInput.de.json'; @@ -19,17 +19,14 @@ export interface PasswordInputProps extends Omit = ({ - additionalEndContent, - ...inputProps -}) => { +export const PasswordInput: React.FC = ({ additionalEndContent, ...inputProps }) => { const [showPassword, setShowPassword] = useState(false); const { t } = useTranslations('passwordInput', { en, de }); @@ -55,11 +52,5 @@ export const PasswordInput: React.FC = ({
); - return ( - - ); -}; \ No newline at end of file + return ; +}; diff --git a/apps/frontend/src/components/bootScreen/index.tsx b/apps/frontend/src/components/bootScreen/index.tsx index d3745433..400c7508 100644 --- a/apps/frontend/src/components/bootScreen/index.tsx +++ b/apps/frontend/src/components/bootScreen/index.tsx @@ -1,4 +1,4 @@ -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import { UnauthorizedLayout } from '../../app/unauthorized/unauthorized-layout/layout'; import { PageHeader } from '../pageHeader'; import { Progress } from '@heroui/react'; diff --git a/apps/frontend/src/components/deleteConfirmationModal/index.tsx b/apps/frontend/src/components/deleteConfirmationModal/index.tsx index 1a39f0b9..9c22d99e 100644 --- a/apps/frontend/src/components/deleteConfirmationModal/index.tsx +++ b/apps/frontend/src/components/deleteConfirmationModal/index.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Modal, ModalContent, ModalHeader, ModalBody, ModalFooter, ModalProps } from '@heroui/modal'; import { Button } from '@heroui/button'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as en from './en.json'; import * as de from './de.json'; import { Trans } from 'react-i18next'; diff --git a/apps/frontend/src/components/emptyState.tsx b/apps/frontend/src/components/emptyState.tsx index 659a1c67..36923090 100644 --- a/apps/frontend/src/components/emptyState.tsx +++ b/apps/frontend/src/components/emptyState.tsx @@ -1,5 +1,5 @@ import { MehIcon } from 'lucide-react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; export const EmptyState = () => { const { t } = useTranslations('emptyState', { diff --git a/apps/frontend/src/components/imageUpload/index.tsx b/apps/frontend/src/components/imageUpload/index.tsx index bd88ad10..dd13df4f 100644 --- a/apps/frontend/src/components/imageUpload/index.tsx +++ b/apps/frontend/src/components/imageUpload/index.tsx @@ -1,6 +1,6 @@ import React, { useCallback, useEffect, useState, HTMLAttributes, useMemo } from 'react'; import { ImageIcon, X } from 'lucide-react'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; import * as en from './en.json'; import * as de from './de.json'; import { useToastMessage } from '../toastProvider'; diff --git a/apps/frontend/src/components/logo/index.tsx b/apps/frontend/src/components/logo/index.tsx index 63ff8f1b..f676942f 100644 --- a/apps/frontend/src/components/logo/index.tsx +++ b/apps/frontend/src/components/logo/index.tsx @@ -7,8 +7,8 @@ export function Logo(props: Omit) { href={props.href ?? '/'} className={cn(props.className, 'font-bold text-inherit flex items-center gap-2')} > - - Attraccess + + FabAccess ); } diff --git a/apps/frontend/src/components/pwaInstall/index.tsx b/apps/frontend/src/components/pwaInstall/index.tsx index 0469a587..4dd5e9e5 100644 --- a/apps/frontend/src/components/pwaInstall/index.tsx +++ b/apps/frontend/src/components/pwaInstall/index.tsx @@ -1,7 +1,7 @@ import PWAInstallFromLib from '@khmyznikov/pwa-install/react-legacy'; import de from './de.json'; import en from './en.json'; -import { useTranslations } from '@attraccess/plugins-frontend-ui'; +import { useTranslations } from '@fabaccess/plugins-frontend-ui'; declare global { interface Window { @@ -18,7 +18,7 @@ export function PWAInstall() { return ( diff --git a/apps/frontend/src/components/userSelectionList/index.tsx b/apps/frontend/src/components/userSelectionList/index.tsx index 5bb46e4a..103abadd 100644 --- a/apps/frontend/src/components/userSelectionList/index.tsx +++ b/apps/frontend/src/components/userSelectionList/index.tsx @@ -1,5 +1,5 @@ -import { AttraccessUser, UserSearch, useTranslations } from '@attraccess/plugins-frontend-ui'; -import { User } from '@attraccess/react-query-client'; +import { FabAccessUser, UserSearch, useTranslations } from '@fabaccess/plugins-frontend-ui'; +import { User } from '@fabaccess/react-query-client'; import { Button, ButtonProps, @@ -147,7 +147,7 @@ export function UserSelectionList(props: Readonly ( - + { diff --git a/apps/frontend/src/hooks/useAuth.ts b/apps/frontend/src/hooks/useAuth.ts index 17a2194d..10ca448c 100644 --- a/apps/frontend/src/hooks/useAuth.ts +++ b/apps/frontend/src/hooks/useAuth.ts @@ -9,7 +9,7 @@ import { useAuthenticationServiceRefreshSession, useAuthenticationServiceRefreshSessionKey, useUsersServiceGetCurrent, -} from '@attraccess/react-query-client'; +} from '@fabaccess/react-query-client'; import { useCallback, useEffect, useRef, useState } from 'react'; interface LoginCredentials { diff --git a/apps/frontend/src/hooks/useHasValidIntroduction.ts b/apps/frontend/src/hooks/useHasValidIntroduction.ts index 7311af01..23f72e80 100644 --- a/apps/frontend/src/hooks/useHasValidIntroduction.ts +++ b/apps/frontend/src/hooks/useHasValidIntroduction.ts @@ -1,4 +1,4 @@ -import { ResourceIntroduction, User } from '@attraccess/react-query-client'; +import { ResourceIntroduction, User } from '@fabaccess/react-query-client'; import { useCallback } from 'react'; interface Props { diff --git a/apps/frontend/src/main.tsx b/apps/frontend/src/main.tsx index 6165adf2..e3f00127 100644 --- a/apps/frontend/src/main.tsx +++ b/apps/frontend/src/main.tsx @@ -3,7 +3,7 @@ import { BrowserRouter } from 'react-router-dom'; import * as ReactDOM from 'react-dom/client'; import { QueryClientProvider } from '@tanstack/react-query'; import App from './app/app'; -import '@attraccess/plugins-frontend-ui'; +import '@fabaccess/plugins-frontend-ui'; import { queryClient } from './api/queryClient'; import setupApiParameters from './api'; import { PluginProvider } from './app/plugins/plugin-provider'; diff --git a/apps/frontend/src/service-worker/site.webmanifest.json b/apps/frontend/src/service-worker/site.webmanifest.json index 283596a6..dd689a92 100644 --- a/apps/frontend/src/service-worker/site.webmanifest.json +++ b/apps/frontend/src/service-worker/site.webmanifest.json @@ -1,8 +1,8 @@ { "$schema": "https://json.schemastore.org/web-manifest-combined.json", - "name": "Attraccess", - "short_name": "Attraccess", - "description": "Attraccess is a platform for managing access to resources in a collaborative environment (e.g. Makerspaces and FabLabs).", + "name": "FabAccess", + "short_name": "FabAccess", + "description": "FabAccess is a platform for managing access to resources in a collaborative environment (e.g. Makerspaces and FabLabs).", "start_url": "/?pwa=true", "theme_color": "#000000", "background_color": "#000000", diff --git a/apps/frontend/src/test-utils/fixtures.ts b/apps/frontend/src/test-utils/fixtures.ts index 30711a0d..d896638d 100644 --- a/apps/frontend/src/test-utils/fixtures.ts +++ b/apps/frontend/src/test-utils/fixtures.ts @@ -1,4 +1,4 @@ -import { Resource } from '@attraccess/react-query-client'; +import { Resource } from '@fabaccess/react-query-client'; /** * Creates a mock resource with the given overrides diff --git a/apps/frontend/tsconfig.app.json b/apps/frontend/tsconfig.app.json index 78394d60..5c98e728 100644 --- a/apps/frontend/tsconfig.app.json +++ b/apps/frontend/tsconfig.app.json @@ -24,5 +24,5 @@ "src/**/*.test.jsx", "jest.config.ts", ], - "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx", "../../libs/plugins-frontend-ui/src/lib/components/attraccess-user/attraccessUser.de.ts", "../../libs/plugins-frontend-ui/src/lib/components/attraccess-user/attraccessUser.en.ts"] + "include": ["src/**/*.js", "src/**/*.jsx", "src/**/*.ts", "src/**/*.tsx", "../../libs/plugins-frontend-ui/src/lib/components/fabaccess-user/fabaccessUser.de.ts", "../../libs/plugins-frontend-ui/src/lib/components/fabaccess-user/fabaccessUser.en.ts"] } diff --git a/apps/frontend/vite.config.ts b/apps/frontend/vite.config.ts index 10ba9713..ebe2cd41 100644 --- a/apps/frontend/vite.config.ts +++ b/apps/frontend/vite.config.ts @@ -27,7 +27,7 @@ export default defineConfig({ nxCopyAssetsPlugin([]), // MillionLint.vite(), federation({ - name: 'attraccess', + name: 'fabaccess', remotes: { // Dynamic remotes will be loaded at runtime // dummy remote so that vite prepares the shared libs, diff --git a/build.sh b/build.sh index d01b38a2..3e4a5b4b 100755 --- a/build.sh +++ b/build.sh @@ -58,13 +58,13 @@ echo "Running docker build with arguments: ${BUILD_ARGS[@]}" docker build \ "${BUILD_ARGS[@]}" \ "${SECRET_ARGS[@]}" \ - -t attraccess:${VERSION_TAG} \ + -t fabaccess:${VERSION_TAG} \ . # Always tag as latest for convenience if [[ "$VERSION_TAG" != "latest" ]]; then - docker tag attraccess:${VERSION_TAG} attraccess:latest - echo "Docker image built successfully with tags: attraccess:${VERSION_TAG}, attraccess:latest" + docker tag fabaccess:${VERSION_TAG} fabaccess:latest + echo "Docker image built successfully with tags: fabaccess:${VERSION_TAG}, fabaccess:latest" else - echo "Docker image built successfully with tag: attraccess:latest" + echo "Docker image built successfully with tag: fabaccess:latest" fi \ No newline at end of file diff --git a/config/mosquitto/mosquitto.conf b/config/mosquitto/mosquitto.conf index 308caa01..14fbdc6c 100644 --- a/config/mosquitto/mosquitto.conf +++ b/config/mosquitto/mosquitto.conf @@ -1,4 +1,4 @@ -# Mosquitto Configuration for Attraccess Development +# Mosquitto Configuration for FabAccess Development # Default listener listener 1883 diff --git a/docker-compose.local.yml b/docker-compose.local.yml index 3d322ae5..21beb241 100644 --- a/docker-compose.local.yml +++ b/docker-compose.local.yml @@ -1,5 +1,5 @@ services: - attraccess: + fabaccess: restart: unless-stopped build: context: . @@ -16,5 +16,3 @@ services: ports: - '8025:8025' - '1025:1025' - - diff --git a/docs/HOME.md b/docs/HOME.md index 9d9fa7e6..53661b06 100644 --- a/docs/HOME.md +++ b/docs/HOME.md @@ -1,30 +1,30 @@ -# Attraccess Documentation +# FabAccess Documentation -Welcome to the official documentation for Attraccess. This comprehensive guide covers everything you need to know about setup, maintenance, usage, and development. +Welcome to the official documentation for FabAccess. This comprehensive guide covers everything you need to know about setup, maintenance, usage, and development. > [!NOTE] > This documentation is continuously updated. Make sure you're viewing the latest version by refreshing your browser or pulling the latest changes. ## Overview -Attraccess is a powerful platform designed to simplify and secure access management. Our documentation is organized into three main sections to help all types of users find the information they need: +FabAccess is a powerful platform designed to simplify and secure access management. Our documentation is organized into three main sections to help all types of users find the information they need: - **Setup & Maintenance** - Installation guides, configuration options, and system maintenance -- **User Guides** - Step-by-step instructions for using Attraccess features +- **User Guides** - Step-by-step instructions for using FabAccess features - **Developer Documentation** - API references, integration guides, and custom development ## Getting Started - For new installations, visit the [Setup Guide](setup/installation.md) - Existing users should check the [User Guides](user/getting-started.md) -- Developers interested in extending Attraccess can explore the [Developer Documentation](developer/get-started.md) +- Developers interested in extending FabAccess can explore the [Developer Documentation](developer/get-started.md) > [!TIP] -> If you're setting up Attraccess for the first time, we recommend starting with our [Docker installation guide](setup/docker.md) for the quickest deployment. +> If you're setting up FabAccess for the first time, we recommend starting with our [Docker installation guide](setup/docker.md) for the quickest deployment. ## Support -Need help? Open an issue on our [GitHub repository](https://github.com/FabInfra/Attraccess). +Need help? Open an issue on our [GitHub repository](https://github.com/FabInfra/FabAccess). > [!NOTE] -> This documentation is also accessible directly from your running Attraccess instance at `/docs`. +> This documentation is also accessible directly from your running FabAccess instance at `/docs`. diff --git a/docs/developer/get-started.md b/docs/developer/get-started.md index 7a40e680..5f4ab3f5 100644 --- a/docs/developer/get-started.md +++ b/docs/developer/get-started.md @@ -2,10 +2,10 @@ ## Introduction -Attraccess is a comprehensive resource management system for tracking and managing access to shared resources. This guide will help you get started with developing and enhancing the project. +FabAccess is a comprehensive resource management system for tracking and managing access to shared resources. This guide will help you get started with developing and enhancing the project. > [!NOTE] -> This guide is intended for developers who want to contribute to or extend the Attraccess platform. If you're looking for user documentation, please refer to the [User Guides](../user/) section. +> This guide is intended for developers who want to contribute to or extend the FabAccess platform. If you're looking for user documentation, please refer to the [User Guides](../user/) section. ## Technology Stack @@ -42,7 +42,7 @@ Attraccess is a comprehensive resource management system for tracking and managi ## Project Structure -Attraccess follows an Nx monorepo structure, organized into apps and libs: +FabAccess follows an Nx monorepo structure, organized into apps and libs: ### Apps @@ -73,8 +73,8 @@ Attraccess follows an Nx monorepo structure, organized into apps and libs: 1. Clone the repository: ```bash - git clone https://github.com/yourusername/Attraccess.git - cd Attraccess + git clone https://github.com/yourusername/FabAccess.git + cd FabAccess ``` 2. Install dependencies: @@ -147,10 +147,10 @@ nx build frontend ### Plugin Development -Attraccess supports a plugin system for both frontend and backend extensions. For detailed information on plugin development, please refer to the [Plugin Development Guide](/developer/plugins.md). +FabAccess supports a plugin system for both frontend and backend extensions. For detailed information on plugin development, please refer to the [Plugin Development Guide](/developer/plugins.md). > [!NOTE] -> Plugins are a powerful way to extend Attraccess functionality without modifying the core codebase. They can be developed and distributed independently. +> Plugins are a powerful way to extend FabAccess functionality without modifying the core codebase. They can be developed and distributed independently. ## Useful Commands @@ -172,10 +172,10 @@ nx graph For detailed information about the API and OpenAPI documentation, please refer to the [OpenAPI Documentation Guide](/developer/openapi.md). -The full Attraccess documentation is also accessible directly from your running instance at: +The full FabAccess documentation is also accessible directly from your running instance at: ``` -/docs +/docs ``` ## Need Help? diff --git a/docs/developer/openapi.md b/docs/developer/openapi.md index 74409431..620d4f42 100644 --- a/docs/developer/openapi.md +++ b/docs/developer/openapi.md @@ -17,16 +17,16 @@ Learn more about OpenAPI: - [OpenAPI Initiative](https://www.openapis.org/) - [Swagger Documentation](https://swagger.io/docs/) -## Attraccess OpenAPI Support +## FabAccess OpenAPI Support -All Attraccess endpoints are documented using OpenAPI specifications. This provides a comprehensive API reference that can be explored interactively. +All FabAccess endpoints are documented using OpenAPI specifications. This provides a comprehensive API reference that can be explored interactively. ### Accessing the OpenAPI UI -Once you have a running Attraccess instance, you can access the OpenAPI UI at: +Once you have a running FabAccess instance, you can access the OpenAPI UI at: ``` -/api +/api ``` This interactive interface allows you to: @@ -41,20 +41,20 @@ This interactive interface allows you to: The raw OpenAPI schema is available in JSON format at: ``` -/api-json +/api-json ``` This schema can be downloaded and used with various OpenAPI tools for client code generation, documentation, and more. ### Accessing the Documentation -The full Attraccess documentation is available through docsify and can be accessed at: +The full FabAccess documentation is available through docsify and can be accessed at: ``` -/docs +/docs ``` -This provides comprehensive documentation on all aspects of Attraccess, including setup guides, user guides, and developer documentation. +This provides comprehensive documentation on all aspects of FabAccess, including setup guides, user guides, and developer documentation. ## Generating Client Code @@ -66,19 +66,19 @@ You can use tools like: - [Swagger Codegen](https://github.com/swagger-api/swagger-codegen) - Official Swagger code generation tool - [NSwag](https://github.com/RicoSuter/NSwag) - .NET-focused OpenAPI toolchain -### Pre-Generated Attraccess Clients +### Pre-Generated FabAccess Clients -Attraccess automatically generates JavaScript/TypeScript clients based on the OpenAPI schema. These clients are available as npm packages: +FabAccess automatically generates JavaScript/TypeScript clients based on the OpenAPI schema. These clients are available as npm packages: -- **@attraccess/api-client**: Basic fetch-based API client +- **@fabaccess/api-client**: Basic fetch-based API client ```bash - npm install @attraccess/api-client + npm install @fabaccess/api-client ``` -- **@attraccess/react-query-client**: Client with React Query integration for React applications +- **@fabaccess/react-query-client**: Client with React Query integration for React applications ```bash - npm install @attraccess/react-query-client + npm install @fabaccess/react-query-client ``` -These pre-generated clients provide type-safe access to all Attraccess endpoints with proper TypeScript typing, reducing implementation time and potential errors when interacting with the API. +These pre-generated clients provide type-safe access to all FabAccess endpoints with proper TypeScript typing, reducing implementation time and potential errors when interacting with the API. diff --git a/docs/developer/plugins.md b/docs/developer/plugins.md index 938f5a7f..f9b51644 100644 --- a/docs/developer/plugins.md +++ b/docs/developer/plugins.md @@ -2,9 +2,9 @@ ## Overview -The Attraccess plugin system enables developers to extend the platform's capabilities without modifying the core codebase. This modular approach allows for customized functionality while maintaining a stable foundation. +The FabAccess plugin system enables developers to extend the platform's capabilities without modifying the core codebase. This modular approach allows for customized functionality while maintaining a stable foundation. -Plugins in Attraccess consist of three main components: +Plugins in FabAccess consist of three main components: 1. **Plugin Manifest (`plugin.json`)** - A descriptor file defining the plugin and its entry points 2. **Frontend Module** - A React-based component that extends the UI (optional) @@ -33,7 +33,7 @@ plugin-name/ ### Compiled Structure -After compilation, the plugin structure that gets loaded by Attraccess looks like this: +After compilation, the plugin structure that gets loaded by FabAccess looks like this: ``` plugin-name/ @@ -49,7 +49,7 @@ plugin-name/ └── other assets # CSS, images, etc. ``` -The compiled version is what gets loaded by the Attraccess plugin system at runtime. +The compiled version is what gets loaded by the FabAccess plugin system at runtime. ## Plugin Manifest @@ -67,7 +67,7 @@ The `plugin.json` file is required for all plugins and defines the plugin's meta }, "version": "0.0.16", "description": "Description of the plugin", - "attraccessVersion": { + "fabaccessVersion": { "min": "0.0.0", "max": "2.0.0", "exact": null @@ -85,15 +85,15 @@ The `plugin.json` file is required for all plugins and defines the plugin's meta | `main.frontend.entryPoint` | Path to the frontend entry point | | `version` | Plugin version | | `description` | Plugin description | -| `attraccessVersion` | Compatibility with Attraccess versions | +| `fabaccessVersion` | Compatibility with FabAccess versions | -### The `attraccessVersion` Field +### The `fabaccessVersion` Field -The `attraccessVersion` field helps ensure compatibility between your plugin and the Attraccess platform: +The `fabaccessVersion` field helps ensure compatibility between your plugin and the FabAccess platform: -- `min`: Specifies the minimum Attraccess version your plugin is compatible with -- `max`: Specifies the maximum Attraccess version your plugin is compatible with -- `exact`: If set, specifies that your plugin only works with this exact Attraccess version +- `min`: Specifies the minimum FabAccess version your plugin is compatible with +- `max`: Specifies the maximum FabAccess version your plugin is compatible with +- `exact`: If set, specifies that your plugin only works with this exact FabAccess version You can specify any combination of these properties. For example: @@ -101,7 +101,7 @@ You can specify any combination of these properties. For example: - `{ "min": "1.0.0", "max": "2.0.0" }` - Compatible with versions between 1.0.0 and 2.0.0 - `{ "exact": "1.5.0" }` - Only compatible with version 1.5.0 -When Attraccess loads a plugin, it compares its own version with the plugin's compatibility settings and will only load the plugin if the versions match. This prevents loading plugins that might cause errors due to incompatible APIs or features. +When FabAccess loads a plugin, it compares its own version with the plugin's compatibility settings and will only load the plugin if the versions match. This prevents loading plugins that might cause errors due to incompatible APIs or features. Version checking follows semantic versioning rules (major.minor.patch): @@ -111,21 +111,17 @@ Version checking follows semantic versioning rules (major.minor.patch): ## Frontend Plugin Development -The frontend part of a plugin extends the Attraccess UI using [React](https://reactjs.org/) and the [react-pluggable](https://github.com/adarshpastakia/react-pluggable) library. It is compiled as a [Module Federation](https://webpack.js.org/concepts/module-federation/) package to enable dynamic loading. +The frontend part of a plugin extends the FabAccess UI using [React](https://reactjs.org/) and the [react-pluggable](https://github.com/adarshpastakia/react-pluggable) library. It is compiled as a [Module Federation](https://webpack.js.org/concepts/module-federation/) package to enable dynamic loading. ### Creating a Frontend Plugin -1. Create a class that implements the `AttraccessFrontendPlugin` interface: +1. Create a class that implements the `FabAccessFrontendPlugin` interface: ```tsx import { PluginStore } from 'react-pluggable'; -import { - AttraccessFrontendPlugin, - AttraccessFrontendPluginAuthData, - RouteConfig, -} from '@attraccess/plugins-frontend-sdk'; +import { FabAccessFrontendPlugin, FabAccessFrontendPluginAuthData, RouteConfig } from '@fabaccess/plugins-frontend-sdk'; -export default class MyPlugin implements AttraccessFrontendPlugin { +export default class MyPlugin implements FabAccessFrontendPlugin { public pluginStore!: PluginStore; public readonly name = 'MyPlugin'; public readonly version = 'v1.0.0'; @@ -146,7 +142,7 @@ export default class MyPlugin implements AttraccessFrontendPlugin { // Handle API endpoint changes } - onApiAuthStateChange(authData: null | AttraccessFrontendPluginAuthData): void { + onApiAuthStateChange(authData: null | FabAccessFrontendPluginAuthData): void { // Handle authentication state changes } @@ -171,9 +167,9 @@ export default class MyPlugin implements AttraccessFrontendPlugin { ### Understanding the `GET_ROUTES` Function -The `GET_ROUTES` function is a critical part of the plugin integration with Attraccess. When you register this function: +The `GET_ROUTES` function is a critical part of the plugin integration with FabAccess. When you register this function: -1. The Attraccess core application automatically discovers your plugin's routes +1. The FabAccess core application automatically discovers your plugin's routes 2. These routes are integrated into the main application's routing system 3. Your plugin's UI components are rendered at the specified paths 4. If you include a `sidebar` configuration, your plugin gets an entry in the navigation menu @@ -189,7 +185,7 @@ The function should return an array of `RouteConfig` objects with these properti | `sidebar.label` | The text displayed in the sidebar | | `sidebar.icon` | The icon component for the sidebar item | -The Attraccess router system is built on [React Router](https://reactrouter.com/), so your routes will be integrated into the application's routing hierarchy. This means you can: +The FabAccess router system is built on [React Router](https://reactrouter.com/), so your routes will be integrated into the application's routing hierarchy. This means you can: - Access URL parameters with React Router's hooks - Create nested routes within your plugin @@ -221,8 +217,8 @@ export default defineConfig({ 'react-i18next', 'i18next-browser-languagedetector', '@tanstack/react-query', - '@attraccess/react-query-client', - '@attraccess/plugins-frontend-ui', + '@fabaccess/react-query-client', + '@fabaccess/plugins-frontend-ui', ], }), // ... other plugins @@ -233,13 +229,13 @@ export default defineConfig({ ### Shared Dependencies -The `shared` array in the Module Federation configuration is crucial. It specifies which dependencies should be shared between the host application (Attraccess) and your plugin. This is important for: +The `shared` array in the Module Federation configuration is crucial. It specifies which dependencies should be shared between the host application (FabAccess) and your plugin. This is important for: 1. **Preventing Duplicate Modules**: Without shared dependencies, React and other libraries would be loaded multiple times, causing conflicts and increased bundle size 2. **Shared Context**: Components like contexts need to be from the same instance to work properly 3. **Consistent Versions**: Ensures all components use the same version of libraries -The following dependencies must be shared for proper integration with Attraccess: +The following dependencies must be shared for proper integration with FabAccess: ```js [ @@ -252,8 +248,8 @@ The following dependencies must be shared for proper integration with Attraccess 'react-i18next', 'i18next-browser-languagedetector', '@tanstack/react-query', - '@attraccess/react-query-client', - '@attraccess/plugins-frontend-ui', + '@fabaccess/react-query-client', + '@fabaccess/plugins-frontend-ui', ]; ``` @@ -279,7 +275,7 @@ The following dependencies must be shared for proper integration with Attraccess - Purpose: Core plugin architecture that enables plugin functionality - [Documentation](https://github.com/adarshpastakia/react-pluggable) -5. **@heroui/react** - UI component library of Attraccess +5. **@heroui/react** - UI component library of FabAccess - Purpose: Provides UI components and styling for the application - [Documentation](https://www.heroui.com/) @@ -304,14 +300,14 @@ The following dependencies must be shared for proper integration with Attraccess - Purpose: Manages API requests, caching, and state - [Documentation](https://tanstack.com/query/latest) -10. **@attraccess/react-query-client** - Attraccess-specific React Query client +10. **@fabaccess/react-query-client** - FabAccess-specific React Query client - - Purpose: Pre-configured React Query client for Attraccess API endpoints - - Internal library specific to Attraccess + - Purpose: Pre-configured React Query client for FabAccess API endpoints + - Internal library specific to FabAccess -11. **@attraccess/plugins-frontend-ui** - Attraccess UI components for plugins +11. **@fabaccess/plugins-frontend-ui** - FabAccess UI components for plugins - Purpose: Shared UI components to maintain consistent look and feel - - Internal library specific to Attraccess + - Internal library specific to FabAccess If you don't properly share these dependencies: @@ -322,7 +318,7 @@ If you don't properly share these dependencies: ## Backend Plugin Development -The backend part of a plugin extends the Attraccess API using [NestJS](https://nestjs.com/) dynamic modules. +The backend part of a plugin extends the FabAccess API using [NestJS](https://nestjs.com/) dynamic modules. ### Creating a Backend Plugin @@ -343,7 +339,7 @@ import { MyPluginService } from './my-plugin.service'; export default class MyPluginModule {} ``` -The module must be exported as the default export. This allows the Attraccess plugin system to dynamically load it. +The module must be exported as the default export. This allows the FabAccess plugin system to dynamically load it. 2. Implement your controllers, services, and other components as needed: @@ -366,7 +362,7 @@ export class MyPluginController { ### Loading -The Attraccess plugin system loads plugins in this sequence: +The FabAccess plugin system loads plugins in this sequence: 1. The system scans the plugins directory for `plugin.json` files 2. For each valid plugin, it: @@ -382,14 +378,14 @@ When a plugin is loaded: 2. The frontend plugin is instantiated and its `init` method is called with the plugin store 3. The plugin's `activate` method is called, allowing it to register functionality -## Example: FabReader Plugin +## Example: FABReader Plugin -The FabReader plugin is a complete example that demonstrates how to implement both frontend and backend functionality: +The FABReader plugin is a complete example that demonstrates how to implement both frontend and backend functionality: -- Frontend: Provides a UI for managing FabReaders -- Backend: Implements APIs for communicating with FabReader devices +- Frontend: Provides a UI for managing FAB readers +- Backend: Implements APIs for communicating with FAB reader devices -You can examine the FabReader plugin code in `/libs/plugin-fabreader` as a reference for creating your own plugins. +You can examine the FABReader plugin code in `/libs/plugin-fabreader` as a reference for creating your own plugins. ## Best Practices diff --git a/docs/index.html b/docs/index.html index cf56ef6d..c850429c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,79 +1,94 @@ - - - Attraccess Documentation - - - - + + + FabAccess Documentation + + + + - - - + + + - - - - -
- + + + + +
+ - - - - - - - - - - + + + + + + + + + + - + - - - + type="text/javascript" + > + + diff --git a/docs/setup/beginner-guide.md b/docs/setup/beginner-guide.md index 63e5c2a1..d519753f 100644 --- a/docs/setup/beginner-guide.md +++ b/docs/setup/beginner-guide.md @@ -1,10 +1,10 @@ -# Beginner's Guide to Attraccess Installation +# Beginner's Guide to FabAccess Installation -This guide is designed for absolute beginners with no prior knowledge of Docker or server deployment. We'll walk through each step carefully to help you get Attraccess up and running. +This guide is designed for absolute beginners with no prior knowledge of Docker or server deployment. We'll walk through each step carefully to help you get FabAccess up and running. -## What is Attraccess? +## What is FabAccess? -Attraccess is a complete solution for managing access to spaces, resources, and equipment. It's packaged as a Docker container, which is a standardized way to deliver software that works consistently across different computers and servers. +FabAccess is a complete solution for managing access to spaces, resources, and equipment. It's packaged as a Docker container, which is a standardized way to deliver software that works consistently across different computers and servers. ## Prerequisites @@ -21,11 +21,11 @@ Before you begin, you'll need: Docker is a platform that allows you to package and run applications in isolated environments called "containers." Think of a container as a lightweight, standalone package that includes everything needed to run the software: code, runtime, system tools, libraries, and settings. -> 💡 **Why Docker?** Docker makes it easy to install and run software without worrying about dependencies or configuration issues. It ensures that Attraccess runs the same way regardless of where it's installed. +> 💡 **Why Docker?** Docker makes it easy to install and run software without worrying about dependencies or configuration issues. It ensures that FabAccess runs the same way regardless of where it's installed. ### Installing Docker -Before you can run Attraccess, you need to install Docker on your system: +Before you can run FabAccess, you need to install Docker on your system: - **Windows**: Download and install [Docker Desktop for Windows](https://www.docker.com/products/docker-desktop) - **macOS**: Download and install [Docker Desktop for Mac](https://www.docker.com/products/docker-desktop) @@ -38,26 +38,26 @@ After installation: ## Step-by-Step Installation Guide -### Step 1: Create Directories for Attraccess +### Step 1: Create Directories for FabAccess -First, create directories to store your Attraccess data: +First, create directories to store your FabAccess data: ```bash -# Create a main directory for Attraccess -mkdir -p ~/attraccess +# Create a main directory for FabAccess +mkdir -p ~/fabaccess # Create subdirectories for storage and plugins -mkdir -p ~/attraccess/storage -mkdir -p ~/attraccess/plugins +mkdir -p ~/fabaccess/storage +mkdir -p ~/fabaccess/plugins ``` ### Step 2: Create Your Environment Configuration -You need to configure several settings for Attraccess to work correctly: +You need to configure several settings for FabAccess to work correctly: ```bash -# Navigate to your Attraccess directory -cd ~/attraccess +# Navigate to your FabAccess directory +cd ~/fabaccess # Create an environment file touch .env @@ -70,7 +70,7 @@ Now, open the `.env` file with a text editor and add the following configuration AUTH_JWT_ORIGIN=ENV AUTH_JWT_SECRET=replace_with_a_long_random_string AUTH_SESSION_SECRET=replace_with_another_long_random_string -VITE_ATTRACCESS_URL=http://localhost:3000 +VITE_FABACCESS_URL=http://localhost:3000 # Email Configuration SMTP_SERVICE=SMTP @@ -90,52 +90,52 @@ LOG_LEVELS=error,warn,log > - You can generate secure random strings with this command: `openssl rand -base64 32` > - Never share these values with anyone -### Step 3: Running Attraccess +### Step 3: Running FabAccess -Now that you've set up your configuration, you can run Attraccess: +Now that you've set up your configuration, you can run FabAccess: ```bash docker run -d \ - --name attraccess \ + --name fabaccess \ -p 3000:3000 \ --env-file ./.env \ -v $(pwd)/storage:/app/storage \ -v $(pwd)/plugins:/app/plugins \ - fabaccess/attraccess:latest + fabaccess/fabaccess:latest ``` -### Step 4: Accessing Attraccess +### Step 4: Accessing FabAccess Once the container is running: 1. Open your web browser 2. Go to `http://localhost:3000` -3. You should see the Attraccess login page +3. You should see the FabAccess login page #### Accessing from a Remote Server -If you've installed Attraccess on a remote server (not your local computer): +If you've installed FabAccess on a remote server (not your local computer): 1. You'll need to use the server's IP address or domain name instead of `localhost` 2. Open your web browser on your local computer 3. Go to `http://your-server-ip:3000` (replace `your-server-ip` with your actual server's IP address) 4. If you have a domain name pointing to your server, you can use `http://your-domain.com:3000` -> 💡 **Important:** When installing on a remote server, you should update the `VITE_ATTRACCESS_URL` in your `.env` file to match how you'll access the application: +> 💡 **Important:** When installing on a remote server, you should update the `VITE_FABACCESS_URL` in your `.env` file to match how you'll access the application: > > ``` -> VITE_ATTRACCESS_URL=http://your-server-ip:3000 +> VITE_FABACCESS_URL=http://your-server-ip:3000 > ``` > > or > > ``` -> VITE_ATTRACCESS_URL=http://your-domain.com:3000 +> VITE_FABACCESS_URL=http://your-domain.com:3000 > ``` ##### Firewall Considerations -If you can't access your Attraccess instance, you may need to: +If you can't access your FabAccess instance, you may need to: 1. Make sure port 3000 is open in your server's firewall 2. For most cloud providers (AWS, DigitalOcean, etc.), you'll need to configure security groups or firewall rules to allow traffic on port 3000 @@ -144,18 +144,18 @@ If you can't access your Attraccess instance, you may need to: For production environments, it's recommended to: -1. Set up a reverse proxy (like Nginx or Apache) in front of Attraccess +1. Set up a reverse proxy (like Nginx or Apache) in front of FabAccess 2. Configure SSL/TLS certificates (using Let's Encrypt) -3. Update your `VITE_ATTRACCESS_URL` to use `https://` instead of `http://` +3. Update your `VITE_FABACCESS_URL` to use `https://` instead of `http://` Detailed instructions for setting up a secure proxy are beyond the scope of this beginner guide, but we recommend researching this for any production deployment. ### Step 5: First-Time Setup -The first time you access Attraccess, you'll need to: +The first time you access FabAccess, you'll need to: 1. Create an account (the first account is automatically Admin) -2. Enjoy Attraccess! +2. Enjoy FabAccess! ## Email Configuration Help @@ -199,7 +199,7 @@ If you encounter issues: - Check if the required ports are already in use - Verify your environment variables are set correctly -2. **Can't connect to Attraccess**: +2. **Can't connect to FabAccess**: - Make sure you're using the correct URL - Check if the container is running with `docker ps` @@ -210,13 +210,13 @@ If you encounter issues: - Some email providers may block sending from apps 4. **Getting error messages**: - - Check the logs with `docker logs attraccess` + - Check the logs with `docker logs fabaccess` ## Additional Resources - [Official Docker Documentation](https://docs.docker.com/) - [SMTP Configuration Guide](https://nodemailer.com/smtp/) -- [Attraccess GitHub Repository](https://github.com/attraccess/attraccess) +- [FabAccess GitHub Repository](https://github.com/fabaccess/fabaccess) For more advanced deployment options, check our specialized guides: diff --git a/docs/setup/docker-compose-guide.md b/docs/setup/docker-compose-guide.md index 57d36b08..0da90b3b 100644 --- a/docs/setup/docker-compose-guide.md +++ b/docs/setup/docker-compose-guide.md @@ -1,10 +1,10 @@ # Docker Compose Deployment Guide -This guide walks you through setting up Attraccess using Docker Compose, which simplifies the management of Docker containers. +This guide walks you through setting up FabAccess using Docker Compose, which simplifies the management of Docker containers. ## What is Docker Compose? -Docker Compose is a tool that allows you to define and manage multi-container Docker applications. Even though Attraccess runs in a single container, Docker Compose makes it easier to manage the configuration, startup, and shutdown of your Attraccess instance. +Docker Compose is a tool that allows you to define and manage multi-container Docker applications. Even though FabAccess runs in a single container, Docker Compose makes it easier to manage the configuration, startup, and shutdown of your FabAccess instance. > 💡 **Benefit**: Using Docker Compose means you don't have to remember long Docker commands - all your settings are stored in a simple configuration file. @@ -18,19 +18,19 @@ Docker Compose is a tool that allows you to define and manage multi-container Do ### Step 1: Create a Project Directory -First, create a dedicated directory for your Attraccess deployment: +First, create a dedicated directory for your FabAccess deployment: ```bash -# Create a main directory for Attraccess -mkdir -p ~/attraccess +# Create a main directory for FabAccess +mkdir -p ~/fabaccess # Navigate to this directory -cd ~/attraccess +cd ~/fabaccess ``` ### Step 2: Create Docker Compose Configuration -Create a file named `docker-compose.yml` in your Attraccess directory: +Create a file named `docker-compose.yml` in your FabAccess directory: ```bash touch docker-compose.yml @@ -42,9 +42,9 @@ Open this file in a text editor and add the following configuration: version: '3' services: - attraccess: - image: fabaccess/attraccess:latest - container_name: attraccess + fabaccess: + image: fabaccess/fabaccess:latest + container_name: fabaccess restart: unless-stopped ports: - '3000:3000' @@ -53,7 +53,7 @@ services: - AUTH_JWT_ORIGIN=ENV - AUTH_JWT_SECRET=replace_with_a_long_random_string - AUTH_SESSION_SECRET=replace_with_another_long_random_string - - VITE_ATTRACCESS_URL=http://localhost:3000 + - VITE_FABACCESS_URL=http://localhost:3000 # Email Configuration - SMTP_SERVICE=SMTP @@ -70,32 +70,30 @@ services: - ./plugins:/app/plugins ``` - ### Choosing an Image Tag -Attraccess provides several Docker image tags to suit different needs. You can specify the desired tag in the `image` field of your `docker-compose.yml` file (e.g., `image: ghcr.io/fabinfra/attraccess:latest`). +FabAccess provides several Docker image tags to suit different needs. You can specify the desired tag in the `image` field of your `docker-compose.yml` file (e.g., `image: ghcr.io/fabinfra/fabaccess:latest`). Here are the available tags: -* **`latest`**: This tag always points to the most recent stable release of Attraccess. This is the recommended tag for most users as it provides a balance of new features and stability. - * Example: `ghcr.io/fabinfra/attraccess:latest` -* **`nightly-latest`**: This tag points to the latest successful build from the `main` development branch. It includes the newest features and bug fixes but may be less stable than a release version. Use this if you want to try out cutting-edge changes or help with testing. - * Example: `ghcr.io/fabinfra/attraccess:nightly-latest` -* **`nightly-`**: This tag points to a specific build from the `main` branch, identified by its short commit SHA (e.g., `nightly-abcdef1`). This is useful if you need to pin your deployment to a particular nightly version for testing or to avoid a regression introduced in a later nightly build. - * Example: `ghcr.io/fabinfra/attraccess:nightly-a1b2c3d` -* **``** (e.g., `v1.2.3`): This tag points to a specific official release version of Attraccess. Use this if you need to run a specific version of the application. - * Example: `ghcr.io/fabinfra/attraccess:v1.0.0` -* **`-`** (e.g., `v1.2.3-abcdef1`): This tag points to a specific official release version tied to its exact commit SHA. This offers the most precise version pinning. - * Example: `ghcr.io/fabinfra/attraccess:v1.0.0-e4f5g6h` +- **`latest`**: This tag always points to the most recent stable release of FabAccess. This is the recommended tag for most users as it provides a balance of new features and stability. + - Example: `ghcr.io/fabinfra/fabaccess:latest` +- **`nightly-latest`**: This tag points to the latest successful build from the `main` development branch. It includes the newest features and bug fixes but may be less stable than a release version. Use this if you want to try out cutting-edge changes or help with testing. + - Example: `ghcr.io/fabinfra/fabaccess:nightly-latest` +- **`nightly-`**: This tag points to a specific build from the `main` branch, identified by its short commit SHA (e.g., `nightly-abcdef1`). This is useful if you need to pin your deployment to a particular nightly version for testing or to avoid a regression introduced in a later nightly build. + - Example: `ghcr.io/fabinfra/fabaccess:nightly-a1b2c3d` +- **``** (e.g., `v1.2.3`): This tag points to a specific official release version of FabAccess. Use this if you need to run a specific version of the application. + - Example: `ghcr.io/fabinfra/fabaccess:v1.0.0` +- **`-`** (e.g., `v1.2.3-abcdef1`): This tag points to a specific official release version tied to its exact commit SHA. This offers the most precise version pinning. + - Example: `ghcr.io/fabinfra/fabaccess:v1.0.0-e4f5g6h` When updating, you can change the tag in your `docker-compose.yml` and then run `docker-compose pull && docker-compose up -d` to fetch and deploy the new version. - > ⚠️ **Security Note**: Replace the placeholder values for `AUTH_JWT_SECRET` and `AUTH_SESSION_SECRET` with strong, random strings. You can generate secure random strings with: `openssl rand -base64 32` ### Step 3: Create Storage Directories -Create directories for Attraccess data that will be mapped to the Docker container: +Create directories for FabAccess data that will be mapped to the Docker container: ```bash mkdir -p storage plugins @@ -131,21 +129,21 @@ Update the email settings in your `docker-compose.yml` file with your actual SMT #### URL Configuration -If you're deploying Attraccess to be accessible from other computers, update the `VITE_ATTRACCESS_URL` with your actual domain or IP address: +If you're deploying FabAccess to be accessible from other computers, update the `VITE_FABACCESS_URL` with your actual domain or IP address: ```yaml -- VITE_ATTRACCESS_URL=https://attraccess.yourdomain.com +- VITE_FABACCESS_URL=https://fabaccess.yourdomain.com ``` or ```yaml -- VITE_ATTRACCESS_URL=http://your-server-ip:3000 +- VITE_FABACCESS_URL=http://your-server-ip:3000 ``` -### Step 5: Start Attraccess +### Step 5: Start FabAccess -Once you've configured your `docker-compose.yml` file, start Attraccess with: +Once you've configured your `docker-compose.yml` file, start FabAccess with: ```bash docker-compose up -d @@ -157,13 +155,13 @@ This command: ### Step 6: Verify Deployment -Check if Attraccess is running properly: +Check if FabAccess is running properly: ```bash docker-compose ps ``` -You should see your Attraccess container listed as running. +You should see your FabAccess container listed as running. ### Step 7: Access the Application @@ -172,11 +170,11 @@ Open your web browser and go to: - `http://localhost:3000` (if accessing from the same computer) - `http://your-server-ip:3000` (if accessing from another computer) -### Managing Your Attraccess Instance +### Managing Your FabAccess Instance #### View Logs -To see the logs from your Attraccess container: +To see the logs from your FabAccess container: ```bash docker-compose logs @@ -188,17 +186,17 @@ For continuous log monitoring: docker-compose logs -f ``` -#### Stop Attraccess +#### Stop FabAccess -To stop your Attraccess instance: +To stop your FabAccess instance: ```bash docker-compose down ``` -#### Restart Attraccess +#### Restart FabAccess -To restart your Attraccess instance: +To restart your FabAccess instance: ```bash docker-compose restart @@ -206,7 +204,7 @@ docker-compose restart #### Update to the Latest Version -To update Attraccess to the latest version: +To update FabAccess to the latest version: ```bash # Pull the latest image @@ -233,7 +231,7 @@ touch .env AUTH_JWT_ORIGIN=ENV AUTH_JWT_SECRET=your_secure_jwt_secret AUTH_SESSION_SECRET=your_secure_session_secret -VITE_ATTRACCESS_URL=http://localhost:3000 +VITE_FABACCESS_URL=http://localhost:3000 # Email Configuration SMTP_SERVICE=SMTP @@ -253,9 +251,9 @@ LOG_LEVELS=error,warn,log version: '3' services: - attraccess: - image: fabaccess/attraccess:latest - container_name: attraccess + fabaccess: + image: fabaccess/fabaccess:latest + container_name: fabaccess restart: unless-stopped ports: - '3000:3000' @@ -276,7 +274,7 @@ services: - Verify all required environment variables are set correctly - Check if port 3000 is already in use by another application -2. **Can't access Attraccess in browser**: +2. **Can't access FabAccess in browser**: - Verify the container is running with `docker-compose ps` - Check if your firewall is blocking port 3000 @@ -303,9 +301,9 @@ docker-compose logs -f ## Next Steps -After successfully deploying Attraccess, you can: +After successfully deploying FabAccess, you can: 1. Create an account (the first account is automatically Admin) -2. Enjoy Attraccess! +2. Enjoy FabAccess! -For more information on using Attraccess, refer to our [User Guide](/user/getting-started.md). +For more information on using FabAccess, refer to our [User Guide](/user/getting-started.md). diff --git a/docs/setup/installation.md b/docs/setup/installation.md index b509ea36..fc7e3a44 100644 --- a/docs/setup/installation.md +++ b/docs/setup/installation.md @@ -6,16 +6,16 @@ > - [Docker Compose Guide](setup/docker-compose-guide.md) - Simplified deployment with Docker Compose > - [Portainer Guide](setup/portainer-guide.md) - Visual deployment using the Portainer web interface -## 🚀 Getting Started with Attraccess +## 🚀 Getting Started with FabAccess -Attraccess is distributed as a single Docker container that includes everything you need to get up and running quickly. Follow these simple steps to deploy your instance: +FabAccess is distributed as a single Docker container that includes everything you need to get up and running quickly. Follow these simple steps to deploy your instance: ### 📦 Pull the Docker Image Get the latest version from our GitHub Docker registry: ```bash -docker pull fabaccess/attraccess:latest +docker pull fabaccess/fabaccess:latest ``` > [!TIP] @@ -23,7 +23,7 @@ docker pull fabaccess/attraccess:latest ### 🔧 Configure Environment Variables -Attraccess requires several environment variables to function properly: +FabAccess requires several environment variables to function properly: #### Authentication & Security @@ -32,7 +32,7 @@ Attraccess requires several environment variables to function properly: | `AUTH_JWT_ORIGIN` | JWT secret source, either "ENV" or "FILE" | Yes | - | | `AUTH_JWT_SECRET` | JWT secret when using ENV origin | If AUTH_JWT_ORIGIN=ENV | - | | `AUTH_SESSION_SECRET` | Secret for encrypting sessions | Yes | - | -| `VITE_ATTRACCESS_URL` | URL/hostname of your Attraccess instance | Yes | - | +| `VITE_FABACCESS_URL` | URL/hostname of your FabAccess instance | Yes | - | > [!WARNING] > Always use strong, unique secrets for `AUTH_JWT_SECRET` and `AUTH_SESSION_SECRET`. These are critical for your application's security. @@ -77,16 +77,16 @@ Attraccess requires several environment variables to function properly: ### 🐳 Run the Container -Start Attraccess with your configured environment variables: +Start FabAccess with your configured environment variables: ```bash docker run -d \ - --name attraccess \ + --name fabaccess \ -p 3000:3000 \ -e AUTH_JWT_ORIGIN=ENV \ -e AUTH_JWT_SECRET=your_secure_jwt_secret \ -e AUTH_SESSION_SECRET=your_secure_session_secret \ - -e VITE_ATTRACCESS_URL=https://attraccess.yourdomain.com \ + -e VITE_FABACCESS_URL=https://fabaccess.yourdomain.com \ -e SMTP_SERVICE=SMTP \ -e SMTP_FROM=no-reply@yourdomain.com \ -e SMTP_HOST=smtp.yourdomain.com \ @@ -96,12 +96,12 @@ docker run -d \ -e LOG_LEVELS=error,warn,log \ -v /path/to/plugins:/app/plugins \ -v /path/to/storage:/app/storage \ - fabaccess/attraccess:latest + fabaccess/fabaccess:latest ``` ### 📂 Storage Volume -Attraccess uses a dedicated storage directory to store uploaded files, resources, and cache: +FabAccess uses a dedicated storage directory to store uploaded files, resources, and cache: ```bash -v /path/to/storage:/app/storage @@ -134,14 +134,14 @@ Example using file-based JWT secret: ```bash docker run -d \ - --name attraccess \ + --name fabaccess \ -p 3000:3000 \ -e AUTH_JWT_ORIGIN=FILE \ -e AUTH_SESSION_SECRET=your_secure_session_secret \ - -e VITE_ATTRACCESS_URL=https://attraccess.yourdomain.com \ + -e VITE_FABACCESS_URL=https://fabaccess.yourdomain.com \ -v /path/to/jwt/secret:/app/secrets \ -v /path/to/storage:/app/storage \ - fabaccess/attraccess:latest + fabaccess/fabaccess:latest ``` > [!NOTE] @@ -162,19 +162,19 @@ The `LOG_LEVELS` environment variable accepts a comma-separated list of these va ### 🔌 Plugin Support -Attraccess supports plugins that extend its functionality. Mount your plugins directory to `/app/plugins` in the container: +FabAccess supports plugins that extend its functionality. Mount your plugins directory to `/app/plugins` in the container: ```bash docker run -d \ - --name attraccess \ + --name fabaccess \ -p 3000:3000 \ -e AUTH_JWT_ORIGIN=ENV \ -e AUTH_JWT_SECRET=your_secure_jwt_secret \ -e AUTH_SESSION_SECRET=your_secure_session_secret \ - -e VITE_ATTRACCESS_URL=https://attraccess.yourdomain.com \ + -e VITE_FABACCESS_URL=https://fabaccess.yourdomain.com \ -v /path/to/plugins:/app/plugins \ -v /path/to/storage:/app/storage \ - fabaccess/attraccess:latest + fabaccess/fabaccess:latest ``` ## 🔧 Troubleshooting @@ -182,11 +182,11 @@ docker run -d \ If you encounter issues during installation: 1. Verify all required environment variables are correctly set -2. Check the container logs: `docker logs attraccess` +2. Check the container logs: `docker logs fabaccess` 3. Ensure your SMTP configuration is correct 4. Verify network connectivity to required services -For additional support, please visit our [GitHub repository](https://github.com/attraccess/attraccess). +For additional support, please visit our [GitHub repository](https://github.com/fabaccess/fabaccess). ## 🌱 Alternative Deployment Methods @@ -198,7 +198,7 @@ If you're new to Docker or server deployment, our [Complete Beginner's Guide](se ### Using Docker Compose -Docker Compose provides a simpler way to manage your Attraccess configuration through a YAML file. Follow our [Docker Compose Guide](setup/docker-compose-guide.md) to get started. +Docker Compose provides a simpler way to manage your FabAccess configuration through a YAML file. Follow our [Docker Compose Guide](setup/docker-compose-guide.md) to get started. ### Using Portainer (GUI-based approach) diff --git a/docs/setup/portainer-guide.md b/docs/setup/portainer-guide.md index 2b76c700..bce66d3f 100644 --- a/docs/setup/portainer-guide.md +++ b/docs/setup/portainer-guide.md @@ -1,6 +1,6 @@ -# Deploying Attraccess with Portainer +# Deploying FabAccess with Portainer -This guide explains how to set up Attraccess using Portainer, a user-friendly web interface for managing Docker containers. +This guide explains how to set up FabAccess using Portainer, a user-friendly web interface for managing Docker containers. ## What is Portainer? @@ -34,14 +34,14 @@ docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /va 4. Select "Local" to manage your local Docker environment 5. Click "Connect" -## Step 3: Create Volumes for Attraccess +## Step 3: Create Volumes for FabAccess 1. In the Portainer dashboard, click on "Volumes" in the left sidebar 2. Click "Add volume" -3. Name the first volume `attraccess_storage` and click "Create the volume" -4. Repeat to create a second volume named `attraccess_plugins` +3. Name the first volume `fabaccess_storage` and click "Create the volume" +4. Repeat to create a second volume named `fabaccess_plugins` -## Step 4: Deploy Attraccess Container +## Step 4: Deploy FabAccess Container ### Using the Web UI @@ -51,8 +51,8 @@ docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /va #### Basic Container Settings: -- **Name**: attraccess -- **Image**: fabaccess/attraccess:latest +- **Name**: fabaccess +- **Image**: fabaccess/fabaccess:latest - **Always pull the image**: Enable this option - **Restart policy**: Unless stopped @@ -70,10 +70,10 @@ docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /va - Click "Map additional volume" - **Container**: /app/storage - - **Volume**: attraccess_storage + - **Volume**: fabaccess_storage - Click "Map an additional volume" - **Container**: /app/plugins - - **Volume**: attraccess_plugins + - **Volume**: fabaccess_plugins 3. Go to the "Env" tab and add the following environment variables: @@ -82,7 +82,7 @@ docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /va | AUTH_JWT_ORIGIN | ENV | | AUTH_JWT_SECRET | replace_with_a_long_random_string | | AUTH_SESSION_SECRET | replace_with_another_long_random_string | -| VITE_ATTRACCESS_URL | http://your-server-ip:3000 | +| VITE_FABACCESS_URL | http://your-server-ip:3000 | | SMTP_SERVICE | SMTP | | SMTP_FROM | your-email@example.com | | SMTP_HOST | smtp.example.com | @@ -101,7 +101,7 @@ Portainer also supports deploying applications using Docker Compose: 1. In the Portainer dashboard, click on "Stacks" in the left sidebar 2. Click "Add stack" -3. Give your stack a name (e.g., "attraccess") +3. Give your stack a name (e.g., "fabaccess") 4. Select "Web editor" as the build method 5. Paste the following Docker Compose configuration: @@ -109,9 +109,9 @@ Portainer also supports deploying applications using Docker Compose: version: '3' services: - attraccess: - image: fabaccess/attraccess:latest - container_name: attraccess + fabaccess: + image: fabaccess/fabaccess:latest + container_name: fabaccess restart: unless-stopped ports: - '3000:3000' @@ -120,7 +120,7 @@ services: - AUTH_JWT_ORIGIN=ENV - AUTH_JWT_SECRET=replace_with_a_long_random_string - AUTH_SESSION_SECRET=replace_with_another_long_random_string - - VITE_ATTRACCESS_URL=http://your-server-ip:3000 + - VITE_FABACCESS_URL=http://your-server-ip:3000 # Email Configuration - SMTP_SERVICE=SMTP @@ -133,46 +133,46 @@ services: # Logging level - LOG_LEVELS=error,warn,log volumes: - - attraccess_storage:/app/storage - - attraccess_plugins:/app/plugins + - fabaccess_storage:/app/storage + - fabaccess_plugins:/app/plugins volumes: - attraccess_storage: - attraccess_plugins: + fabaccess_storage: + fabaccess_plugins: ``` 6. Replace the placeholder values with your actual configuration 7. Click "Deploy the stack" -## Step 5: Access Attraccess +## Step 5: Access FabAccess 1. Once the container is running, open your web browser 2. Navigate to `http://your-server-ip:3000` -3. You should now see the Attraccess login page +3. You should now see the FabAccess login page -## Managing Attraccess with Portainer +## Managing FabAccess with Portainer -Portainer makes it easy to manage your Attraccess container: +Portainer makes it easy to manage your FabAccess container: ### Viewing Logs 1. In the Portainer dashboard, click on "Containers" -2. Find and click on your "attraccess" container +2. Find and click on your "fabaccess" container 3. Click on "Logs" to view the container logs ### Stopping and Starting 1. In the Portainer dashboard, click on "Containers" -2. Find your "attraccess" container +2. Find your "fabaccess" container 3. Use the "Stop", "Start", or "Restart" buttons as needed -### Updating Attraccess +### Updating FabAccess 1. In the Portainer dashboard, click on "Containers" -2. Stop your existing "attraccess" container +2. Stop your existing "fabaccess" container 3. Click on "Images" in the left sidebar -4. Find "fabaccess/attraccess" and click "Pull" -5. Go back to "Containers" and start your "attraccess" container again +4. Find "fabaccess/fabaccess" and click "Pull" +5. Go back to "Containers" and start your "fabaccess" container again ## Email Configuration Help @@ -180,7 +180,7 @@ Portainer makes it easy to manage your Attraccess container: To use Gmail as your email service: -1. Go to your "attraccess" container in Portainer +1. Go to your "fabaccess" container in Portainer 2. Click "Duplicate/Edit" 3. Go to "Advanced container settings" > "Env" 4. Update the email settings: @@ -217,7 +217,7 @@ For Outlook or Office 365: - Verify all environment variables are set correctly - Ensure the ports aren't already in use by another container -2. **Can't access Attraccess from web browser**: +2. **Can't access FabAccess from web browser**: - Verify the container is running in Portainer - Check if your firewall is blocking port 3000 @@ -242,9 +242,9 @@ To get more detailed logs for troubleshooting: ## Next Steps -After successfully deploying Attraccess with Portainer, you can: +After successfully deploying FabAccess with Portainer, you can: 1. Create an account (the first account is automatically Admin) -2. Enjoy Attraccess! +2. Enjoy FabAccess! -For further guidance on using Attraccess, refer to our [User Guide](/user/getting-started.md). +For further guidance on using FabAccess, refer to our [User Guide](/user/getting-started.md). diff --git a/docs/setup/ssl-configuration.md b/docs/setup/ssl-configuration.md index 77de169d..6b70f312 100644 --- a/docs/setup/ssl-configuration.md +++ b/docs/setup/ssl-configuration.md @@ -1,18 +1,18 @@ # SSL Configuration > [!NOTE] -> SSL/TLS encryption is essential for securing your Attraccess instance, especially when accessing it from external networks or when handling sensitive data. +> SSL/TLS encryption is essential for securing your FabAccess instance, especially when accessing it from external networks or when handling sensitive data. ## 🔒 SSL Options -Attraccess provides two main approaches for SSL configuration: +FabAccess provides two main approaches for SSL configuration: 1. **Automatic Self-Signed Certificates** - Perfect for development, testing, or internal networks 2. **Custom SSL Certificates** - Recommended for production environments with proper CA-signed certificates ## 🔐 Automatic Self-Signed Certificates -The easiest way to enable SSL is by using automatically generated self-signed certificates. Attraccess can generate these certificates automatically on startup. +The easiest way to enable SSL is by using automatically generated self-signed certificates. FabAccess can generate these certificates automatically on startup. ### Configuration @@ -26,22 +26,22 @@ SSL_GENERATE_SELF_SIGNED_CERTIFICATES=true ```bash docker run -d \ - --name attraccess \ + --name fabaccess \ -p 443:3000 \ -e SSL_GENERATE_SELF_SIGNED_CERTIFICATES=true \ -e AUTH_JWT_ORIGIN=ENV \ -e AUTH_JWT_SECRET=your_secure_jwt_secret \ -e AUTH_SESSION_SECRET=your_secure_session_secret \ - -e VITE_ATTRACCESS_URL=https://attraccess.yourdomain.com \ + -e VITE_FABACCESS_URL=https://fabaccess.yourdomain.com \ -v /path/to/storage:/app/storage \ - fabaccess/attraccess:latest + fabaccess/fabaccess:latest ``` ### How It Works When `SSL_GENERATE_SELF_SIGNED_CERTIFICATES=true`: -1. Attraccess automatically generates a Certificate Authority (CA) and SSL certificate +1. FabAccess automatically generates a Certificate Authority (CA) and SSL certificate 2. The certificate is valid for **365 days (1 year)** 3. Certificates are stored in your storage directory with the domain name (e.g., `yourdomain.com.pem` and `yourdomain.com.key`) 4. The certificate covers multiple domains: `127.0.0.1`, `localhost`, and your configured domain @@ -67,23 +67,23 @@ cp yourdomain.com.key /path/to/storage/ # Run without SSL_GENERATE_SELF_SIGNED_CERTIFICATES docker run -d \ - --name attraccess \ + --name fabaccess \ -p 443:3000 \ -e AUTH_JWT_ORIGIN=ENV \ -e AUTH_JWT_SECRET=your_secure_jwt_secret \ -e AUTH_SESSION_SECRET=your_secure_session_secret \ - -e VITE_ATTRACCESS_URL=https://attraccess.yourdomain.com \ + -e VITE_FABACCESS_URL=https://fabaccess.yourdomain.com \ -v /path/to/storage:/app/storage \ - fabaccess/attraccess:latest + fabaccess/fabaccess:latest ``` ## 🔄 Certificate Renewal & Expiration ### Self-Signed Certificate Renewal -Self-signed certificates generated by Attraccess are valid for **1 year**. When they expire: +Self-signed certificates generated by FabAccess are valid for **1 year**. When they expire: -1. **Stop** your Attraccess container +1. **Stop** your FabAccess container 2. **Delete** the expired certificate files from your storage directory: ```bash rm /path/to/storage/yourdomain.com.pem @@ -98,7 +98,7 @@ For custom certificates: 1. Obtain renewed certificates from your CA before expiration 2. Replace the old certificate files in your storage directory -3. Restart your Attraccess container +3. Restart your FabAccess container ## 📱 Trusting Self-Signed Certificates @@ -106,7 +106,7 @@ Since self-signed certificates are not issued by a trusted Certificate Authority ### 🍎 iOS/iPhone/iPad -1. Open Safari and navigate to your Attraccess URL +1. Open Safari and navigate to your FabAccess URL 2. Tap "Advanced" when you see the certificate warning 3. Tap "Proceed to [domain]" 4. Go to **Settings** → **General** → **About** → **Certificate Trust Settings** @@ -140,14 +140,14 @@ Since self-signed certificates are not issued by a trusted Certificate Authority #### Chrome/Edge -1. Navigate to your Attraccess URL +1. Navigate to your FabAccess URL 2. Click "Advanced" on the security warning 3. Click "Proceed to [domain] (unsafe)" 4. Alternatively, add `--ignore-certificate-errors` to your browser launch arguments (development only) #### Firefox -1. Navigate to your Attraccess URL +1. Navigate to your FabAccess URL 2. Click "Advanced" on the security warning 3. Click "Accept the Risk and Continue" @@ -165,7 +165,7 @@ Since self-signed certificates are not issued by a trusted Certificate Authority 1. **Use Custom Certificates for Production**: Always use proper CA-signed certificates for production environments 2. **Regular Renewal**: Monitor certificate expiration dates and renew before expiry 3. **Secure Storage**: Keep private keys secure and limit access to certificate files -4. **Strong Domains**: Use proper domain names in your `VITE_ATTRACCESS_URL` configuration +4. **Strong Domains**: Use proper domain names in your `VITE_FABACCESS_URL` configuration ## 🔧 Troubleshooting @@ -199,9 +199,9 @@ For custom certificates: When using SSL, make sure to: -- Use HTTPS URLs in your `VITE_ATTRACCESS_URL` +- Use HTTPS URLs in your `VITE_FABACCESS_URL` - Map port 443 (standard HTTPS port) to container port 3000: `-p 443:3000` - Update any firewall rules to allow HTTPS traffic on port 443 > [!NOTE] -> The container always runs on port 3000 internally, but for SSL we map the standard HTTPS port 443 to the container's port 3000. This allows users to access your Attraccess instance using the standard HTTPS port without specifying a port number in the URL. +> The container always runs on port 3000 internally, but for SSL we map the standard HTTPS port 443 to the container's port 3000. This allows users to access your FabAccess instance using the standard HTTPS port without specifying a port number in the URL. diff --git a/docs/user/resources/iots/mqtt/mqtt-deployment.md b/docs/user/resources/iots/mqtt/mqtt-deployment.md index 86f5072d..96e7bf16 100644 --- a/docs/user/resources/iots/mqtt/mqtt-deployment.md +++ b/docs/user/resources/iots/mqtt/mqtt-deployment.md @@ -2,7 +2,7 @@ ## Overview -The MQTT integration allows Attraccess to publish resource usage status changes to MQTT brokers. This enables integration with IoT devices, home automation systems, and other systems that support MQTT. +The MQTT integration allows FabAccess to publish resource usage status changes to MQTT brokers. This enables integration with IoT devices, home automation systems, and other systems that support MQTT. ## Production Deployment Considerations @@ -54,7 +54,7 @@ Recommended MQTT brokers: 3. **Topic Structure**: - - Use a specific, unique prefix for all topics (e.g., `company/location/attraccess/resources/`) + - Use a specific, unique prefix for all topics (e.g., `company/location/fabaccess/resources/`) - Ensure topics don't leak sensitive information 4. **Message Content**: diff --git a/docs/user/resources/iots/mqtt/mqtt-examples.md b/docs/user/resources/iots/mqtt/mqtt-examples.md index f47d6d1d..b002aa8e 100644 --- a/docs/user/resources/iots/mqtt/mqtt-examples.md +++ b/docs/user/resources/iots/mqtt/mqtt-examples.md @@ -1,6 +1,6 @@ # MQTT Integration Examples -This document provides practical examples of using Attraccess's MQTT integration feature with common IoT platforms and devices. +This document provides practical examples of using FabAccess's MQTT integration feature with common IoT platforms and devices. ## Topic and Message Templates @@ -17,7 +17,7 @@ Good MQTT topic design follows these principles: ### Example Topic Structures ``` -attraccess/resources/{resourceId}/status +fabaccess/resources/{resourceId}/status organization/resources/{resourceName}/usage site/{location}/resource/{resourceId}/state department/{departmentName}/resources/{resourceName}/status @@ -296,12 +296,12 @@ For complex data structures: To verify your MQTT integration is working correctly: -1. Configure your MQTT server and resource in Attraccess +1. Configure your MQTT server and resource in FabAccess 2. Set up an MQTT client to subscribe to your topics: ```bash mosquitto_sub -h localhost -p 1883 -t "resources/#" -v ``` -3. Start and end resource usage in Attraccess +3. Start and end resource usage in FabAccess 4. Verify the messages are received in the expected format This approach helps troubleshoot issues before connecting to actual IoT devices. diff --git a/docs/user/resources/iots/mqtt/mqtt-explorer.md b/docs/user/resources/iots/mqtt/mqtt-explorer.md index 6550746e..b81315e6 100644 --- a/docs/user/resources/iots/mqtt/mqtt-explorer.md +++ b/docs/user/resources/iots/mqtt/mqtt-explorer.md @@ -13,7 +13,7 @@ The MQTTX Web client is automatically started as part of the local development e 1. Open your web browser and navigate to [http://localhost:4000](http://localhost:4000) 2. The MQTTX Web interface should load automatically 3. To connect to the MQTT broker, click on "New Connection" and use these settings: - - Name: `Attraccess MQTT` + - Name: `FabAccess MQTT` - Host: `localhost` - Port: `1883` - No username/password (development mode) @@ -38,7 +38,7 @@ The main interface will display all received messages for your subscribed topics ### Testing Resource Usage Events -When you mark a resource as "in use" or "not in use" in Attraccess, the system will publish messages to topics following this pattern: +When you mark a resource as "in use" or "not in use" in FabAccess, the system will publish messages to topics following this pattern: ``` resources/{id}/status diff --git a/docs/user/resources/iots/mqtt/mqtt-integration.md b/docs/user/resources/iots/mqtt/mqtt-integration.md index 0f6cd1fc..36f61f8a 100644 --- a/docs/user/resources/iots/mqtt/mqtt-integration.md +++ b/docs/user/resources/iots/mqtt/mqtt-integration.md @@ -1,12 +1,12 @@ -# MQTT Integration for Attraccess +# MQTT Integration for FabAccess -This documentation covers the MQTT integration feature that allows Attraccess to publish messages to MQTT servers when resources are used or released. +This documentation covers the MQTT integration feature that allows FabAccess to publish messages to MQTT servers when resources are used or released. ## Overview The MQTT integration allows administrators to configure resource-specific messaging to MQTT servers. This enables integration with external systems and IoT devices to react to resource usage events. -When a resource is used or released, Attraccess can automatically publish messages to one or more MQTT servers, which can trigger actions like turning on/off lights, managing power to workstations, or updating status displays. +When a resource is used or released, FabAccess can automatically publish messages to one or more MQTT servers, which can trigger actions like turning on/off lights, managing power to workstations, or updating status displays. ## Configuration Options diff --git a/docs/user/resources/iots/mqtt/mqtt-setup-guide.md b/docs/user/resources/iots/mqtt/mqtt-setup-guide.md index 50b88e5a..bdf332cb 100644 --- a/docs/user/resources/iots/mqtt/mqtt-setup-guide.md +++ b/docs/user/resources/iots/mqtt/mqtt-setup-guide.md @@ -1,6 +1,6 @@ # MQTT Broker Setup Guide -This guide provides practical instructions for setting up and configuring an MQTT broker for use with Attraccess. +This guide provides practical instructions for setting up and configuring an MQTT broker for use with FabAccess. ## Development Environment Setup @@ -94,7 +94,7 @@ The easiest way to set up an MQTT broker for development is using the included D ### Using Mosquitto CLI Tools > [!NOTE] -> Mosquitto CLI tools provide a quick way to verify your broker configuration before integrating with Attraccess. They're particularly useful for troubleshooting connection issues. +> Mosquitto CLI tools provide a quick way to verify your broker configuration before integrating with FabAccess. They're particularly useful for troubleshooting connection issues. 1. Subscribe to a topic: @@ -139,7 +139,7 @@ For production environments, we recommend additional security measures: 1. Create user credentials: ```bash - sudo mosquitto_passwd -c /etc/mosquitto/passwd attraccess + sudo mosquitto_passwd -c /etc/mosquitto/passwd fabaccess ``` 2. Update the configuration: @@ -195,7 +195,7 @@ For production environments, we recommend additional security measures: restart: unless-stopped ``` -2. Configure Attraccess to use TLS and authentication for connecting to the MQTT broker. +2. Configure FabAccess to use TLS and authentication for connecting to the MQTT broker. ## Cloud-Based MQTT Brokers @@ -212,11 +212,11 @@ These services typically provide: - High availability and scalability - Usage metrics and monitoring -## Configuring Attraccess with MQTT Broker +## Configuring FabAccess with MQTT Broker Once your MQTT broker is running: -1. Navigate to the MQTT Server management page in Attraccess. +1. Navigate to the MQTT Server management page in FabAccess. 2. Add a new MQTT server with: @@ -232,4 +232,4 @@ Once your MQTT broker is running: 4. Add MQTT configuration to your resources to start publishing messages. > [!NOTE] -> Attraccess will maintain a persistent connection to your MQTT broker. If the connection is lost, it will automatically attempt to reconnect using an exponential backoff strategy. +> FabAccess will maintain a persistent connection to your MQTT broker. If the connection is lost, it will automatically attempt to reconnect using an exponential backoff strategy. diff --git a/libs/api-client/package.json b/libs/api-client/package.json index 25d147f5..2fa88349 100644 --- a/libs/api-client/package.json +++ b/libs/api-client/package.json @@ -1,5 +1,5 @@ { - "name": "@attraccess/api-client", + "name": "@fabaccess/api-client", "version": "0.0.16", "type": "commonjs", "main": "./src/index.js", diff --git a/libs/api-client/src/generated/Api.ts b/libs/api-client/src/generated/Api.ts index cd6c2bd8..60a2453c 100644 --- a/libs/api-client/src/generated/Api.ts +++ b/libs/api-client/src/generated/Api.ts @@ -355,7 +355,7 @@ export interface CreateOIDCConfigurationDto { userInfoURL: string; /** * The client ID of the provider - * @example "attraccess-client" + * @example "fabaccess-client" */ clientId: string; /** @@ -403,7 +403,7 @@ export interface UpdateOIDCConfigurationDto { userInfoURL?: string; /** * The client ID of the provider - * @example "attraccess-client" + * @example "fabaccess-client" */ clientId?: string; /** @@ -711,7 +711,7 @@ export interface MqttServer { password?: string; /** * Client ID for MQTT connection - * @example "attraccess-client-1" + * @example "fabaccess-client-1" */ clientId?: string; /** @@ -1677,7 +1677,7 @@ export interface PluginMain { backend: PluginMainBackend; } -export interface PluginAttraccessVersion { +export interface PluginFabAccessVersion { /** * The minimum version of the plugin * @example "1.0.0" @@ -1707,7 +1707,7 @@ export interface LoadedPluginManifest { * @example "1.0.0" */ version: string; - attraccessVersion: PluginAttraccessVersion; + fabaccessVersion: PluginFabAccessVersion; /** * The directory of the plugin * @example "plugin-name" @@ -1847,7 +1847,7 @@ export interface NFCCard { } export interface InfoData { - /** @example "Attraccess API" */ + /** @example "FabAccess API" */ name?: string; /** @example "ok" */ status?: string; @@ -1920,6 +1920,7 @@ export interface ConfirmEmailChangeData { export type AdminChangeEmailData = User; export interface CreateSessionPayload { + /** Username or email address */ username?: string; password?: string; } @@ -4291,11 +4292,11 @@ export class HttpClient { } /** - * @title Attraccess API + * @title FabAccess API * @version 1.0.0 * @contact * - * The Attraccess API used to manage machine and tool access in a Makerspace or FabLab + * The FabAccess API used to manage machine and tool access in a Makerspace or FabLab */ export class Api< SecurityDataType extends unknown, diff --git a/libs/database-entities/package.json b/libs/database-entities/package.json index b216143c..550bd4b6 100644 --- a/libs/database-entities/package.json +++ b/libs/database-entities/package.json @@ -1,5 +1,5 @@ { - "name": "@attraccess/database-entities", + "name": "@fabaccess/database-entities", "version": "0.0.16", "private": false, "type": "commonjs", diff --git a/libs/database-entities/src/lib/entities/mqttServer.entity.ts b/libs/database-entities/src/lib/entities/mqttServer.entity.ts index 24eba32d..bab15c9f 100644 --- a/libs/database-entities/src/lib/entities/mqttServer.entity.ts +++ b/libs/database-entities/src/lib/entities/mqttServer.entity.ts @@ -51,7 +51,7 @@ export class MqttServer { @Column({ nullable: true, type: 'text' }) @ApiProperty({ description: 'Client ID for MQTT connection', - example: 'attraccess-client-1', + example: 'fabaccess-client-1', required: false, }) clientId!: string | null; diff --git a/libs/env/package.json b/libs/env/package.json index f2f56908..0471c194 100644 --- a/libs/env/package.json +++ b/libs/env/package.json @@ -1,5 +1,5 @@ { - "name": "@attraccess/env", + "name": "@fabaccess/env", "version": "0.0.16", "type": "commonjs", "main": "./src/index.js", @@ -13,8 +13,6 @@ ], "dependencies": { "tslib": "^2.3.0", - "zod": "^3.24.4" - } } diff --git a/libs/plugins-backend-sdk/package.json b/libs/plugins-backend-sdk/package.json index b4d19fcb..f5506b7f 100644 --- a/libs/plugins-backend-sdk/package.json +++ b/libs/plugins-backend-sdk/package.json @@ -1,5 +1,5 @@ { - "name": "@attraccess/plugins-backend-sdk", + "name": "@fabaccess/plugins-backend-sdk", "version": "0.0.16", "type": "commonjs", "main": "./src/index.js", @@ -21,7 +21,7 @@ ], "dependencies": { "tslib": "^2.3.0", - "@attraccess/database-entities": "*", + "@fabaccess/database-entities": "*", "@nestjs/common": "^11.1.0", "rxjs": "^7.8.2", "@nestjs/core": "^11.1.0", diff --git a/libs/plugins-backend-sdk/src/index.ts b/libs/plugins-backend-sdk/src/index.ts index eac48c1a..d89711e6 100644 --- a/libs/plugins-backend-sdk/src/index.ts +++ b/libs/plugins-backend-sdk/src/index.ts @@ -2,7 +2,7 @@ export * from './lib/plugin.interface'; export * from './lib/semver'; export * from './lib/auth-decorator'; -export * from '@attraccess/database-entities'; -export * as entities from '@attraccess/database-entities'; +export * from '@fabaccess/database-entities'; +export * as entities from '@fabaccess/database-entities'; export * from './lib/auth.types'; export * from './lib/jwt.guard'; diff --git a/libs/plugins-backend-sdk/src/lib/auth-decorator.ts b/libs/plugins-backend-sdk/src/lib/auth-decorator.ts index fae3b4f4..d25ac183 100644 --- a/libs/plugins-backend-sdk/src/lib/auth-decorator.ts +++ b/libs/plugins-backend-sdk/src/lib/auth-decorator.ts @@ -9,7 +9,7 @@ import { } from '@nestjs/common'; import { Observable } from 'rxjs'; import { Reflector } from '@nestjs/core'; -import { SystemPermission, User } from '@attraccess/database-entities'; +import { SystemPermission, User } from '@fabaccess/database-entities'; import { ApiBearerAuth, ApiUnauthorizedResponse } from '@nestjs/swagger'; import { JwtGuard } from './jwt.guard'; diff --git a/libs/plugins-backend-sdk/src/lib/auth.types.ts b/libs/plugins-backend-sdk/src/lib/auth.types.ts index 9357f04e..b2f5ce56 100644 --- a/libs/plugins-backend-sdk/src/lib/auth.types.ts +++ b/libs/plugins-backend-sdk/src/lib/auth.types.ts @@ -1,4 +1,4 @@ -import { User } from '@attraccess/database-entities'; +import { User } from '@fabaccess/database-entities'; import { Request as BaseRequest } from 'express'; export interface AuthenticatedUser extends User { diff --git a/libs/plugins-backend-sdk/src/lib/plugin.interface.ts b/libs/plugins-backend-sdk/src/lib/plugin.interface.ts index b54afc41..70d4713c 100644 --- a/libs/plugins-backend-sdk/src/lib/plugin.interface.ts +++ b/libs/plugins-backend-sdk/src/lib/plugin.interface.ts @@ -1,4 +1,4 @@ -import { Resource, User } from '@attraccess/database-entities'; +import { Resource, User } from '@fabaccess/database-entities'; export enum SystemEvent { RESOURCE_USAGE_STARTED = 'RESOURCE_USAGE_STARTED', diff --git a/libs/plugins-frontend-sdk/package.json b/libs/plugins-frontend-sdk/package.json index 4812053b..0076b254 100644 --- a/libs/plugins-frontend-sdk/package.json +++ b/libs/plugins-frontend-sdk/package.json @@ -1,5 +1,5 @@ { - "name": "@attraccess/plugins-frontend-sdk", + "name": "@fabaccess/plugins-frontend-sdk", "version": "0.0.16", "type": "module", "main": "./index.js", diff --git a/libs/plugins-frontend-sdk/src/lib/frontend.pluggable.ts b/libs/plugins-frontend-sdk/src/lib/frontend.pluggable.ts index 153937ca..b9eb358f 100644 --- a/libs/plugins-frontend-sdk/src/lib/frontend.pluggable.ts +++ b/libs/plugins-frontend-sdk/src/lib/frontend.pluggable.ts @@ -1,4 +1,4 @@ -import { User } from '@attraccess/database-entities'; +import { User } from '@fabaccess/database-entities'; import { IPlugin } from 'react-pluggable'; export enum FrontendLocation {} @@ -11,12 +11,12 @@ export const getPluginFunctionName = (pluginName: string, func: FRONTEND_FUNCTIO return `${pluginName}.${func}`; }; -export interface AttraccessFrontendPluginAuthData { +export interface FabAccessFrontendPluginAuthData { authToken: string; user: User; } -export interface AttraccessFrontendPlugin extends IPlugin { - onApiAuthStateChange(authData: null | AttraccessFrontendPluginAuthData): void; +export interface FabAccessFrontendPlugin extends IPlugin { + onApiAuthStateChange(authData: null | FabAccessFrontendPluginAuthData): void; onApiEndpointChange(endpoint: string): void; } diff --git a/libs/plugins-frontend-sdk/src/lib/frontend.routing.ts b/libs/plugins-frontend-sdk/src/lib/frontend.routing.ts index 30a630ca..5a5d6b54 100644 --- a/libs/plugins-frontend-sdk/src/lib/frontend.routing.ts +++ b/libs/plugins-frontend-sdk/src/lib/frontend.routing.ts @@ -1,4 +1,4 @@ -import { SystemPermissions } from '@attraccess/database-entities'; +import { SystemPermissions } from '@fabaccess/database-entities'; import { PathRouteProps } from 'react-router-dom'; // Extended route type that includes sidebar options diff --git a/libs/plugins-frontend-sdk/vite.config.ts b/libs/plugins-frontend-sdk/vite.config.ts index 7da9a0bb..eb90cabe 100644 --- a/libs/plugins-frontend-sdk/vite.config.ts +++ b/libs/plugins-frontend-sdk/vite.config.ts @@ -13,8 +13,8 @@ const sharedLibs = [ 'react-pluggable', '@heroui/react', '@tanstack/react-query', - '@attraccess/react-query-client', - '@attraccess/plugins-frontend-ui', + '@fabaccess/react-query-client', + '@fabaccess/plugins-frontend-ui', ]; export default defineConfig({ diff --git a/libs/plugins-frontend-ui/package.json b/libs/plugins-frontend-ui/package.json index ac6feb7b..10f80a3b 100644 --- a/libs/plugins-frontend-ui/package.json +++ b/libs/plugins-frontend-ui/package.json @@ -1,5 +1,5 @@ { - "name": "@attraccess/plugins-frontend-ui", + "name": "@fabaccess/plugins-frontend-ui", "version": "0.0.16", "type": "module", "main": "./index.js", diff --git a/libs/plugins-frontend-ui/src/lib/components/FabAccessUser/de.json b/libs/plugins-frontend-ui/src/lib/components/FabAccessUser/de.json new file mode 100644 index 00000000..131f4f1b --- /dev/null +++ b/libs/plugins-frontend-ui/src/lib/components/FabAccessUser/de.json @@ -0,0 +1,4 @@ +{ + "unknown": "Unbekannt" +} + diff --git a/libs/plugins-frontend-ui/src/lib/components/FabAccessUser/en.json b/libs/plugins-frontend-ui/src/lib/components/FabAccessUser/en.json new file mode 100644 index 00000000..3b9d5a65 --- /dev/null +++ b/libs/plugins-frontend-ui/src/lib/components/FabAccessUser/en.json @@ -0,0 +1,4 @@ +{ + "unknown": "Unknown" +} + diff --git a/libs/plugins-frontend-ui/src/lib/components/FabAccessUser/index.tsx b/libs/plugins-frontend-ui/src/lib/components/FabAccessUser/index.tsx new file mode 100644 index 00000000..42d143b3 --- /dev/null +++ b/libs/plugins-frontend-ui/src/lib/components/FabAccessUser/index.tsx @@ -0,0 +1,36 @@ +import { User } from '@fabaccess/react-query-client'; +import { useTranslations } from '../../i18n'; +import { User as UserComponent, UserProps } from '@heroui/react'; +import { toSvg } from 'jdenticon'; +import { useMemo } from 'react'; +import * as en from './en.json'; +import * as de from './de.json'; + +interface FabAccessUserProps { + user?: User; + description?: UserProps['description']; +} + +export function FabAccessUser(props: FabAccessUserProps & Omit) { + const { user, description, ...userComponentProps } = props; + + const { t } = useTranslations('fabaccessUser', { en, de }); + + const avatarIcon = useMemo(() => { + const svg = toSvg(user?.id || 'unknown', 100); + const svgBase64 = btoa(svg); + const dataUrl = `data:image/svg+xml;base64,${svgBase64}`; + return dataUrl; + }, [user]); + + return ( + + ); +} diff --git a/libs/plugins-frontend-ui/src/lib/components/ResourceSelector/ResourceSelector.tsx b/libs/plugins-frontend-ui/src/lib/components/ResourceSelector/ResourceSelector.tsx index 837c6c67..8a8020e8 100644 --- a/libs/plugins-frontend-ui/src/lib/components/ResourceSelector/ResourceSelector.tsx +++ b/libs/plugins-frontend-ui/src/lib/components/ResourceSelector/ResourceSelector.tsx @@ -1,5 +1,5 @@ import { useTranslations } from '../../i18n'; -import { useResourcesServiceGetAllResources } from '@attraccess/react-query-client'; +import { useResourcesServiceGetAllResources } from '@fabaccess/react-query-client'; import { Chip, Input, Listbox, ListboxItem, ScrollShadow, Spinner } from '@heroui/react'; import { useState, PropsWithChildren, useMemo } from 'react'; import de from './ResourceSelector.de.json'; diff --git a/libs/plugins-frontend-ui/src/lib/components/index.ts b/libs/plugins-frontend-ui/src/lib/components/index.ts index 25b65be2..ee30db61 100644 --- a/libs/plugins-frontend-ui/src/lib/components/index.ts +++ b/libs/plugins-frontend-ui/src/lib/components/index.ts @@ -1,4 +1,4 @@ -export * from './attraccess-user/AttraccessUser'; +export * from './FabAccessUser'; export * from './datetime-display/DateTimeDisplay'; export * from './duration-display/DurationDisplay'; export * from './user-search/UserSearch'; diff --git a/libs/plugins-frontend-ui/src/lib/components/user-search/UserSearch.tsx b/libs/plugins-frontend-ui/src/lib/components/user-search/UserSearch.tsx index 10dce289..c40329b5 100644 --- a/libs/plugins-frontend-ui/src/lib/components/user-search/UserSearch.tsx +++ b/libs/plugins-frontend-ui/src/lib/components/user-search/UserSearch.tsx @@ -1,8 +1,8 @@ import { HTMLAttributes, useEffect, useMemo, useState } from 'react'; import { Autocomplete, AutocompleteItem, AutocompleteProps } from '@heroui/autocomplete'; import { useTranslations } from '../../i18n'; -import { AttraccessUser } from '../attraccess-user/AttraccessUser'; -import { User, useUsersServiceFindMany, useUsersServiceGetOneUserById } from '@attraccess/react-query-client'; +import { FabAccessUser } from '../FabAccessUser'; +import { User, useUsersServiceFindMany, useUsersServiceGetOneUserById } from '@fabaccess/react-query-client'; import * as en from './en.json'; import * as de from './de.json'; @@ -88,7 +88,7 @@ export function UserSearch(props: Readonly) { > {(item) => ( - + )} @@ -97,7 +97,7 @@ export function UserSearch(props: Readonly) {
- {selectedUser && } + {selectedUser && } {afterSelection}
diff --git a/libs/plugins-frontend-ui/vite.config.ts b/libs/plugins-frontend-ui/vite.config.ts index 5fbd675c..59b72d35 100644 --- a/libs/plugins-frontend-ui/vite.config.ts +++ b/libs/plugins-frontend-ui/vite.config.ts @@ -13,8 +13,8 @@ const sharedLibs = [ 'react-pluggable', '@heroui/react', '@tanstack/react-query', - '@attraccess/react-query-client', - '@attraccess/plugins-frontend-ui', + '@fabaccess/react-query-client', + '@fabaccess/plugins-frontend-ui', ]; export default defineConfig({ diff --git a/libs/react-query-client/package.json b/libs/react-query-client/package.json index 580df457..457144c4 100644 --- a/libs/react-query-client/package.json +++ b/libs/react-query-client/package.json @@ -1,5 +1,5 @@ { - "name": "@attraccess/react-query-client", + "name": "@fabaccess/react-query-client", "version": "0.0.16", "type": "commonjs", "main": "./src/index.js", diff --git a/libs/react-query-client/src/lib/requests/schemas.gen.ts b/libs/react-query-client/src/lib/requests/schemas.gen.ts index 7271741d..7ba1e498 100644 --- a/libs/react-query-client/src/lib/requests/schemas.gen.ts +++ b/libs/react-query-client/src/lib/requests/schemas.gen.ts @@ -463,7 +463,7 @@ export const $CreateOIDCConfigurationDto = { clientId: { type: 'string', description: 'The client ID of the provider', - example: 'attraccess-client' + example: 'fabaccess-client' }, clientSecret: { type: 'string', @@ -526,7 +526,7 @@ export const $UpdateOIDCConfigurationDto = { clientId: { type: 'string', description: 'The client ID of the provider', - example: 'attraccess-client' + example: 'fabaccess-client' }, clientSecret: { type: 'string', @@ -917,7 +917,7 @@ export const $MqttServer = { clientId: { type: 'string', description: 'Client ID for MQTT connection', - example: 'attraccess-client-1' + example: 'fabaccess-client-1' }, useTls: { type: 'boolean', @@ -2155,7 +2155,7 @@ export const $PluginMain = { required: ['frontend', 'backend'] } as const; -export const $PluginAttraccessVersion = { +export const $PluginFabAccessVersion = { type: 'object', properties: { min: { @@ -2193,8 +2193,8 @@ export const $LoadedPluginManifest = { description: 'The version of the plugin', example: '1.0.0' }, - attraccessVersion: { - '$ref': '#/components/schemas/PluginAttraccessVersion' + fabaccessVersion: { + '$ref': '#/components/schemas/PluginFabAccessVersion' }, pluginDirectory: { type: 'string', @@ -2207,7 +2207,7 @@ export const $LoadedPluginManifest = { example: '123e4567-e89b-12d3-a456-426614174000' } }, - required: ['name', 'main', 'version', 'attraccessVersion', 'pluginDirectory', 'id'] + required: ['name', 'main', 'version', 'fabaccessVersion', 'pluginDirectory', 'id'] } as const; export const $UploadPluginDto = { diff --git a/libs/react-query-client/src/lib/requests/types.gen.ts b/libs/react-query-client/src/lib/requests/types.gen.ts index f2778d87..08ed8b76 100644 --- a/libs/react-query-client/src/lib/requests/types.gen.ts +++ b/libs/react-query-client/src/lib/requests/types.gen.ts @@ -1486,7 +1486,7 @@ export type PluginMain = { backend: PluginMainBackend; }; -export type PluginAttraccessVersion = { +export type PluginFabAccessVersion = { /** * The minimum version of the plugin */ @@ -1511,7 +1511,7 @@ export type LoadedPluginManifest = { * The version of the plugin */ version: string; - attraccessVersion: PluginAttraccessVersion; + fabaccessVersion: PluginFabAccessVersion; /** * The directory of the plugin */ diff --git a/libs/react-query-client/vite.config.ts b/libs/react-query-client/vite.config.ts index b4f2fd85..25a8cfa8 100644 --- a/libs/react-query-client/vite.config.ts +++ b/libs/react-query-client/vite.config.ts @@ -12,8 +12,8 @@ const sharedLibs = [ 'react-pluggable', '@heroui/react', '@tanstack/react-query', - '@attraccess/react-query-client', - '@attraccess/plugins-frontend-ui', + '@fabaccess/react-query-client', + '@fabaccess/plugins-frontend-ui', ]; export default defineConfig({ diff --git a/package.json b/package.json index 8614f3fe..5b77bf9d 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "@attraccess/source", + "name": "@fabaccess/source", "version": "0.0.16", "license": "MIT", "scripts": { diff --git a/project.json b/project.json index 5dddb90b..d902d1f0 100644 --- a/project.json +++ b/project.json @@ -1,5 +1,5 @@ { - "name": "@attraccess/source", + "name": "@fabaccess/source", "$schema": "node_modules/nx/schemas/project-schema.json", "targets": { "lint": { diff --git a/test/docker-compose.yaml b/test/docker-compose.yaml index d013234c..91d5ceee 100644 --- a/test/docker-compose.yaml +++ b/test/docker-compose.yaml @@ -1,8 +1,8 @@ services: - attraccess: - image: fabaccess/attraccess:nightly-latest + fabaccess: + image: fabaccess/fabaccess:nightly-latest platform: linux/amd64 - container_name: attraccess + container_name: fabaccess restart: unless-stopped ports: - '80:3000' @@ -12,11 +12,11 @@ services: - AUTH_JWT_ORIGIN=FILE - AUTH_JWT_SECRET=/app/secrets/secret.txt - - VITE_ATTRACCESS_URL=http://localhost:3000 + - VITE_FABACCESS_URL=http://localhost:3000 # Email Configuration - SMTP_SERVICE=SMTP - - SMTP_FROM=no-reply@attraccess.de + - SMTP_FROM=no-reply@fabaccess.de - SMTP_HOST=localhost - SMTP_PORT=1028 @@ -26,4 +26,3 @@ services: - ./storage:/app/storage - ./plugins:/app/plugins - ./secret:/app/secrets - diff --git a/tools/generators/README.md b/tools/generators/README.md index d6f8e33f..eb45e0c0 100644 --- a/tools/generators/README.md +++ b/tools/generators/README.md @@ -1,11 +1,11 @@ -# attracces +# fabaccess This library was generated with [Nx](https://nx.dev). ## Building -Run `nx build attracces` to build the library. +Run `nx build fabaccess` to build the library. ## Running unit tests -Run `nx test attracces` to execute the unit tests via [Jest](https://jestjs.io). +Run `nx test fabaccess` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/tools/generators/package.json b/tools/generators/package.json index a4f2234c..4113a626 100644 --- a/tools/generators/package.json +++ b/tools/generators/package.json @@ -1,5 +1,5 @@ { - "name": "@attraccess/generators", + "name": "@fabaccess/generators", "version": "0.0.16", "private": true, "type": "commonjs", diff --git a/tsconfig.base.json b/tsconfig.base.json index 55cbe7c0..e1c1df46 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -17,14 +17,14 @@ "esModuleInterop": true, "baseUrl": ".", "paths": { - "@attraccess/api-client": ["libs/api-client/src/index.ts"], - "@attraccess/attracces": ["tools/attracces/src/index.ts"], - "@attraccess/database-entities": ["libs/database-entities/src/index.ts"], - "@attraccess/env": ["libs/env/src/index.ts"], - "@attraccess/plugins-backend-sdk": ["libs/plugins-backend-sdk/src/index.ts"], - "@attraccess/plugins-frontend-sdk": ["libs/plugins-frontend-sdk/src/index.ts"], - "@attraccess/plugins-frontend-ui": ["libs/plugins-frontend-ui/src/index.ts"], - "@attraccess/react-query-client": ["libs/react-query-client/src/index.ts"] + "@fabaccess/api-client": ["libs/api-client/src/index.ts"], + "@fabaccess/fabaccess": ["tools/fabaccess/src/index.ts"], + "@fabaccess/database-entities": ["libs/database-entities/src/index.ts"], + "@fabaccess/env": ["libs/env/src/index.ts"], + "@fabaccess/plugins-backend-sdk": ["libs/plugins-backend-sdk/src/index.ts"], + "@fabaccess/plugins-frontend-sdk": ["libs/plugins-frontend-sdk/src/index.ts"], + "@fabaccess/plugins-frontend-ui": ["libs/plugins-frontend-ui/src/index.ts"], + "@fabaccess/react-query-client": ["libs/react-query-client/src/index.ts"] } }, "exclude": ["node_modules", "tmp", "*.md"] From 3b4fd24f32bcfc74504e75c9c53b9f7da6e97e80 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 17 Aug 2025 22:44:40 +0200 Subject: [PATCH 4/5] fix URLs --- apps/api/src/database/datasource.ts | 4 +--- .../migrations/1748886859855-seed-email-templates.ts | 4 ++-- apps/api/src/users-and-auth/auth/sso/oidc/oidc.strategy.ts | 1 + apps/frontend/src/app/layout/sidebarItems.tsx | 6 +++--- docs/HOME.md | 2 +- libs/api-client/src/generated/Api.ts | 2 +- libs/react-query-client/src/lib/requests/core/OpenAPI.ts | 2 +- 7 files changed, 10 insertions(+), 11 deletions(-) diff --git a/apps/api/src/database/datasource.ts b/apps/api/src/database/datasource.ts index 0245003b..7df18537 100644 --- a/apps/api/src/database/datasource.ts +++ b/apps/api/src/database/datasource.ts @@ -45,9 +45,7 @@ function loadPostgresConfig() { function loadSqliteConfig() { const storageEnv = loadEnv((z) => ({ STORAGE_ROOT: z.string().default(join(process.cwd(), 'storage')) })); - const fabaccessDbFile = resolve(join(storageEnv.STORAGE_ROOT, 'fabaccess.sqlite')); - - let dbFile = fabaccessDbFile; + const dbFile = resolve(join(storageEnv.STORAGE_ROOT, 'fabaccess.sqlite')); console.log('dbFile', dbFile); diff --git a/apps/api/src/database/migrations/1748886859855-seed-email-templates.ts b/apps/api/src/database/migrations/1748886859855-seed-email-templates.ts index 6c41f02f..8c6fd086 100644 --- a/apps/api/src/database/migrations/1748886859855-seed-email-templates.ts +++ b/apps/api/src/database/migrations/1748886859855-seed-email-templates.ts @@ -87,7 +87,7 @@ export const RESET_PASSWORD_MJML_TEMPLATE = ` Visit us:
{{host.frontend}} | - GitHub + GitHub @@ -183,7 +183,7 @@ export const VERIFY_EMAIL_MJML_TEMPLATE = ` Visit us: {{host.frontend}} | - GitHub + GitHub diff --git a/apps/api/src/users-and-auth/auth/sso/oidc/oidc.strategy.ts b/apps/api/src/users-and-auth/auth/sso/oidc/oidc.strategy.ts index 78a80f76..dce46ba2 100644 --- a/apps/api/src/users-and-auth/auth/sso/oidc/oidc.strategy.ts +++ b/apps/api/src/users-and-auth/auth/sso/oidc/oidc.strategy.ts @@ -20,6 +20,7 @@ export class SSOOIDCStrategy extends PassportStrategy(Strategy, 'sso-oidc') { clientID: config.clientId, clientSecret: config.clientSecret, callbackURL, + scope: ['openid', 'email', 'profile'], }); this.logger.log(`Initialized OIDC strategy with issuer: ${config.issuer} and callbackURL: ${callbackURL}`); diff --git a/apps/frontend/src/app/layout/sidebarItems.tsx b/apps/frontend/src/app/layout/sidebarItems.tsx index 55cbe161..98e4819d 100644 --- a/apps/frontend/src/app/layout/sidebarItems.tsx +++ b/apps/frontend/src/app/layout/sidebarItems.tsx @@ -108,7 +108,7 @@ export const useSidebarEndItems = () => { const reportBugUrl = newGithubIssueUrl({ user: 'FabInfra', - repo: 'FabAccess', + repo: 'FabAccess-V2', title: '[Bug] ', labels: ['bug'], body: ` @@ -129,7 +129,7 @@ export const useSidebarEndItems = () => { const requestFeatureUrl = newGithubIssueUrl({ user: 'FabInfra', - repo: 'FabAccess', + repo: 'FabAccess-V2', title: '[Feature Request] ', labels: ['enhancement'], body: ` @@ -167,7 +167,7 @@ export const useSidebarEndItems = () => { translationKey: 'dependencies', }, { - path: getBaseUrl() + '/docs', + path: getBaseUrl() + '/docs/#/', icon: BookOpenIcon, translationKey: 'docs', isExternal: true, diff --git a/docs/HOME.md b/docs/HOME.md index 53661b06..f77a2733 100644 --- a/docs/HOME.md +++ b/docs/HOME.md @@ -24,7 +24,7 @@ FabAccess is a powerful platform designed to simplify and secure access manageme ## Support -Need help? Open an issue on our [GitHub repository](https://github.com/FabInfra/FabAccess). +Need help? Open an issue on our [GitHub repository](https://github.com/FabInfra/FabAccess-V2). > [!NOTE] > This documentation is also accessible directly from your running FabAccess instance at `/docs`. diff --git a/libs/api-client/src/generated/Api.ts b/libs/api-client/src/generated/Api.ts index 60a2453c..478dd680 100644 --- a/libs/api-client/src/generated/Api.ts +++ b/libs/api-client/src/generated/Api.ts @@ -4293,7 +4293,7 @@ export class HttpClient { /** * @title FabAccess API - * @version 1.0.0 + * @version 0.0.16 * @contact * * The FabAccess API used to manage machine and tool access in a Makerspace or FabLab diff --git a/libs/react-query-client/src/lib/requests/core/OpenAPI.ts b/libs/react-query-client/src/lib/requests/core/OpenAPI.ts index 890b1123..ffc3f77d 100644 --- a/libs/react-query-client/src/lib/requests/core/OpenAPI.ts +++ b/libs/react-query-client/src/lib/requests/core/OpenAPI.ts @@ -47,7 +47,7 @@ export const OpenAPI: OpenAPIConfig = { PASSWORD: undefined, TOKEN: undefined, USERNAME: undefined, - VERSION: '1.0.0', + VERSION: '0.0.16', WITH_CREDENTIALS: false, interceptors: { request: new Interceptors(), From 409b615180aaad2e23804b86d7a18e9804901c76 Mon Sep 17 00:00:00 2001 From: Mario Voigt Date: Sun, 17 Aug 2025 22:49:57 +0200 Subject: [PATCH 5/5] remove unused import --- apps/api/src/database/datasource.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/api/src/database/datasource.ts b/apps/api/src/database/datasource.ts index 7df18537..955d9ab3 100644 --- a/apps/api/src/database/datasource.ts +++ b/apps/api/src/database/datasource.ts @@ -5,7 +5,6 @@ import { loadEnv } from '@fabaccess/env'; import { join, resolve } from 'path'; import { entities } from '@fabaccess/database-entities'; import * as migrations from './migrations'; -import { existsSync } from 'fs'; const envType = loadEnv((z) => ({ DB_TYPE: z.enum(['postgres', 'sqlite']).default('sqlite'),