Add super-admin Administration section and restructure global vs company settings

- Add Administration sidebar section (super-admin only) with Companies, Users, and Global Settings pages
- Add super-admin middleware, controllers, and API routes under /api/v1/super-admin/
- Allow super-admins to manage all companies and users across tenants
- Add user impersonation with short-lived tokens, audit logging, and UI banner
- Move system-level settings (Mail, PDF, Backup, Update, File Disk) from per-company to Administration > Global Settings
- Convert save_pdf_to_disk from CompanySetting to global Setting
- Add per-company mail configuration overrides (optional, falls back to global)
- Add CompanyMailConfigService to apply company mail config before sending emails
This commit is contained in:
Darko Gjorgjijoski
2026-04-03 10:35:40 +02:00
parent 25986b7bd5
commit 9432da467e
40 changed files with 2324 additions and 91 deletions

View File

@@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up(): void
{
Schema::create('impersonation_logs', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('admin_id');
$table->unsignedBigInteger('user_id');
$table->string('ip_address', 45)->nullable();
$table->unsignedBigInteger('token_id')->nullable();
$table->timestamp('stopped_at')->nullable();
$table->timestamps();
$table->foreign('admin_id')->references('id')->on('users')->onDelete('cascade');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
}
public function down(): void
{
Schema::dropIfExists('impersonation_logs');
}
};