diff --git a/server-connection/.archive/README.md b/server-connection/.archive/README.md new file mode 100644 index 0000000..8bd7a01 --- /dev/null +++ b/server-connection/.archive/README.md @@ -0,0 +1,23 @@ +# Archive + +Folder ini berisi file yang tidak digunakan atau dokumentasi historis dari repository **server-connection**. + +## File yang Diarsipkan + +| File Asli | Lokasi Arsip | Alasan | +|-----------|--------------|--------| +| `server/migrate-geonet-console.md` | `migrate-geonet-console.md` | Dokumentasi migrasi historis databaselist → geonet-console (Fase 1-3 sudah selesai, Fase 4 pending) | + +## Catatan + +File-file ini dipindahkan ke sini untuk menjaga struktur server-connection tetap rapi dan mudah dianalisa. Jika diperlukan kembali, file dapat dipindahkan kembali ke lokasi aslinya. + +## Status Migrasi (untuk referensi) + +| Fase | Status | Tanggal | Catatan | +|------|--------|---------|---------| +| 0 — Repo lokal | Selesai | 2026-06-11 | Folder `geonet-console/` + script deploy | +| 1 — Nginx dual hostname | Selesai | 2026-06-11 | `console.gisportal.id` → `:8091` | +| 2 — Cutover Docker | Selesai | 2026-06-12 | Stack `/opt/stacks/geonet-console` | +| 3 — Redirect 301 | Selesai | 2026-06-12 | `databaselist.gisportal.id` → `console.gisportal.id` | +| 4 — Cleanup | Pending | — | Hapus stack/image `databaselist` setelah stabil | diff --git a/server-connection/server/migrate-geonet-console.md b/server-connection/.archive/migrate-geonet-console.md similarity index 100% rename from server-connection/server/migrate-geonet-console.md rename to server-connection/.archive/migrate-geonet-console.md diff --git a/server-connection/.cursor/me.md b/server-connection/.cursor/me.md new file mode 100644 index 0000000..2909dc1 --- /dev/null +++ b/server-connection/.cursor/me.md @@ -0,0 +1,184 @@ +# Profil & Infrastruktur + +> Konteks pemilik proyek **GeoNet IT / GIS Portal**. +> **Repo Git:** `server-connection` — monorepo aplikasi & skrip deploy internal. +> Nama **GeoNetAgent** = konteks kerja AI/agent di Cursor (bukan nama folder repo). +> Baca file ini sebelum asumsi tentang stack, peran, atau lingkungan kerja. + +## Nama & ruang lingkup + +| Istilah | Arti | +|---------|------| +| **server-connection** | Nama repository — berisi kode, rules, skrip deploy | +| **GeoNetAgent** | Konteks AI/agent untuk membantu pengembangan repo ini | +| **gisportal.id** | Domain produksi internal (console, databaselist, sqlservercheck) | + +## Siapa Saya + +Saya adalah **IT yang mengelola infrastruktur end-to-end**: + +- Network & firewall +- Perangkat user (banyak laptop) +- Server, VM, storage +- GIS +- Licensing software +- Monitoring & operasional harian + +Saya sering **berpindah perangkat saat development** — gunakan file di `.cursor/` dan `AGENTS.md` sebagai sumber kebenaran proyek, jangan ulangi tanya konteks yang sudah tercatat di sini. + +## Stack & Aset yang Sudah Dimiliki + +### Application & Backend + +| Komponen | Status | Catatan | +|----------|--------|---------| +| Laravel 12 | ✅ | `geonet-console/`, `databaselist/` | +| FastAPI | ✅ | Layanan Python terpisah (jika ada) | +| Python | ✅ | Skrip & tooling | +| SQL Server | ✅ | `10.100.1.25`, dipakai GIS/legacy | +| PostgreSQL | ✅ | App metadata, audit log, target pgvector | + +### Monitoring & Identity + +| Komponen | Status | Host | +|----------|--------|------| +| Zabbix | ✅ | `10.100.1.42` | +| Windows Server 2012 R2 Active Directory | ✅ | `10.100.1.40` (domain `gisportal.id`) | + +### Compute & Virtualization + +| Komponen | IP / detail | +|----------|-------------| +| Proxmox | Host VM utama | +| VM Database | `10.100.1.25` — PostgreSQL, SQL Server | +| VM Docker (reverse proxy) | `10.100.1.24` — Nginx, stack `/opt/stacks/*` | +| VM Ollama | `10.100.1.26` (`aiopr`) — AI inference (POC) | +| VM baru | Dibuat on-demand sesuai kebutuhan | + +### Network & Storage + +| Komponen | IP / detail | +|----------|-------------| +| MikroTik CCR2004 | `10.100.1.1` — gateway, routing, firewall | +| QNAP TS-932X | `10.100.1.10` — NAS SMB (`\\10.100.1.10\project`, dll.) | + +### Endpoint + +| Komponen | Detail | +|----------|--------| +| Banyak laptop user | Windows, domain-joined via AD | +| GPO (AD) | Channel deploy agent ke endpoint | + +### Lingkungan Development + +| Item | Contoh / catatan | +|------|------------------| +| OS dev | Windows (laptop/workstation) | +| Docker lokal | Tidak dipakai — build & run di server `10.100.1.24` | +| Deploy | `.\scripts\deploy-*.ps1` dari folder repo | +| Kredensial | `.env` **hanya di server**, tidak di-sync dari laptop | +| SSH reverse proxy | `ssh -m hmac-sha1 root@10.100.1.24 -p 22` | +| SSH Mikrotik | `.\scripts\ssh-mikrotik.ps1` (key RSA untuk RouterOS 7.5) | + +## Ruang Lingkup Tanggung Jawab + +```mermaid +Network (MikroTik) → Firewall → Server/VM (Proxmox) → Storage (QNAP) + ↓ + Laptop user (AD + agent) + ↓ + Monitoring (Zabbix) + Portal IT (Laravel/FastAPI) +``` + +## Preferensi Kerja + +- Bahasa komunikasi: **Bahasa Indonesia** +- Jangan duplikasi fungsi Zabbix di aplikasi custom — Zabbix tetap pusat alerting real-time +- PostgreSQL untuk aplikasi/CMDB baru; SQL Server untuk legacy/GIS jika sudah terikat +- Minimalkan scope perubahan; ikuti konvensi existing code +- Jangan commit kecuali diminta eksplisit +- Documentation first — sinkronkan `.cursor/` setelah sesi besar (lihat `perintah.md`) + +## Aplikasi di repo `server-connection` + +| Folder | URL produksi | Stack server | +|--------|--------------|--------------| +| `geonet-console/` | https://console.gisportal.id | `/opt/stacks/geonet-console/` | +| `databaselist/` | https://databaselist.gisportal.id | `/opt/stacks/databaselist/` | +| `sqlservercheck/` | https://sqlservercheck.gisportal.id | `/opt/stacks/sqlservercheck/` | + +## URL operasional + +### geonet-console + +| Fungsi | URL | +|--------|-----| +| Login / dashboard | https://console.gisportal.id | + +### databaselist + +| Fungsi | URL | +|--------|-----| +| Daftar database | https://databaselist.gisportal.id/ | +| LDAP Users | https://databaselist.gisportal.id/ldap-users | +| LDAP Groups | https://databaselist.gisportal.id/ldap-groups | +| DB Connections | https://databaselist.gisportal.id/database-connections | +| Mail SMTP & template | https://databaselist.gisportal.id/mail-settings | +| Audit Logs | https://databaselist.gisportal.id/audit-logs | +| API Clients | https://databaselist.gisportal.id/api-clients | +| API Docs | https://databaselist.gisportal.id/api-docs | +| Profile (user) | https://databaselist.gisportal.id/profile | +| REST API | https://databaselist.gisportal.id/api/v1 | + +### sqlservercheck + +| Fungsi | URL | +|--------|-----| +| Tool cek SQL Server | https://sqlservercheck.gisportal.id/ts | +| | https://sqlservercheck.gisportal.id/nts | + +## File konteks terkait + +| File | Isi | +|------|-----| +| `.cursor/me.md` | Profil pemilik & infrastruktur (file ini) | +| `.cursor/rules/*.mdc` | Rules Cursor — konteks, UX, backend, deploy | +| `AGENTS.md` | Ringkasan agent, rules aktif, roadmap Ollama/NAS | +| `perintah.md` | Protokol sync dokumentasi AI di akhir sesi | +| `readme.txt` | SSH, deploy cepat, URL | +| `rules` / `rules-adv` | Requirement bisnis manual | +| `server/host.txt` | Daftar host & IP | +| `server/ollama-nas-project-search-requirements.md` | Requirement Ollama + NAS search | +| `Cursor-Enterprise-Full-Documentation/` | Baseline enterprise | +| `cursor-exsisting/` | Audit UI/UX detail | +| `cursor-exsisting-ask/` | Status implementasi detail | + +### Rules Cursor (prioritas) + +| File | Isi | +|------|-----| +| `00-project-context.mdc` | Struktur repo, host SSH, deploy | +| `01-enterprise-principles.mdc` | Prinsip enterprise & UX | +| `02-implementation-status.mdc` | Status fitur geonet-console | +| `03-ai-behavior.mdc` | Perilaku agent, larangan | +| `04-geonet-uiux.mdc` | Standar UI/UX | +| `05-laravel-backend.mdc` | Service layer, API, audit | +| `06-infrastructure.mdc` | SSH, Mikrotik, skrip deploy | + +## Status proyek + +| Topik | Sumber status | +|-------|----------------| +| Fitur geonet-console | `.cursor/rules/02-implementation-status.mdc` | +| Ollama + NAS search | `AGENTS.md` (direncanakan) | +| Requirement bisnis | `rules`, `rules-adv` | +| Sync dokumentasi AI | `perintah.md` | + +## Deploy cepat + +```powershell +.\scripts\deploy-geonet-console.ps1 +.\scripts\deploy-databaselist.ps1 +.\scripts\deploy-sqlservercheck.ps1 +.\scripts\deploy-databaselist.ps1 -NoBuild # restart tanpa rebuild +``` diff --git a/server-connection/.cursor/rules/06-infrastructure.mdc b/server-connection/.cursor/rules/06-infrastructure.mdc index 3e93511..020c9bf 100644 --- a/server-connection/.cursor/rules/06-infrastructure.mdc +++ b/server-connection/.cursor/rules/06-infrastructure.mdc @@ -25,6 +25,22 @@ alwaysApply: false - Konfig: `server/mikrotik-*.rsc`, checklist: `server/mikrotik-*-checklist.txt` - Backup sebelum apply: simpan di `server/` +## SSH Key-based Access (tanpa password) + +SSH private key sudah dikonfigurasi di laptop user. Agent BOLEH propose SSH command untuk setup/deploy — WAJIB minta persetujuan user, tidak boleh auto-run SSH yang bersifat destructive. + +| Server | SSH Command | +|--------|-------------| +| Reverse proxy `10.100.1.24` | `ssh -m hmac-sha1 root@10.100.1.24 -p 22` | +| Main Database `10.100.1.25` | `ssh -m hmac-sha1 root@10.100.1.25 -p 22` | +| AD-LDAP `10.100.1.40` | `ssh -m hmac-sha1 Administrator@10.100.1.40 -p 22` | +| Zabbix `10.100.1.42` | `ssh -m hmac-sha1 root@10.100.1.42 -p 22` | +| Ollama `10.100.1.26` | `ssh -i "$env:USERPROFILE\.ssh\id_rsa_geonet_laptop" -o IdentitiesOnly=yes -m hmac-sha1 root@10.100.1.26 -p 22` | +| NAS QNAP `10.100.1.10` | `ssh -i "$env:USERPROFILE\.ssh\id_ed25519" -o IdentitiesOnly=yes admin@10.100.1.10 -p 22` | + +> Ollama & QNAP: Wajib PowerShell (bukan CMD). +> Remote command: `ssh -m hmac-sha1 root@10.100.1.24 -p 22 "perintah"` — single line. + ## Server audit - Simpan hasil audit ke `server/_audit.txt` diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/00-global.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/00-global.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/00-global.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/00-global.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/01-architecture.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/01-architecture.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/01-architecture.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/01-architecture.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/02-security-enterprise.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/02-security-enterprise.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/02-security-enterprise.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/02-security-enterprise.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/03-ldap-rbac.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/03-ldap-rbac.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/03-ldap-rbac.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/03-ldap-rbac.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/04-maker-checker.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/04-maker-checker.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/04-maker-checker.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/04-maker-checker.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/05-audit-trail.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/05-audit-trail.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/05-audit-trail.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/05-audit-trail.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/06-database-management.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/06-database-management.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/06-database-management.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/06-database-management.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/07-api-management.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/07-api-management.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/07-api-management.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/07-api-management.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/08-smtp-hmailserver.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/08-smtp-hmailserver.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/08-smtp-hmailserver.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/08-smtp-hmailserver.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/09-monitoring.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/09-monitoring.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/09-monitoring.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/09-monitoring.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/10-cms-core.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/10-cms-core.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/10-cms-core.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/10-cms-core.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/11-cms-page-builder.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/11-cms-page-builder.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/11-cms-page-builder.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/11-cms-page-builder.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/12-cms-media-library.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/12-cms-media-library.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/12-cms-media-library.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/12-cms-media-library.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/13-cms-workflow-seo.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/13-cms-workflow-seo.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/13-cms-workflow-seo.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/13-cms-workflow-seo.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/14-cms-headless-api.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/14-cms-headless-api.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/14-cms-headless-api.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/14-cms-headless-api.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/15-pwa-enterprise.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/15-pwa-enterprise.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/15-pwa-enterprise.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/15-pwa-enterprise.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/16-uiux-enterprise.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/16-uiux-enterprise.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/16-uiux-enterprise.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/16-uiux-enterprise.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/17-docker-devops.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/17-docker-devops.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/17-docker-devops.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/17-docker-devops.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/18-cicd-enterprise.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/18-cicd-enterprise.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/18-cicd-enterprise.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/18-cicd-enterprise.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/19-laravel12-standard.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/19-laravel12-standard.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/19-laravel12-standard.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/19-laravel12-standard.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/20-ai-cursor-rules.mdc b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/20-ai-cursor-rules.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/20-ai-cursor-rules.mdc rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/20-ai-cursor-rules.mdc diff --git a/server-connection/Cursor-Enterprise-Full-Documentation/README.md b/server-connection/cursor template/Cursor-Enterprise-Full-Documentation/README.md similarity index 100% rename from server-connection/Cursor-Enterprise-Full-Documentation/README.md rename to server-connection/cursor template/Cursor-Enterprise-Full-Documentation/README.md diff --git a/server-connection/Cursor-Enterprise-Rules-Full/00-global.mdc b/server-connection/cursor template/Cursor-Enterprise-Rules-Full/00-global.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Rules-Full/00-global.mdc rename to server-connection/cursor template/Cursor-Enterprise-Rules-Full/00-global.mdc diff --git a/server-connection/Cursor-Enterprise-Rules-Full/01-architecture.mdc b/server-connection/cursor template/Cursor-Enterprise-Rules-Full/01-architecture.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Rules-Full/01-architecture.mdc rename to server-connection/cursor template/Cursor-Enterprise-Rules-Full/01-architecture.mdc diff --git a/server-connection/Cursor-Enterprise-Rules-Full/02-security-enterprise.mdc b/server-connection/cursor template/Cursor-Enterprise-Rules-Full/02-security-enterprise.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Rules-Full/02-security-enterprise.mdc rename to server-connection/cursor template/Cursor-Enterprise-Rules-Full/02-security-enterprise.mdc diff --git a/server-connection/Cursor-Enterprise-Rules-Full/03-ldap-rbac.mdc b/server-connection/cursor template/Cursor-Enterprise-Rules-Full/03-ldap-rbac.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Rules-Full/03-ldap-rbac.mdc rename to server-connection/cursor template/Cursor-Enterprise-Rules-Full/03-ldap-rbac.mdc diff --git a/server-connection/Cursor-Enterprise-Rules-Full/04-maker-checker.mdc b/server-connection/cursor template/Cursor-Enterprise-Rules-Full/04-maker-checker.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Rules-Full/04-maker-checker.mdc rename to server-connection/cursor template/Cursor-Enterprise-Rules-Full/04-maker-checker.mdc diff --git a/server-connection/Cursor-Enterprise-Rules-Full/05-cms-wordpress-like.mdc b/server-connection/cursor template/Cursor-Enterprise-Rules-Full/05-cms-wordpress-like.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Rules-Full/05-cms-wordpress-like.mdc rename to server-connection/cursor template/Cursor-Enterprise-Rules-Full/05-cms-wordpress-like.mdc diff --git a/server-connection/Cursor-Enterprise-Rules-Full/06-api-management.mdc b/server-connection/cursor template/Cursor-Enterprise-Rules-Full/06-api-management.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Rules-Full/06-api-management.mdc rename to server-connection/cursor template/Cursor-Enterprise-Rules-Full/06-api-management.mdc diff --git a/server-connection/Cursor-Enterprise-Rules-Full/07-database.mdc b/server-connection/cursor template/Cursor-Enterprise-Rules-Full/07-database.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Rules-Full/07-database.mdc rename to server-connection/cursor template/Cursor-Enterprise-Rules-Full/07-database.mdc diff --git a/server-connection/Cursor-Enterprise-Rules-Full/08-smtp-hmailserver.mdc b/server-connection/cursor template/Cursor-Enterprise-Rules-Full/08-smtp-hmailserver.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Rules-Full/08-smtp-hmailserver.mdc rename to server-connection/cursor template/Cursor-Enterprise-Rules-Full/08-smtp-hmailserver.mdc diff --git a/server-connection/Cursor-Enterprise-Rules-Full/09-audit-trail.mdc b/server-connection/cursor template/Cursor-Enterprise-Rules-Full/09-audit-trail.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Rules-Full/09-audit-trail.mdc rename to server-connection/cursor template/Cursor-Enterprise-Rules-Full/09-audit-trail.mdc diff --git a/server-connection/Cursor-Enterprise-Rules-Full/10-pwa-uiux.mdc b/server-connection/cursor template/Cursor-Enterprise-Rules-Full/10-pwa-uiux.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Rules-Full/10-pwa-uiux.mdc rename to server-connection/cursor template/Cursor-Enterprise-Rules-Full/10-pwa-uiux.mdc diff --git a/server-connection/Cursor-Enterprise-Rules-Full/11-monitoring.mdc b/server-connection/cursor template/Cursor-Enterprise-Rules-Full/11-monitoring.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Rules-Full/11-monitoring.mdc rename to server-connection/cursor template/Cursor-Enterprise-Rules-Full/11-monitoring.mdc diff --git a/server-connection/Cursor-Enterprise-Rules-Full/12-devops-docker-cicd.mdc b/server-connection/cursor template/Cursor-Enterprise-Rules-Full/12-devops-docker-cicd.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Rules-Full/12-devops-docker-cicd.mdc rename to server-connection/cursor template/Cursor-Enterprise-Rules-Full/12-devops-docker-cicd.mdc diff --git a/server-connection/Cursor-Enterprise-Rules-Full/13-laravel12-standard.mdc b/server-connection/cursor template/Cursor-Enterprise-Rules-Full/13-laravel12-standard.mdc similarity index 100% rename from server-connection/Cursor-Enterprise-Rules-Full/13-laravel12-standard.mdc rename to server-connection/cursor template/Cursor-Enterprise-Rules-Full/13-laravel12-standard.mdc diff --git a/server-connection/Cursor-Enterprise-Rules-Full/README.md b/server-connection/cursor template/Cursor-Enterprise-Rules-Full/README.md similarity index 100% rename from server-connection/Cursor-Enterprise-Rules-Full/README.md rename to server-connection/cursor template/Cursor-Enterprise-Rules-Full/README.md diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/00-global.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/00-global.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/00-global.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/00-global.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/01-architecture.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/01-architecture.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/01-architecture.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/01-architecture.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/02-security.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/02-security.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/02-security.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/02-security.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/03-ldap-rbac.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/03-ldap-rbac.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/03-ldap-rbac.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/03-ldap-rbac.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/04-maker-checker.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/04-maker-checker.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/04-maker-checker.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/04-maker-checker.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/05-audit-log.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/05-audit-log.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/05-audit-log.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/05-audit-log.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/06-database.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/06-database.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/06-database.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/06-database.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/07-api-management.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/07-api-management.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/07-api-management.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/07-api-management.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/08-cms-enterprise.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/08-cms-enterprise.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/08-cms-enterprise.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/08-cms-enterprise.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/09-smtp-hmailserver.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/09-smtp-hmailserver.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/09-smtp-hmailserver.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/09-smtp-hmailserver.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/10-pwa-uiux.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/10-pwa-uiux.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/10-pwa-uiux.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/10-pwa-uiux.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/11-monitoring.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/11-monitoring.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/11-monitoring.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/11-monitoring.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/12-devops.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/12-devops.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/12-devops.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/12-devops.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/13-branding.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/13-branding.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/13-branding.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/13-branding.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/14-ai-cursor-rules.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/14-ai-cursor-rules.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/14-ai-cursor-rules.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/14-ai-cursor-rules.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/15-framework-laravel.mdc b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/15-framework-laravel.mdc similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/15-framework-laravel.mdc rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/15-framework-laravel.mdc diff --git a/server-connection/Cursor-Rules-Enterprise-Indonesia/README.md b/server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/README.md similarity index 100% rename from server-connection/Cursor-Rules-Enterprise-Indonesia/README.md rename to server-connection/cursor template/Cursor-Rules-Enterprise-Indonesia/README.md diff --git a/server-connection/cursor-exsisting-ask/00-global.mdc b/server-connection/cursor template/cursor-exsisting-ask/00-global.mdc similarity index 100% rename from server-connection/cursor-exsisting-ask/00-global.mdc rename to server-connection/cursor template/cursor-exsisting-ask/00-global.mdc diff --git a/server-connection/cursor-exsisting-ask/01-architecture.mdc b/server-connection/cursor template/cursor-exsisting-ask/01-architecture.mdc similarity index 100% rename from server-connection/cursor-exsisting-ask/01-architecture.mdc rename to server-connection/cursor template/cursor-exsisting-ask/01-architecture.mdc diff --git a/server-connection/cursor-exsisting/00-global.mdc b/server-connection/cursor template/cursor-exsisting/00-global.mdc similarity index 100% rename from server-connection/cursor-exsisting/00-global.mdc rename to server-connection/cursor template/cursor-exsisting/00-global.mdc diff --git a/server-connection/cursor-exsisting/01-design-system.mdc b/server-connection/cursor template/cursor-exsisting/01-design-system.mdc similarity index 100% rename from server-connection/cursor-exsisting/01-design-system.mdc rename to server-connection/cursor template/cursor-exsisting/01-design-system.mdc diff --git a/server-connection/cursor-exsisting/02-app-shell-navigation.mdc b/server-connection/cursor template/cursor-exsisting/02-app-shell-navigation.mdc similarity index 100% rename from server-connection/cursor-exsisting/02-app-shell-navigation.mdc rename to server-connection/cursor template/cursor-exsisting/02-app-shell-navigation.mdc diff --git a/server-connection/cursor-exsisting/03-responsive-layout.mdc b/server-connection/cursor template/cursor-exsisting/03-responsive-layout.mdc similarity index 100% rename from server-connection/cursor-exsisting/03-responsive-layout.mdc rename to server-connection/cursor template/cursor-exsisting/03-responsive-layout.mdc diff --git a/server-connection/cursor-exsisting/04-theme-appearance.mdc b/server-connection/cursor template/cursor-exsisting/04-theme-appearance.mdc similarity index 100% rename from server-connection/cursor-exsisting/04-theme-appearance.mdc rename to server-connection/cursor template/cursor-exsisting/04-theme-appearance.mdc diff --git a/server-connection/cursor-exsisting/05-feedback-loading.mdc b/server-connection/cursor template/cursor-exsisting/05-feedback-loading.mdc similarity index 100% rename from server-connection/cursor-exsisting/05-feedback-loading.mdc rename to server-connection/cursor template/cursor-exsisting/05-feedback-loading.mdc diff --git a/server-connection/cursor-exsisting/06-lists-tables.mdc b/server-connection/cursor template/cursor-exsisting/06-lists-tables.mdc similarity index 100% rename from server-connection/cursor-exsisting/06-lists-tables.mdc rename to server-connection/cursor template/cursor-exsisting/06-lists-tables.mdc diff --git a/server-connection/cursor-exsisting/07-auth-pages.mdc b/server-connection/cursor template/cursor-exsisting/07-auth-pages.mdc similarity index 100% rename from server-connection/cursor-exsisting/07-auth-pages.mdc rename to server-connection/cursor template/cursor-exsisting/07-auth-pages.mdc diff --git a/server-connection/cursor-exsisting/08-pwa-offline.mdc b/server-connection/cursor template/cursor-exsisting/08-pwa-offline.mdc similarity index 100% rename from server-connection/cursor-exsisting/08-pwa-offline.mdc rename to server-connection/cursor template/cursor-exsisting/08-pwa-offline.mdc diff --git a/server-connection/cursor-exsisting/09-spa-navigation.mdc b/server-connection/cursor template/cursor-exsisting/09-spa-navigation.mdc similarity index 100% rename from server-connection/cursor-exsisting/09-spa-navigation.mdc rename to server-connection/cursor template/cursor-exsisting/09-spa-navigation.mdc diff --git a/server-connection/cursor-exsisting/10-screens-inventory.mdc b/server-connection/cursor template/cursor-exsisting/10-screens-inventory.mdc similarity index 100% rename from server-connection/cursor-exsisting/10-screens-inventory.mdc rename to server-connection/cursor template/cursor-exsisting/10-screens-inventory.mdc diff --git a/server-connection/cursor-exsisting/11-accessibility.mdc b/server-connection/cursor template/cursor-exsisting/11-accessibility.mdc similarity index 100% rename from server-connection/cursor-exsisting/11-accessibility.mdc rename to server-connection/cursor template/cursor-exsisting/11-accessibility.mdc diff --git a/server-connection/cursor-exsisting/12-gaps-rekomendasi.mdc b/server-connection/cursor template/cursor-exsisting/12-gaps-rekomendasi.mdc similarity index 100% rename from server-connection/cursor-exsisting/12-gaps-rekomendasi.mdc rename to server-connection/cursor template/cursor-exsisting/12-gaps-rekomendasi.mdc diff --git a/server-connection/cursor-exsisting/README.md b/server-connection/cursor template/cursor-exsisting/README.md similarity index 100% rename from server-connection/cursor-exsisting/README.md rename to server-connection/cursor template/cursor-exsisting/README.md diff --git a/server-connection/cursor-rules-enterprise-complete/01-architecture.mdc b/server-connection/cursor template/cursor-rules-enterprise-complete/01-architecture.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/01-architecture.mdc rename to server-connection/cursor template/cursor-rules-enterprise-complete/01-architecture.mdc diff --git a/server-connection/cursor-rules-enterprise-complete/02-security.mdc b/server-connection/cursor template/cursor-rules-enterprise-complete/02-security.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/02-security.mdc rename to server-connection/cursor template/cursor-rules-enterprise-complete/02-security.mdc diff --git a/server-connection/cursor-rules-enterprise-complete/03-ldap-rbac.mdc b/server-connection/cursor template/cursor-rules-enterprise-complete/03-ldap-rbac.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/03-ldap-rbac.mdc rename to server-connection/cursor template/cursor-rules-enterprise-complete/03-ldap-rbac.mdc diff --git a/server-connection/cursor-rules-enterprise-complete/04-maker-checker.mdc b/server-connection/cursor template/cursor-rules-enterprise-complete/04-maker-checker.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/04-maker-checker.mdc rename to server-connection/cursor template/cursor-rules-enterprise-complete/04-maker-checker.mdc diff --git a/server-connection/cursor-rules-enterprise-complete/05-audit.mdc b/server-connection/cursor template/cursor-rules-enterprise-complete/05-audit.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/05-audit.mdc rename to server-connection/cursor template/cursor-rules-enterprise-complete/05-audit.mdc diff --git a/server-connection/cursor-rules-enterprise-complete/06-uiux-pwa.mdc b/server-connection/cursor template/cursor-rules-enterprise-complete/06-uiux-pwa.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/06-uiux-pwa.mdc rename to server-connection/cursor template/cursor-rules-enterprise-complete/06-uiux-pwa.mdc diff --git a/server-connection/cursor-rules-enterprise-complete/07-api-management.mdc b/server-connection/cursor template/cursor-rules-enterprise-complete/07-api-management.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/07-api-management.mdc rename to server-connection/cursor template/cursor-rules-enterprise-complete/07-api-management.mdc diff --git a/server-connection/cursor-rules-enterprise-complete/08-database-management.mdc b/server-connection/cursor template/cursor-rules-enterprise-complete/08-database-management.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/08-database-management.mdc rename to server-connection/cursor template/cursor-rules-enterprise-complete/08-database-management.mdc diff --git a/server-connection/cursor-rules-enterprise-complete/09-cms-enterprise.mdc b/server-connection/cursor template/cursor-rules-enterprise-complete/09-cms-enterprise.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/09-cms-enterprise.mdc rename to server-connection/cursor template/cursor-rules-enterprise-complete/09-cms-enterprise.mdc diff --git a/server-connection/cursor-rules-enterprise-complete/10-smtp-mail.mdc b/server-connection/cursor template/cursor-rules-enterprise-complete/10-smtp-mail.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/10-smtp-mail.mdc rename to server-connection/cursor template/cursor-rules-enterprise-complete/10-smtp-mail.mdc diff --git a/server-connection/cursor-rules-enterprise-complete/11-monitoring.mdc b/server-connection/cursor template/cursor-rules-enterprise-complete/11-monitoring.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/11-monitoring.mdc rename to server-connection/cursor template/cursor-rules-enterprise-complete/11-monitoring.mdc diff --git a/server-connection/cursor-rules-enterprise-complete/12-devops.mdc b/server-connection/cursor template/cursor-rules-enterprise-complete/12-devops.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/12-devops.mdc rename to server-connection/cursor template/cursor-rules-enterprise-complete/12-devops.mdc diff --git a/server-connection/cursor-rules-enterprise-complete/13-branding.mdc b/server-connection/cursor template/cursor-rules-enterprise-complete/13-branding.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/13-branding.mdc rename to server-connection/cursor template/cursor-rules-enterprise-complete/13-branding.mdc diff --git a/server-connection/cursor-rules-enterprise-complete/14-ai-output-rules.mdc b/server-connection/cursor template/cursor-rules-enterprise-complete/14-ai-output-rules.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/14-ai-output-rules.mdc rename to server-connection/cursor template/cursor-rules-enterprise-complete/14-ai-output-rules.mdc diff --git a/server-connection/cursor-rules-enterprise-complete/15-future-enterprise.mdc b/server-connection/cursor template/cursor-rules-enterprise-complete/15-future-enterprise.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/15-future-enterprise.mdc rename to server-connection/cursor template/cursor-rules-enterprise-complete/15-future-enterprise.mdc diff --git a/server-connection/cursor-rules-enterprise-complete/README.md b/server-connection/cursor template/cursor-rules-enterprise-complete/README.md similarity index 100% rename from server-connection/cursor-rules-enterprise-complete/README.md rename to server-connection/cursor template/cursor-rules-enterprise-complete/README.md diff --git a/server-connection/cursor-rules-enterprise/01-architecture.mdc b/server-connection/cursor template/cursor-rules-enterprise/01-architecture.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise/01-architecture.mdc rename to server-connection/cursor template/cursor-rules-enterprise/01-architecture.mdc diff --git a/server-connection/cursor-rules-enterprise/02-security.mdc b/server-connection/cursor template/cursor-rules-enterprise/02-security.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise/02-security.mdc rename to server-connection/cursor template/cursor-rules-enterprise/02-security.mdc diff --git a/server-connection/cursor-rules-enterprise/03-ldap-rbac.mdc b/server-connection/cursor template/cursor-rules-enterprise/03-ldap-rbac.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise/03-ldap-rbac.mdc rename to server-connection/cursor template/cursor-rules-enterprise/03-ldap-rbac.mdc diff --git a/server-connection/cursor-rules-enterprise/04-maker-checker.mdc b/server-connection/cursor template/cursor-rules-enterprise/04-maker-checker.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise/04-maker-checker.mdc rename to server-connection/cursor template/cursor-rules-enterprise/04-maker-checker.mdc diff --git a/server-connection/cursor-rules-enterprise/05-audit.mdc b/server-connection/cursor template/cursor-rules-enterprise/05-audit.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise/05-audit.mdc rename to server-connection/cursor template/cursor-rules-enterprise/05-audit.mdc diff --git a/server-connection/cursor-rules-enterprise/06-uiux-pwa.mdc b/server-connection/cursor template/cursor-rules-enterprise/06-uiux-pwa.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise/06-uiux-pwa.mdc rename to server-connection/cursor template/cursor-rules-enterprise/06-uiux-pwa.mdc diff --git a/server-connection/cursor-rules-enterprise/07-api-management.mdc b/server-connection/cursor template/cursor-rules-enterprise/07-api-management.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise/07-api-management.mdc rename to server-connection/cursor template/cursor-rules-enterprise/07-api-management.mdc diff --git a/server-connection/cursor-rules-enterprise/08-database-management.mdc b/server-connection/cursor template/cursor-rules-enterprise/08-database-management.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise/08-database-management.mdc rename to server-connection/cursor template/cursor-rules-enterprise/08-database-management.mdc diff --git a/server-connection/cursor-rules-enterprise/09-cms-enterprise.mdc b/server-connection/cursor template/cursor-rules-enterprise/09-cms-enterprise.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise/09-cms-enterprise.mdc rename to server-connection/cursor template/cursor-rules-enterprise/09-cms-enterprise.mdc diff --git a/server-connection/cursor-rules-enterprise/10-smtp-mail.mdc b/server-connection/cursor template/cursor-rules-enterprise/10-smtp-mail.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise/10-smtp-mail.mdc rename to server-connection/cursor template/cursor-rules-enterprise/10-smtp-mail.mdc diff --git a/server-connection/cursor-rules-enterprise/11-monitoring.mdc b/server-connection/cursor template/cursor-rules-enterprise/11-monitoring.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise/11-monitoring.mdc rename to server-connection/cursor template/cursor-rules-enterprise/11-monitoring.mdc diff --git a/server-connection/cursor-rules-enterprise/12-devops.mdc b/server-connection/cursor template/cursor-rules-enterprise/12-devops.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise/12-devops.mdc rename to server-connection/cursor template/cursor-rules-enterprise/12-devops.mdc diff --git a/server-connection/cursor-rules-enterprise/13-branding.mdc b/server-connection/cursor template/cursor-rules-enterprise/13-branding.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise/13-branding.mdc rename to server-connection/cursor template/cursor-rules-enterprise/13-branding.mdc diff --git a/server-connection/cursor-rules-enterprise/14-ai-output-rules.mdc b/server-connection/cursor template/cursor-rules-enterprise/14-ai-output-rules.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise/14-ai-output-rules.mdc rename to server-connection/cursor template/cursor-rules-enterprise/14-ai-output-rules.mdc diff --git a/server-connection/cursor-rules-enterprise/15-future-enterprise.mdc b/server-connection/cursor template/cursor-rules-enterprise/15-future-enterprise.mdc similarity index 100% rename from server-connection/cursor-rules-enterprise/15-future-enterprise.mdc rename to server-connection/cursor template/cursor-rules-enterprise/15-future-enterprise.mdc diff --git a/server-connection/geonet-console-deploy.tar.gz b/server-connection/geonet-console-deploy.tar.gz index 04e1683..44a34fa 100644 Binary files a/server-connection/geonet-console-deploy.tar.gz and b/server-connection/geonet-console-deploy.tar.gz differ diff --git a/server-connection/geonet-console/app/Http/Controllers/Api/V1/MeController.php b/server-connection/geonet-console/app/Http/Controllers/Api/V1/MeController.php index c87d6d3..7b29997 100644 --- a/server-connection/geonet-console/app/Http/Controllers/Api/V1/MeController.php +++ b/server-connection/geonet-console/app/Http/Controllers/Api/V1/MeController.php @@ -4,6 +4,8 @@ namespace App\Http\Controllers\Api\V1; use App\Http\Controllers\Api\Concerns\RespondsWithJson; use App\Http\Controllers\Controller; +use App\Services\LdapAuthService; +use App\Services\LdapMetadataService; use App\Support\ApiActor; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; @@ -12,11 +14,32 @@ class MeController extends Controller { use RespondsWithJson; + public function __construct( + private readonly LdapAuthService $ldapAuth, + private readonly LdapMetadataService $metadata, + ) { + } + public function show(Request $request): JsonResponse { /** @var ApiActor $actor */ $actor = $request->attributes->get('api_actor'); - return $this->ok($actor->toArray()); + $data = $actor->toArray(); + + // Untuk LDAP JWT — enrich dengan data profile dari LDAP + metadata DB + if ($actor->type === 'ldap_jwt') { + $profile = $this->ldapAuth->getProfile($actor->identifier); + $meta = $this->metadata->getUserMeta($actor->identifier); + + $data['display_name'] = $profile['display_name'] ?? $actor->identifier; + $data['email'] = $profile['email'] ?? ''; + $data['last_logon'] = $profile['last_logon'] ?? null; + $data['domain'] = $profile['domain'] ?? ''; + $data['phone'] = $meta['phone'] ?? ''; + $data['other_email'] = $meta['other_email'] ?? ''; + } + + return $this->ok($data); } } diff --git a/server-connection/geonet-console/app/Services/ApiAuthService.php b/server-connection/geonet-console/app/Services/ApiAuthService.php index 85bb442..62e56aa 100644 --- a/server-connection/geonet-console/app/Services/ApiAuthService.php +++ b/server-connection/geonet-console/app/Services/ApiAuthService.php @@ -63,7 +63,8 @@ class ApiAuthService 'ldap_jwt', $payload['username'], $payload['scopes'], - $payload['is_admin'] + $payload['is_admin'], + $payload['groups'] ?? [], ); } diff --git a/server-connection/geonet-console/nginx/geonet-console.conf b/server-connection/geonet-console/nginx/geonet-console.conf index e981b5b..8365f48 100644 --- a/server-connection/geonet-console/nginx/geonet-console.conf +++ b/server-connection/geonet-console/nginx/geonet-console.conf @@ -41,6 +41,13 @@ server { return 204; } + # Hide CORS headers dari Laravel agar tidak duplicate + proxy_hide_header Access-Control-Allow-Origin; + proxy_hide_header Access-Control-Allow-Methods; + proxy_hide_header Access-Control-Allow-Headers; + proxy_hide_header Access-Control-Allow-Credentials; + proxy_hide_header Access-Control-Max-Age; + limit_req zone=geonet_console_general burst=50 nodelay; proxy_pass http://geonet_console_backend; diff --git a/server-connection/geonet-console/resources/views/api-clients/index.blade.php b/server-connection/geonet-console/resources/views/api-clients/index.blade.php index 5d7fa3b..d20cdfa 100644 --- a/server-connection/geonet-console/resources/views/api-clients/index.blade.php +++ b/server-connection/geonet-console/resources/views/api-clients/index.blade.php @@ -157,7 +157,7 @@
-

Service Tokens ({{ $serviceTokens->where('is_active', true)->count() }})

+

Service Tokens ({{ count(array_filter($serviceTokens, fn($t) => $t->is_active)) }})

@@ -177,7 +177,13 @@ - +
{{ $token->name }} {{ $token->service }}{{ $token->token_prefix }}... + + {{ !$token->is_active ? 'Revoked' : ($token->isExpired() ? 'Expired' : 'Active') }} @@ -285,4 +291,100 @@ + +{{-- Modal: Service Token Detail --}} + + +@push('scripts') + +@endpush + @endsection