feat: Initialize core application structure including authentication, role-based dashboards, service task management, and integration workflows.

This commit is contained in:
jeremy bayse
2026-02-16 09:30:23 +01:00
commit af060a8847
208 changed files with 26822 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
<?php
namespace Database\Seeders;
use App\Models\User;
// use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Seed the application's database.
*/
public function run(): void
{
$this->call([
ServiceSeeder::class,
RolesAndPermissionsSeeder::class,
IntegrationTemplateSeeder::class,
]);
$admin = User::factory()->create([
'name' => 'Admin User',
'email' => 'admin@admin.com',
'password' => bcrypt('password'),
]);
$admin->assignRole('Admin');
}
}

View File

@@ -0,0 +1,68 @@
<?php
namespace Database\Seeders;
use App\Models\IntegrationTemplate;
use App\Models\Service;
use App\Models\TemplateServiceItem;
use Illuminate\Database\Seeder;
class IntegrationTemplateSeeder extends Seeder
{
public function run(): void
{
$template = IntegrationTemplate::firstOrCreate([
'name' => 'Agent Standard',
'is_active' => true,
]);
$services = Service::all();
foreach ($services as $service) {
if ($service->name === 'DSI') {
$template->serviceItems()->create([
'service_id' => $service->id,
'label' => 'Création compte AD',
'is_mandatory' => true,
]);
$template->serviceItems()->create([
'service_id' => $service->id,
'label' => 'Attribution Ordinateur',
'is_mandatory' => true,
]);
$template->serviceItems()->create([
'service_id' => $service->id,
'label' => 'Création email',
'is_mandatory' => true,
]);
$template->serviceItems()->create([
'service_id' => $service->id,
'label' => 'Affectation Téléphonie Fixe',
'is_mandatory' => false,
]);
$template->serviceItems()->create([
'service_id' => $service->id,
'label' => 'Affectation Téléphone mobile',
'is_mandatory' => false,
]);
$template->serviceItems()->create([
'service_id' => $service->id,
'label' => 'Accès au SIG',
'is_mandatory' => false,
]);
} elseif ($service->name === 'Batiment') {
$template->serviceItems()->create([
'service_id' => $service->id,
'label' => 'Attribution Badge',
'is_mandatory' => true,
]);
} elseif ($service->name === 'ParcAuto') {
$template->serviceItems()->create([
'service_id' => $service->id,
'label' => 'Création compte vehicule',
'is_mandatory' => false,
]);
}
}
}
}

View File

@@ -0,0 +1,54 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
class RolesAndPermissionsSeeder extends Seeder
{
public function run(): void
{
// Reset cached roles and permissions
app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions();
// Create permissions
$permissions = [
'create integration',
'validate rh',
'manage dsi tasks',
'manage batiment tasks',
'manage parc auto tasks',
'view dashboard',
'export reports',
];
foreach ($permissions as $permission) {
Permission::firstOrCreate(['name' => $permission]);
}
// Create roles and assign permissions
Role::firstOrCreate(['name' => 'Admin'])->givePermissionTo(Permission::all());
Role::firstOrCreate(['name' => 'RH'])->givePermissionTo([
'create integration',
'validate rh',
'view dashboard',
'export reports',
]);
$services = ['DSI', 'Batiment', 'ParcAuto'];
foreach ($services as $service) {
Role::firstOrCreate(['name' => $service])->givePermissionTo([
'manage ' . strtolower($service === 'ParcAuto' ? 'parc auto' : $service) . ' tasks',
'view dashboard',
]);
}
Role::firstOrCreate(['name' => 'Prescripteur'])->givePermissionTo([
'create integration',
'view dashboard',
]);
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\Service;
class ServiceSeeder extends Seeder
{
public function run(): void
{
$services = [
['name' => 'DSI', 'code' => 'dsi'],
['name' => 'Batiment', 'code' => 'batiment'],
['name' => 'ParcAuto', 'code' => 'parc_auto'],
['name' => 'RH', 'code' => 'rh'],
];
foreach ($services as $service) {
\App\Models\Service::updateOrCreate(['code' => $service['code']], ['name' => $service['name']]);
}
}
}