67 lines
3.0 KiB
PHP
Executable File
67 lines
3.0 KiB
PHP
Executable File
<?php
|
|
|
|
use Illuminate\Database\Capsule\Manager as Capsule;
|
|
use Illuminate\Database\Schema\Blueprint;
|
|
|
|
class CreateAuthPermissionsTables
|
|
{
|
|
public function up()
|
|
{
|
|
// User Permissions
|
|
if (!Capsule::schema()->hasTable('user_permissions')) {
|
|
Capsule::schema()->create('user_permissions', function (Blueprint $table) {
|
|
$table->increments('user_permissions_id');
|
|
$table->integer('user_permissions_user_id')->unsigned();
|
|
$table->integer('user_permissions_bus_id')->unsigned()->nullable(); // Permission might be global or company specific
|
|
$table->string('user_permissions_permission');
|
|
$table->integer('user_permissions_granted_by')->unsigned()->nullable();
|
|
$table->timestamp('user_permissions_granted_at')->useCurrent();
|
|
$table->timestamp('user_permissions_expires_at')->nullable();
|
|
$table->timestamps();
|
|
|
|
$table->foreign('user_permissions_user_id')->references('users_id')->on('users')->onDelete('cascade');
|
|
// Optional: foreign key for bus_id if module order permits
|
|
});
|
|
}
|
|
|
|
// Role Permissions
|
|
if (!Capsule::schema()->hasTable('role_permissions')) {
|
|
Capsule::schema()->create('role_permissions', function (Blueprint $table) {
|
|
$table->increments('role_permissions_id');
|
|
$table->string('role_permissions_role');
|
|
$table->integer('role_permissions_bus_id')->unsigned()->nullable();
|
|
$table->string('role_permissions_permission');
|
|
$table->integer('role_permissions_created_by')->unsigned()->nullable();
|
|
$table->timestamps();
|
|
});
|
|
}
|
|
|
|
// Activity Logs
|
|
if (!Capsule::schema()->hasTable('activity_logs')) {
|
|
Capsule::schema()->create('activity_logs', function (Blueprint $table) {
|
|
$table->increments('activity_logs_id');
|
|
$table->integer('activity_logs_user_id')->unsigned()->nullable();
|
|
$table->integer('activity_logs_bus_id')->unsigned()->nullable();
|
|
$table->string('activity_logs_action');
|
|
$table->string('activity_logs_resource_type')->nullable();
|
|
$table->string('activity_logs_resource_id')->nullable();
|
|
$table->json('activity_logs_old_values')->nullable();
|
|
$table->json('activity_logs_new_values')->nullable();
|
|
$table->string('activity_logs_ip_address')->nullable();
|
|
$table->string('activity_logs_user_agent')->nullable();
|
|
$table->timestamps();
|
|
|
|
$table->index('activity_logs_user_id');
|
|
$table->index('activity_logs_bus_id');
|
|
});
|
|
}
|
|
}
|
|
|
|
public function down()
|
|
{
|
|
Capsule::schema()->dropIfExists('activity_logs');
|
|
Capsule::schema()->dropIfExists('role_permissions');
|
|
Capsule::schema()->dropIfExists('user_permissions');
|
|
}
|
|
}
|