- Created a new SQL migration for the sag_salgsvarer table to manage sales and purchase items. - Implemented a new HTML template for the Varekøb & Salg module, including summary cards and tables for sales and purchases. - Added JavaScript functions for loading and rendering order data dynamically. - Introduced a new backend search module for customers, contacts, hardware, and locations with autocomplete functionality. - Developed an email templates API for managing system and customer-specific email templates. - Created multiple migrations for Nextcloud instances, cache, audit logs, email templates, sag comments, hardware locations, and billing methods. - Enhanced the sag module with solutions, order lines, work types, and 2FA support for user authentication.
6.4 KiB
Nextcloud-modul – BMC Hub
1. Formål og rolle i Hubben
Nextcloud-modulet gør det muligt at sælge, administrere og supportere kunders Nextcloud‑løsninger direkte i Hubben.
Hubben er styrende system. Nextcloud er et eksternt drifts‑ og brugersystem, som Hubben taler med direkte (ingen gateway).
2. Aktivering af modulet
Modulet er kontekstbaseret og aktiveres via tag:
- Når Firma, Kontakt eller Sag har tagget
nextcloud, vises en Nextcloud‑fane i UI. - Uden tag vises ingen Nextcloud‑funktioner.
3. Kunde → Nextcloud‑fane (overblik)
Fanen indeholder:
- Drifts‑ og systeminformation (read‑only)
- Handlinger relateret til brugere
- Historik (hvad Hubben har gjort mod instansen)
Fanen må aldrig blokere kundevisningen, selv hvis Nextcloud er utilgængelig.
4. Systemstatus og driftsinformation
Datakilde: Nextcloud Serverinfo API
GET /ocs/v2.php/apps/serverinfo/api/v1/info- Direkte kald til Nextcloud
- Autentificeret
- Read‑only
- Cached i DB med global TTL = 5 min
4.1 Overblik
Vises øverst i fanen:
- Instans‑status (Online / Offline / Ukendt)
- Sidst opdateret
- Nextcloud‑version
- PHP‑version
- Database‑type og ‑version
4.2 Ressourceforbrug
Vises som simple værdier/badges:
- CPU
- Load average (1 / 5 / 15 min)
- Antal kerner
- RAM (total + brug i %)
- Disk (total + brug i % + fri plads)
Ved kritiske værdier vises advarsel.
4.3 Nextcloud‑nøgletal
Hvor API tillader det:
- Antal brugere
- Aktive brugere
- Antal filer
- Samlet datamængde
- Status på: database, cache/Redis, cron/background jobs
5. Handlinger i Nextcloud‑fanen
Knapper:
- Tilføj ny bruger
- Reset password
- Luk bruger
- Gensend guide
Alle handlinger:
- udføres direkte mod Nextcloud
- logges i Hub
- kan spores i historik
- kan knyttes til sag
6. Tilføj ny bruger (primær funktion)
6.1 Start af flow
- Ved “Tilføj ny bruger” oprettes automatisk en ny Sag
- Sagstype: Nextcloud – Brugeroprettelse
- Ingen Nextcloud‑handling udføres uden en sag
6.2 Sag – felter og logik
Firma
- Vælg eksisterende firma
- Hub slår tilknyttet Nextcloud‑instans op i DB og vælger automatisk
- Instans kan ikke ændres manuelt
Kontaktperson
- Vælg eksisterende kontakt eller opret ny
- Bruges til kommunikation, velkomstmail og ejerskab af sag
Grupper
- Multiselect
- Hentes live fra Nextcloud (OCS groups API)
- Kun gyldige grupper kan vælges
Velkomstbrev
- Checkbox: skal velkomstbrev sendes?
- Hvis ja: bruger oprettes, password genereres, guide + logininfo sendes
- Hvis nej: bruger oprettes uden mail, sag forbliver åben til manuel opfølgning
7. Øvrige handlinger
Reset password
- Vælg eksisterende Nextcloud‑bruger
- Nyt password genereres
- Valg: send mail til kontakt eller kun log i sag
Luk bruger
- Bruger deaktiveres i Nextcloud
- Data bevares
- Kræver eksplicit bekræftelse
- Logges i sag og historik
Gensend guide
- Gensender velkomstmail og guide
- Password ændres ikke
- Kan udføres uden ny sag, men logges
8. Arkitekturprincipper
- Hub ejer: firma, kontakt, sag, historik
- Nextcloud ejer: brugere, filer, rettigheder
- Integration er direkte (ingen gateway)
- Per‑instans auth ligger krypteret i DB
- Global DB‑cache (5 min) for read‑only statusdata
9. Logning og sporbarhed
For hver handling gemmes:
- tidspunkt
- handlingstype
- udførende bruger
- mål (bruger/instans)
- teknisk resultat (success/fejl)
Audit‑log er separat pr. kunde, med manuel retention og tidsbaseret partitionering.
10. Afgrænsninger (v1)
Modulet indeholder ikke:
- ændring af server‑konfiguration
- håndtering af apps
- ændring af kvoter
- direkte admin‑login
11. Klar til udvidelse
Modulet er designet til senere udvidelser:
- overvågning → automatisk sag
- historiske grafer
- offboarding‑flows
- kvote‑styring
- SLA‑rapportering
12. Sikkerhed og drift
- Credentials krypteres med
settings.NEXTCLOUD_ENCRYPTION_KEY - Safety switches:
NEXTCLOUD_READ_ONLYogNEXTCLOUD_DRY_RUN(default true) - Ingen credentials i UI eller logs
- TLS‑only base URLs
13. Backend‑struktur (plan)
Placering: app/modules/nextcloud/
backend/router.pybackend/service.pybackend/models.py
Alle eksterne kald går via service‑laget, som:
- loader instans fra DB
- dekrypterer credentials
- bruger global DB‑cache (5 min)
- skriver audit‑log pr. kunde
14. Database‑model (plan)
nextcloud_instances
customer_idFKbase_urlauth_typeusernamepassword_encryptedis_enabled,disabled_atcreated_at,updated_at,deleted_at
nextcloud_cache
cache_key(PK)payload(JSONB)expires_atcreated_at
nextcloud_audit_log
customer_id,instance_idevent_typerequest_meta,response_metaactor_user_idcreated_at
Partitionering: månedlig range på created_at. Retention er manuel via admin‑UI.
15. API‑endpoints (v1)
Instanser (admin)
GET /api/v1/nextcloud/instancesPOST /api/v1/nextcloud/instancesPATCH /api/v1/nextcloud/instances/{id}POST /api/v1/nextcloud/instances/{id}/disablePOST /api/v1/nextcloud/instances/{id}/enablePOST /api/v1/nextcloud/instances/{id}/rotate-credentials
Status + grupper
GET /api/v1/nextcloud/instances/{id}/statusGET /api/v1/nextcloud/instances/{id}/groups
Brugere (handlinger)
POST /api/v1/nextcloud/instances/{id}/users(opret)POST /api/v1/nextcloud/instances/{id}/users/{uid}/reset-passwordPOST /api/v1/nextcloud/instances/{id}/users/{uid}/disablePOST /api/v1/nextcloud/instances/{id}/users/{uid}/resend-guide
Alle endpoints skal:
- validere
is_enabled = true - håndhæve kundeejerskab
- skrive audit‑log
- respektere
READ_ONLY/DRY_RUN
16. UI‑krav (plan)
Nextcloud‑fanen i kundevisning skal vise:
- Systemstatus
- Nøgletal
- Handlinger
- Historik
Admin‑UI (Settings) skal give:
- Liste over instanser
- Enable/disable
- Rotation af credentials
- Retentionstyring af audit‑log pr. kunde
17. Migrations (plan)
migrations/0XX_nextcloud_instances.sqlmigrations/0XX_nextcloud_cache.sqlmigrations/0XX_nextcloud_audit_log.sql(partitioneret)
18. Næste skridt
- Opret migrationsfiler
- Implementer kryptering helper
- Implementer service‑lag
- Implementer routere og schemas
- Implementer UI‑fanen + admin‑UI
- Implementer audit‑log viewer/export