Commit Graph

115 Commits

Author SHA1 Message Date
DanielS
9ecdc645e8 feat(branding): add global dynamic theme system and fix 2fa mail 2026-08-14 15:57:29 +02:00
DanielS
c1efc7916f feat(email/pdf): include partner company name, partner user name and email in emails and PDF confirmations 2026-08-11 23:40:37 +02:00
DanielS
883b607482 feat(auth): add email-based 2FA for unknown devices
All checks were successful
Staging Build / build (push) Successful in 2m54s
2026-08-11 01:10:28 +02:00
DanielS
ea64ce9ef0 feat: exclude verwalter from security lockout emails
All checks were successful
Staging Build / build (push) Successful in 3m0s
2026-08-11 00:37:13 +02:00
DanielS
407484f69d feat: allow verwalter role to act as admin in wizard 2026-08-11 00:35:55 +02:00
DanielS
3ba7c91e1f feat: CC admins on orders and include partner info 2026-08-11 00:22:39 +02:00
DanielS
6177c0cde1 feat: send security lockout emails to all admin users 2026-08-11 00:20:07 +02:00
DanielS
af261ce923 feat: add unique license number check for devices 2026-08-10 23:37:09 +02:00
DanielS
0e4495292d feat(my-customers): flatten orders into per-device cards
- split orders by device_name into FlattenedDevice entries
- strip device prefixes from product and module names
- render one DeviceCard per Kasse in the customer accordion
- add targeted upgrade URL with orderId, customer_id, device_id
- wizard starts at step 3 in upgrade mode with locked customer
- mark existing licensed modules as read-only with badge
2026-07-23 09:45:14 +02:00
DanielS
07208fcad0 feat(wizard): add partner filter and pagination to customer step
All checks were successful
Staging Build / build (push) Successful in 2m52s
2026-07-21 10:43:21 +02:00
DanielS
8b4fd5f02e feat(dashboard): add customer accordion view and extension flow
All checks were successful
Staging Build / build (push) Successful in 3m1s
2026-07-21 08:43:00 +02:00
DanielS
86b63ce77e feat(checkout): implement wizard and admin actions
All checks were successful
Staging Build / build (push) Successful in 3m11s
2026-07-20 23:18:40 +02:00
DanielS
2b372be228 feat(orders): support active status and update RLS
Some checks failed
Staging Build / build (push) Has been cancelled
2026-07-20 23:00:02 +02:00
DanielS
13f647409f fix(sync): query customers by vowels to avoid crash
All checks were successful
Staging Build / build (push) Successful in 2m56s
2026-07-15 23:50:13 +02:00
DanielS
5d3eed874c feat(sync): add customer synchronization from lic server
All checks were successful
Staging Build / build (push) Successful in 3m0s
2026-07-15 22:48:10 +02:00
DanielS
6b9023c871 feat(wizard): connect license lookup panel to real lic server api endpoint
All checks were successful
Staging Build / build (push) Successful in 2m48s
2026-07-15 01:01:01 +02:00
DanielS
d5593900fb feat(cron): add automated sync endpoint and vercel cron configuration for partners
All checks were successful
Staging Build / build (push) Successful in 2m57s
2026-07-15 00:30:13 +02:00
DanielS
3fb80e6404 feat(admin): add manual partner import from lic server
All checks were successful
Staging Build / build (push) Successful in 2m48s
2026-07-15 00:07:31 +02:00
DanielS
7119383139 fix(security): harden licserver config access controls
All checks were successful
Staging Build / build (push) Successful in 2m50s
- Add auth guard to getLicServerConfig() - unauthenticated callers
  now receive null config instead of DB values
- Remove non-existent 'superadmin' role from saveLicServerConfig()
  check (only 'admin' exists per project schema)
- New migration: restrict settings table WRITE to admins only
  (previously any authenticated user could overwrite licserver_api_key)
2026-07-14 17:35:12 +02:00
DanielS
fa93e060c2 feat(admin): LicServer config manageable via admin settings UI
Some checks failed
Staging Build / build (push) Has been cancelled
- Migration: add licserver_base_url/api_key cols to settings table
- New: lib/actions/licserver-config.ts (read/write/test server actions)
- Updated: proxy routes read config from DB with env-var fallback
- Updated: admin/einstellungen adds LicServer card with URL + API key
  input, show/hide toggle, Save and Connection Test buttons
2026-07-14 17:30:37 +02:00
DanielS
43e6a92663 feat: implement category flags, drop global tables, fix sidebar sticky layout
All checks were successful
Staging Build / build (push) Successful in 2m48s
2026-07-10 15:27:55 +02:00
DanielS
4da386f693 fix(build): move buildEmailItemsSection to email-templates.ts to fix Turbopack build failure
Some checks failed
Staging Build / build (push) Failing after 25s
2026-07-10 10:00:49 +02:00
DanielS
ec1ad4d444 fix(checkout): use full email template with PDF attachment for checkout confirmations
Some checks failed
Staging Build / build (push) Failing after 24s
2026-07-10 09:45:21 +02:00
DanielS
bc6487bba4 feat(email): include order item configurations in confirmation email
All checks were successful
Staging Build / build (push) Successful in 2m54s
2026-07-10 08:57:52 +02:00
DanielS
ae4a8429c7 fix: rewrite auth middleware to prevent global login lock for partners and admins
All checks were successful
Staging Build / build (push) Successful in 2m46s
2026-07-09 23:16:22 +02:00
DanielS
21c4aa859e fix: rename invoice terminology to request and quotation confirmation across pdf and mail services 2026-07-09 22:58:29 +02:00
DanielS
567d1f226b feat(admin): add product dependencies and clean up labels
All checks were successful
Staging Build / build (push) Successful in 2m43s
- Add addProductDependency and removeProductDependency actions

- Create DependencyPopover and integrate in live editor UI

- Render green requirements and red exclusions badges

- Remove technical parentheses from category checkbox labels
2026-07-09 16:12:57 +02:00
DanielS
915d3b1b2f Revert "feat: support product quantity and separate steps"
All checks were successful
Staging Build / build (push) Successful in 2m48s
This reverts commit 4ef21ea144.
2026-07-09 15:19:38 +02:00
DanielS
4ef21ea144 feat: support product quantity and separate steps
All checks were successful
Staging Build / build (push) Successful in 6m17s
2026-07-09 15:10:21 +02:00
DanielS
bffaca1d63 feat(orders): add rejected status to order schema and admin table views
All checks were successful
Staging Build / build (push) Successful in 2m49s
2026-07-08 10:13:21 +02:00
DanielS
cc7445e4c5 feat(multiselect): support multi-select categories and free items limits in category config and order wizard
All checks were successful
Staging Build / build (push) Successful in 2m38s
2026-07-07 16:56:24 +02:00
DanielS
98c030cd82 fix(end-customers): allow admin to create end customers without company_id
All checks were successful
Staging Build / build (push) Successful in 2m38s
2026-07-07 12:32:11 +02:00
DanielS
8e91b3e810 fix(email): remove duplicate pdf download button 2026-07-07 10:30:34 +02:00
DanielS
0ec1319753 style(mail): humanize email templates and remove corporate boilerplates
All checks were successful
Staging Build / build (push) Successful in 2m39s
2026-07-07 00:39:06 +02:00
DanielS
2246bdf2be refactor(shop): extract wizard validation and email templates into helpers
All checks were successful
Staging Build / build (push) Successful in 2m48s
2026-07-06 23:15:11 +02:00
DanielS
2d44dd4c58 security: fix 6 critical RLS vulns, SHA-256 hash, DSGVO [GELÖSCHT], completed status
Some checks failed
Staging Build / build (push) Has been cancelled
2026-07-06 22:39:05 +02:00
DanielS
a64b6790c6 feat: Add partner account settings page under /account-kunden
All checks were successful
Staging Build / build (push) Successful in 3m33s
2026-07-04 21:06:46 +02:00
DanielS
060aa97ce5 fix: PDF headers with filename, email download button via protected route
All checks were successful
Staging Build / build (push) Successful in 3m29s
2026-07-04 17:50:02 +02:00
DanielS
80abbfe566 security: replace public PDF URLs with authenticated API route, private bucket
All checks were successful
Staging Build / build (push) Successful in 3m33s
2026-07-04 17:43:33 +02:00
DanielS
305af64fd6 feat: assign orders to companies directly and support admin reassignment
All checks were successful
Staging Build / build (push) Successful in 3m36s
2026-07-04 16:08:31 +02:00
DanielS
32c2842dbd feat: enable company-wide order viewing and editing
All checks were successful
Staging Build / build (push) Successful in 3m31s
2026-07-04 15:41:48 +02:00
DanielS
149eae59c9 feat: restrict order creation to users assigned to a company
All checks were successful
Staging Build / build (push) Successful in 3m31s
2026-07-04 15:33:44 +02:00
DanielS
5f65f890ee feat: link end customers directly to companies
All checks were successful
Staging Build / build (push) Successful in 3m37s
2026-07-04 15:17:04 +02:00
DanielS
4c6fde326b refactor(order): change order prefix from BE to AE for Anfragenummer 2026-07-03 14:58:43 +02:00
DanielS
23be8bcb52 refactor(wording): change 'Angebot' to 'Anfrage' in client views and order emails 2026-07-03 14:55:56 +02:00
DanielS
5c28fbdea5 feat(wizard): support OR logic for requirements (at least one dependency satisfies requirements)
All checks were successful
Staging Build / build (push) Successful in 3m32s
2026-07-03 14:21:15 +02:00
DanielS
90ec351d96 fix(db-tools): resolve REINDEX transaction error by executing directly via pg client, and dynamically support all database tables in integrity dashboard 2026-07-03 14:01:27 +02:00
DanielS
38651037bc fix(users): refactor user admin actions to return status objects instead of throwing to prevent production error obfuscation
All checks were successful
Staging Build / build (push) Successful in 3m29s
2026-07-03 13:51:00 +02:00
DanielS
12d06e46ad feat(email): improve password reset emails, onboarding templates, and handle server action errors without production obfuscation
All checks were successful
Staging Build / build (push) Successful in 3m28s
2026-07-03 13:34:43 +02:00
DanielS
4f69fd7e44 feat(role): add 'verwaltung' role with gated access to settings and tools
All checks were successful
Staging Build / build (push) Successful in 3m26s
2026-07-03 10:10:57 +02:00