PHPackages                             hwkdo/intranet-app-tickets - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. hwkdo/intranet-app-tickets

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

hwkdo/intranet-app-tickets
==========================

Generated app: Tickets

v0.7(2w ago)062↓50%MITPHPPHP ^8.3

Since Jun 11Pushed 2w agoCompare

[ Source](https://github.com/hwkdo/intranet-app-tickets)[ Packagist](https://packagist.org/packages/hwkdo/intranet-app-tickets)[ Docs](https://github.com/hwkdo/intranet-app-tickets)[ GitHub Sponsors](https://github.com/hwkdo)[ RSS](/packages/hwkdo-intranet-app-tickets/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (31)Versions (13)Used By (0)

Intranet App Tickets
====================

[](#intranet-app-tickets)

Zammad-Integration für das Intranet: Benutzer können ihre Support-Tickets einsehen und beantworten. Agenten arbeiten weiterhin im Zammad-UI.

Installation
------------

[](#installation)

```
composer require hwkdo/intranet-app-tickets
php artisan migrate
php artisan intranet-app:sync-settings
php artisan intranet-app:sync-permissions --all
```

Umgebungsvariablen
------------------

[](#umgebungsvariablen)

```
ZAMMAD_URL=https://ticket.hwkdo.com
ZAMMAD_HTTP_TOKEN=your-api-token
WEBHOOK_ZAMMAD_SECRET=your-webhook-hmac-secret
```

Optional:

```
ZAMMAD_DEBUG=false
INTRANET_APP_TICKETS_USER_MODEL=App\Models\User
```

Zammad Webhook einrichten
-------------------------

[](#zammad-webhook-einrichten)

1. In Zammad unter **Verwalten → Webhooks** einen neuen Webhook anlegen.
2. Endpoint: `{APP_URL}/webhooks/zammad`
3. HMAC-Token setzen (gleicher Wert wie `WEBHOOK_ZAMMAD_SECRET`).
4. Unter **Verwalten → Trigger** Webhook-Trigger anlegen, z. B.:
    - **Agent-Antworten:** Artikel erstellt, Sichtbarkeit = öffentlich, Sender = Agent
    - **Statusänderungen:** Ticket aktualisiert, z. B. Status = geschlossen (ohne Artikel im Payload)
    - Aktion jeweils: Webhook auslösen

Optional `INTRANET_APP_TICKETS_WEBHOOK_NOTIFY_STATES=closed,open` setzen, um nur bestimmte Status zu benachrichtigen (Standard: alle).

Webhook-Debugging
-----------------

[](#webhook-debugging)

Eingegangene Webhooks (gespeichert nach gültiger Signatur) unter:

- `/apps/tickets/webhooks` (Permission `manage-app-tickets`)

Zusätzlich in der allgemeinen Admin-Webhook-Übersicht (`/admin/webhooks`), sofern der Eintrag gespeichert wurde.

**Wichtig:** Der Webhook-Job läuft über die Queue (`QUEUE_CONNECTION=redis`). Horizon bzw. Queue-Worker müssen laufen, sonst bleibt der Eintrag in `webhook_calls` ohne Benutzer-Benachrichtigung.

Ticket-Kategorien einrichten
----------------------------

[](#ticket-kategorien-einrichten)

Nach der Migration die Standard-Kategorien seeden:

```
php artisan intranet-app-tickets:seed-categories
```

Im Admin-Bereich (`/apps/tickets/admin` → Tab **Kategorien**) pro Kategorie den Übertragungsweg konfigurieren:

- **Zammad API:** Zammad-Gruppe aus Dropdown wählen (Gruppen werden per API geladen)
- **E-Mail:** Zieladresse eintragen (Standard für Moodle)
- Optional: Genehmigung aktivieren und Genehmigungs-Rollen zuweisen

Funktionen
----------

[](#funktionen)

- Ticketliste (offen / geschlossen / alle) per Zammad API + eigene Anfragen („Zur Genehmigung“)
- Tickets erstellen mit kategoriespezifischen Flux-Formularen
- Genehmigungsworkflow mit Rollen pro Kategorie
- Übertragung per Zammad API oder E-Mail (konfigurierbar pro Kategorie)
- Ticketdetail mit öffentlichem Verlauf und Bearbeiter-Info
- Ticket-Erstellung und Antworten als Kunde (`setOnBehalfOfUser`)
- Admin: Zammad-Intranet-Rolle, Gruppenrechte und Benutzerübersicht (`/apps/tickets/admin` → Tab **Zammad-Benutzer**)
- Automatische Zammad-Benutzeranlage beim ersten Ticket (Intranet-Daten → Zammad, inkl. Intranet-Rolle)
- Anhang-Download über die App
- Webhook-Benachrichtigungen bei Agent-Antworten (Reverb + Task-Badge)
- Webhook-Übersicht mit Verarbeitungsstatus und Live-Updates per Reverb/Echo

Zammad API-Token (Berechtigungen)
---------------------------------

[](#zammad-api-token-berechtigungen)

FunktionZammad-PermissionTickets erstellen / lesen`ticket.agent`Benutzer automatisch anlegen + Rolle zuweisen`admin.user`Gruppenrechte der Intranet-Rolle pflegen`admin.role`Voraussetzung für Auto-Provisioning: Im Admin-Tab **Zammad-Benutzer** muss eine **Intranet-Benutzer-Rolle** konfiguriert sein (inkl. Gruppenrechte für die Ticket-Kategorien).

Berechtigungen
--------------

[](#berechtigungen)

- `see-app-tickets` — App nutzen
- `manage-app-tickets` — Admin-Bereich

Tests
-----

[](#tests)

Alle Tests liegen im Package unter `tests/` und werden über die Hauptanwendung ausgeführt:

```
php artisan test --compact packages/intranet-app-tickets/tests
```

Einzelne Suite:

```
php artisan test --compact packages/intranet-app-tickets/tests/Unit
php artisan test --compact packages/intranet-app-tickets/tests/Feature
```

###  Health Score

43

—

FairBetter than 89% of packages

Maintenance97

Actively maintained with recent releases

Popularity12

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~2 days

Total

12

Last Release

17d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/72b6d361b5e84bd3dfecc691278039a815c252495b4624dd6f50caa27ff02655?d=identicon)[hwkdo](/maintainers/hwkdo)

---

Top Contributors

[![aleex1848](https://avatars.githubusercontent.com/u/17452861?v=4)](https://github.com/aleex1848 "aleex1848 (12 commits)")

---

Tags

laravelhwkdointranet-app-tickets

###  Code Quality

TestsPest

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/hwkdo-intranet-app-tickets/health.svg)

```
[![Health](https://phpackages.com/badges/hwkdo-intranet-app-tickets/health.svg)](https://phpackages.com/packages/hwkdo-intranet-app-tickets)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3345.3M347](/packages/psalm-plugin-laravel)[simplestats-io/laravel-client

Server-side analytics for Laravel that follows the full funnel from visit to registration to payment, attributed to the channel that drove it. Revenue, MRR, churn and ad-spend profit (ROAS/CAC) per channel. GDPR compliant, ad-blocker proof.

5022.6k](/packages/simplestats-io-laravel-client)[api-platform/laravel

API Platform support for Laravel

58174.6k17](/packages/api-platform-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
