role permission belom fix

This commit is contained in:
annajwasz 2025-04-29 11:33:16 +07:00
parent 9214aa0a31
commit ca6a95571e
16 changed files with 589 additions and 287 deletions

View File

@ -1,88 +0,0 @@
<?php
// namespace App\Models;
// use Illuminate\Database\Eloquent\Factories\HasFactory;
// use Illuminate\Database\Eloquent\Model;
// use Illuminate\Database\Eloquent\Relations\BelongsTo;
// class Listform extends Model
// {
// use HasFactory;
// protected $guarded = [];
// protected $casts = [
// 'nilai_kepemilikan_kip' => 'decimal:7',
// 'nilai_tingkatan_desil' => 'decimal:7',
// 'nilai_kondisi_ekonomi' => 'decimal:7',
// 'total_nilai' => 'decimal:7',
// ];
// public function mahasiswa(): BelongsTo
// {
// return $this->belongsTo(Mahasiswa::class);
// }
// protected static function boot()
// {
// parent::boot();
// static::saving(function ($listform) {
// // Hitung jumlah berkas yang diupload
// $berkasCount = 0;
// if (!empty($listform->berkas_sktm)) $berkasCount++;
// if (!empty($listform->berkas_ppke)) $berkasCount++;
// if (!empty($listform->berkas_pmk)) $berkasCount++;
// if (!empty($listform->berkas_pkh)) $berkasCount++;
// if (!empty($listform->berkas_kks)) $berkasCount++;
// // Tentukan kondisi ekonomi dan nilai berdasarkan jumlah berkas
// if ($berkasCount >= 4) {
// $listform->kondisi_ekonomi = 'Sangat Kurang Mampu';
// $listform->nilai_kondisi_ekonomi = 0.4;
// } elseif ($berkasCount >= 2) {
// $listform->kondisi_ekonomi = 'Kurang Mampu';
// $listform->nilai_kondisi_ekonomi = 0.3;
// } else {
// $listform->kondisi_ekonomi = 'Cukup Mampu';
// $listform->nilai_kondisi_ekonomi = 0.3;
// }
// // Hitung total nilai
// $totalNilai = 0;
// // Nilai dari Kepemilikan KIP
// if ($listform->kepemilikan_kip === 'Memiliki KIP') {
// $totalNilai += 0.6;
// } else {
// $totalNilai += 0.4;
// }
// // Nilai dari Tingkatan Desil
// switch ($listform->tingkatan_desil) {
// case 'Desil 1':
// $totalNilai += 0.35;
// break;
// case 'Desil 2':
// $totalNilai += 0.25;
// break;
// case 'Desil 3':
// $totalNilai += 0.20;
// break;
// case 'Desil 4':
// $totalNilai += 0.15;
// break;
// case 'Desil 5':
// $totalNilai += 0.05;
// break;
// }
// // Tambahkan nilai kondisi ekonomi
// $totalNilai += $listform->nilai_kondisi_ekonomi;
// $listform->total_nilai = $totalNilai;
// });
// }
// }

View File

@ -4,30 +4,141 @@
use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;
class UserPolicy
{
use HandlesAuthorization;
/**
* Determine whether the user can view any models.
*
* @param \App\Models\User $user
* @return bool
*/
public function viewAny(User $user): bool
{
return $user->hasRole(['admin', 'super_admin']);
return $user->can('view_any_user');
}
public function view(User $user, User $model): bool
/**
* Determine whether the user can view the model.
*
* @param \App\Models\User $user
* @return bool
*/
public function view(User $user): bool
{
return $user->hasRole(['admin', 'super_admin']);
return $user->can('view_user');
}
/**
* Determine whether the user can create models.
*
* @param \App\Models\User $user
* @return bool
*/
public function create(User $user): bool
{
return $user->hasRole(['admin', 'super_admin']);
return $user->can('create_user');
}
public function update(User $user, User $model): bool
/**
* Determine whether the user can update the model.
*
* @param \App\Models\User $user
* @return bool
*/
public function update(User $user): bool
{
return $user->hasRole(['admin', 'super_admin']);
return $user->can('update_user');
}
public function delete(User $user, User $model): bool
/**
* Determine whether the user can delete the model.
*
* @param \App\Models\User $user
* @return bool
*/
public function delete(User $user): bool
{
return $user->hasRole(['admin', 'super_admin']);
return $user->can('delete_user');
}
}
/**
* Determine whether the user can bulk delete.
*
* @param \App\Models\User $user
* @return bool
*/
public function deleteAny(User $user): bool
{
return $user->can('delete_any_user');
}
/**
* Determine whether the user can permanently delete.
*
* @param \App\Models\User $user
* @return bool
*/
public function forceDelete(User $user): bool
{
return $user->can('force_delete_user');
}
/**
* Determine whether the user can permanently bulk delete.
*
* @param \App\Models\User $user
* @return bool
*/
public function forceDeleteAny(User $user): bool
{
return $user->can('force_delete_any_user');
}
/**
* Determine whether the user can restore.
*
* @param \App\Models\User $user
* @return bool
*/
public function restore(User $user): bool
{
return $user->can('restore_user');
}
/**
* Determine whether the user can bulk restore.
*
* @param \App\Models\User $user
* @return bool
*/
public function restoreAny(User $user): bool
{
return $user->can('restore_any_user');
}
/**
* Determine whether the user can bulk restore.
*
* @param \App\Models\User $user
* @return bool
*/
public function replicate(User $user): bool
{
return $user->can('replicate_user');
}
/**
* Determine whether the user can reorder.
*
* @param \App\Models\User $user
* @return bool
*/
public function reorder(User $user): bool
{
return $user->can('reorder_user');
}
}

View File

@ -105,12 +105,4 @@ public function reorder(User $user): bool
{
return $user->can('reorder_pengumuman');
}
public function show()
{
$pengumuman = Parameter::where('mahasiswa_id', auth()->user()->mahasiswa->id)
->first();
return view('pengumuman', compact('pengumuman'));
}
}

View File

@ -68,7 +68,7 @@
'enabled' => true,
'pages' => [
'Dashboard',
// Hapus Dashboard dari sini
],
'widgets' => [

202
config/permission.php Normal file
View File

@ -0,0 +1,202 @@
<?php
return [
'models' => [
/*
* When using the "HasPermissions" trait from this package, we need to know which
* Eloquent model should be used to retrieve your permissions. Of course, it
* is often just the "Permission" model but you may use whatever you like.
*
* The model you want to use as a Permission model needs to implement the
* `Spatie\Permission\Contracts\Permission` contract.
*/
'permission' => Spatie\Permission\Models\Permission::class,
/*
* When using the "HasRoles" trait from this package, we need to know which
* Eloquent model should be used to retrieve your roles. Of course, it
* is often just the "Role" model but you may use whatever you like.
*
* The model you want to use as a Role model needs to implement the
* `Spatie\Permission\Contracts\Role` contract.
*/
'role' => Spatie\Permission\Models\Role::class,
],
'table_names' => [
/*
* When using the "HasRoles" trait from this package, we need to know which
* table should be used to retrieve your roles. We have chosen a basic
* default value but you may easily change it to any table you like.
*/
'roles' => 'roles',
/*
* When using the "HasPermissions" trait from this package, we need to know which
* table should be used to retrieve your permissions. We have chosen a basic
* default value but you may easily change it to any table you like.
*/
'permissions' => 'permissions',
/*
* When using the "HasPermissions" trait from this package, we need to know which
* table should be used to retrieve your models permissions. We have chosen a
* basic default value but you may easily change it to any table you like.
*/
'model_has_permissions' => 'model_has_permissions',
/*
* When using the "HasRoles" trait from this package, we need to know which
* table should be used to retrieve your models roles. We have chosen a
* basic default value but you may easily change it to any table you like.
*/
'model_has_roles' => 'model_has_roles',
/*
* When using the "HasRoles" trait from this package, we need to know which
* table should be used to retrieve your roles permissions. We have chosen a
* basic default value but you may easily change it to any table you like.
*/
'role_has_permissions' => 'role_has_permissions',
],
'column_names' => [
/*
* Change this if you want to name the related pivots other than defaults
*/
'role_pivot_key' => null, // default 'role_id',
'permission_pivot_key' => null, // default 'permission_id',
/*
* Change this if you want to name the related model primary key other than
* `model_id`.
*
* For example, this would be nice if your primary keys are all UUIDs. In
* that case, name this `model_uuid`.
*/
'model_morph_key' => 'model_id',
/*
* Change this if you want to use the teams feature and your related model's
* foreign key is other than `team_id`.
*/
'team_foreign_key' => 'team_id',
],
/*
* When set to true, the method for checking permissions will be registered on the gate.
* Set this to false if you want to implement custom logic for checking permissions.
*/
'register_permission_check_method' => true,
/*
* When set to true, Laravel\Octane\Events\OperationTerminated event listener will be registered
* this will refresh permissions on every TickTerminated, TaskTerminated and RequestTerminated
* NOTE: This should not be needed in most cases, but an Octane/Vapor combination benefited from it.
*/
'register_octane_reset_listener' => false,
/*
* Events will fire when a role or permission is assigned/unassigned:
* \Spatie\Permission\Events\RoleAttached
* \Spatie\Permission\Events\RoleDetached
* \Spatie\Permission\Events\PermissionAttached
* \Spatie\Permission\Events\PermissionDetached
*
* To enable, set to true, and then create listeners to watch these events.
*/
'events_enabled' => false,
/*
* Teams Feature.
* When set to true the package implements teams using the 'team_foreign_key'.
* If you want the migrations to register the 'team_foreign_key', you must
* set this to true before doing the migration.
* If you already did the migration then you must make a new migration to also
* add 'team_foreign_key' to 'roles', 'model_has_roles', and 'model_has_permissions'
* (view the latest version of this package's migration file)
*/
'teams' => false,
/*
* The class to use to resolve the permissions team id
*/
'team_resolver' => \Spatie\Permission\DefaultTeamResolver::class,
/*
* Passport Client Credentials Grant
* When set to true the package will use Passports Client to check permissions
*/
'use_passport_client_credentials' => false,
/*
* When set to true, the required permission names are added to exception messages.
* This could be considered an information leak in some contexts, so the default
* setting is false here for optimum safety.
*/
'display_permission_in_exception' => false,
/*
* When set to true, the required role names are added to exception messages.
* This could be considered an information leak in some contexts, so the default
* setting is false here for optimum safety.
*/
'display_role_in_exception' => false,
/*
* By default wildcard permission lookups are disabled.
* See documentation to understand supported syntax.
*/
'enable_wildcard_permission' => false,
/*
* The class to use for interpreting wildcard permissions.
* If you need to modify delimiters, override the class and specify its name here.
*/
// 'permission.wildcard_permission' => Spatie\Permission\WildcardPermission::class,
/* Cache-specific settings */
'cache' => [
/*
* By default all permissions are cached for 24 hours to speed up performance.
* When permissions or roles are updated the cache is flushed automatically.
*/
'expiration_time' => \DateInterval::createFromDateString('24 hours'),
/*
* The cache key used to store all permissions.
*/
'key' => 'spatie.permission.cache',
/*
* You may optionally indicate a specific cache driver to use for permission and
* role caching using any of the `store` drivers listed in the cache.php config
* file. Using 'default' here means to use the `default` set in cache.php.
*/
'store' => 'default',
],
];

View File

@ -1,22 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::table('parameters', function (Blueprint $table) {
$table->text('alasan_tidak_valid')->nullable();
});
}
public function down()
{
Schema::table('parameters', function (Blueprint $table) {
$table->dropColumn('alasan_tidak_valid');
});
}
};

View File

@ -6,10 +6,7 @@
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
public function up()
{
Schema::create('parameters', function (Blueprint $table) {
$table->id();
@ -37,14 +34,17 @@ public function up(): void
]);
// Untuk Kriteria 3: Kondisi Ekonomi
$table->enum('kondisi_ekonomi', ['Sangat Kurang Mampu', 'Kurang Mampu', 'Cukup Mampu']);
$table->enum('kondisi_ekonomi', [
'Sangat Kurang Mampu',
'Kurang Mampu',
'Cukup Mampu',
'Tidak Menerima Bantuan'
]);
// Berkas untuk Kondisi Ekonomi
$table->string('berkas_1')->nullable(); // Untuk semua kondisi
$table->string('berkas_2')->nullable(); // Untuk Kurang Mampu & Sangat Kurang Mampu
$table->string('berkas_3')->nullable(); // Untuk Kurang Mampu & Sangat Kurang Mampu
// $table->string('berkas_pkh')->nullable(); // Khusus Sangat Kurang Mampu
// $table->string('berkas_kks')->nullable(); // Khusus Sangat Kurang Mampu
// Untuk Kriteria 4: Status Orang tua
$table->enum('status_orang_tua', [
@ -60,27 +60,30 @@ public function up(): void
// Bukti kematian orang tua
$table->string('bukti_wafat_ayah')->nullable();
$table->string('bukti_wafat_ibu')->nullable();
// Status form
$table->enum('status', ['belum_validasi', 'valid','tidak_valid'])->default('belum_validasi');
// // Untuk menyimpan nilai perhitungan
// Alasan tidak valid
$table->text('alasan_tidak_valid')->nullable();
// Untuk menyimpan nilai perhitungan
$table->decimal('nilai_kepemilikan_kip', 10, 7)->default(0);
$table->decimal('nilai_tingkatan_desil', 10, 7)->default(0);
$table->decimal('nilai_kondisi_ekonomi', 10, 7)->default(0);
$table->decimal('nilai_status_orang_tua', 10, 7)->default(0);
$table->decimal('total_nilai', 10, 7)->default(0);
// Status form
// $table->enum('status', ['draft', 'submitted'])->default('draft');
$table->enum('status', ['belum_validasi', 'valid','tidak_valid'])->default('belum_validasi');
// Hasil penilaian
$table->enum('hasil', ['Layak', 'Dipertimbangkan', 'Tidak Layak'])->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
public function down()
{
Schema::dropIfExists('parameters');
}
};
};

View File

@ -1,60 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('listforms', function (Blueprint $table) {
$table->id();
$table->foreignId('mahasiswa_id')->constrained('mahasiswas')->cascadeOnDelete();
// Untuk Kriteria 1: Kepemilikan KIP
$table->enum('kepemilikan_kip', ['Memiliki KIP', 'Tidak Memiliki KIP']);
// Untuk Kriteria 2: Tingkatan Desil
$table->enum('tingkatan_desil', [
'Desil 1',
'Desil 2',
'Desil 3',
'Desil 4',
'Desil 5'
]);
// Untuk Kriteria 3: Kondisi Ekonomi
$table->enum('kondisi_ekonomi', ['Sangat Kurang Mampu', 'Kurang Mampu', 'Cukup Mampu']);
// Berkas untuk Kondisi Ekonomi
$table->string('berkas_sktm')->nullable(); // Untuk semua kondisi
$table->string('berkas_ppke')->nullable(); // Untuk Kurang Mampu & Sangat Kurang Mampu
$table->string('berkas_pmk')->nullable(); // Untuk Kurang Mampu & Sangat Kurang Mampu
$table->string('berkas_pkh')->nullable(); // Khusus Sangat Kurang Mampu
$table->string('berkas_kks')->nullable(); // Khusus Sangat Kurang Mampu
// Untuk menyimpan nilai perhitungan
$table->decimal('nilai_kepemilikan_kip', 10, 7)->default(0);
$table->decimal('nilai_tingkatan_desil', 10, 7)->default(0);
$table->decimal('nilai_kondisi_ekonomi', 10, 7)->default(0);
$table->decimal('total_nilai', 10, 7)->default(0);
// Status form
$table->enum('status', ['draft', 'submitted'])->default('draft');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('listforms');
}
};

View File

@ -1,37 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('parameters', function (Blueprint $table) {
$table->enum('kondisi_ekonomi', [
'Sangat Kurang Mampu',
'Kurang Mampu',
'Cukup Mampu',
'Tidak Menerima Bantuan'
])->change();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('parameters', function (Blueprint $table) {
$table->enum('kondisi_ekonomi', [
'Sangat Kurang Mampu',
'Kurang Mampu',
'Cukup Mampu'
])->change();
});
}
};

View File

@ -1,30 +0,0 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('parameters', function (Blueprint $table) {
$table->enum('hasil', ['Layak', 'Dipertimbangkan', 'Tidak Layak'])
->after('total_nilai')
->nullable();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::table('parameters', function (Blueprint $table) {
$table->dropColumn('hasil');
});
}
};

View File

@ -0,0 +1,140 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
$teams = config('permission.teams');
$tableNames = config('permission.table_names');
$columnNames = config('permission.column_names');
$pivotRole = $columnNames['role_pivot_key'] ?? 'role_id';
$pivotPermission = $columnNames['permission_pivot_key'] ?? 'permission_id';
if (empty($tableNames)) {
throw new \Exception('Error: config/permission.php not loaded. Run [php artisan config:clear] and try again.');
}
if ($teams && empty($columnNames['team_foreign_key'] ?? null)) {
throw new \Exception('Error: team_foreign_key on config/permission.php not loaded. Run [php artisan config:clear] and try again.');
}
Schema::create($tableNames['permissions'], static function (Blueprint $table) {
// $table->engine('InnoDB');
$table->bigIncrements('id'); // permission id
$table->string('name'); // For MyISAM use string('name', 225); // (or 166 for InnoDB with Redundant/Compact row format)
$table->string('guard_name'); // For MyISAM use string('guard_name', 25);
$table->timestamps();
$table->unique(['name', 'guard_name']);
});
Schema::create($tableNames['roles'], static function (Blueprint $table) use ($teams, $columnNames) {
// $table->engine('InnoDB');
$table->bigIncrements('id'); // role id
if ($teams || config('permission.testing')) { // permission.testing is a fix for sqlite testing
$table->unsignedBigInteger($columnNames['team_foreign_key'])->nullable();
$table->index($columnNames['team_foreign_key'], 'roles_team_foreign_key_index');
}
$table->string('name'); // For MyISAM use string('name', 225); // (or 166 for InnoDB with Redundant/Compact row format)
$table->string('guard_name'); // For MyISAM use string('guard_name', 25);
$table->timestamps();
if ($teams || config('permission.testing')) {
$table->unique([$columnNames['team_foreign_key'], 'name', 'guard_name']);
} else {
$table->unique(['name', 'guard_name']);
}
});
Schema::create($tableNames['model_has_permissions'], static function (Blueprint $table) use ($tableNames, $columnNames, $pivotPermission, $teams) {
$table->unsignedBigInteger($pivotPermission);
$table->string('model_type');
$table->unsignedBigInteger($columnNames['model_morph_key']);
$table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_permissions_model_id_model_type_index');
$table->foreign($pivotPermission)
->references('id') // permission id
->on($tableNames['permissions'])
->onDelete('cascade');
if ($teams) {
$table->unsignedBigInteger($columnNames['team_foreign_key']);
$table->index($columnNames['team_foreign_key'], 'model_has_permissions_team_foreign_key_index');
$table->primary([$columnNames['team_foreign_key'], $pivotPermission, $columnNames['model_morph_key'], 'model_type'],
'model_has_permissions_permission_model_type_primary');
} else {
$table->primary([$pivotPermission, $columnNames['model_morph_key'], 'model_type'],
'model_has_permissions_permission_model_type_primary');
}
});
Schema::create($tableNames['model_has_roles'], static function (Blueprint $table) use ($tableNames, $columnNames, $pivotRole, $teams) {
$table->unsignedBigInteger($pivotRole);
$table->string('model_type');
$table->unsignedBigInteger($columnNames['model_morph_key']);
$table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_roles_model_id_model_type_index');
$table->foreign($pivotRole)
->references('id') // role id
->on($tableNames['roles'])
->onDelete('cascade');
if ($teams) {
$table->unsignedBigInteger($columnNames['team_foreign_key']);
$table->index($columnNames['team_foreign_key'], 'model_has_roles_team_foreign_key_index');
$table->primary([$columnNames['team_foreign_key'], $pivotRole, $columnNames['model_morph_key'], 'model_type'],
'model_has_roles_role_model_type_primary');
} else {
$table->primary([$pivotRole, $columnNames['model_morph_key'], 'model_type'],
'model_has_roles_role_model_type_primary');
}
});
Schema::create($tableNames['role_has_permissions'], static function (Blueprint $table) use ($tableNames, $pivotRole, $pivotPermission) {
$table->unsignedBigInteger($pivotPermission);
$table->unsignedBigInteger($pivotRole);
$table->foreign($pivotPermission)
->references('id') // permission id
->on($tableNames['permissions'])
->onDelete('cascade');
$table->foreign($pivotRole)
->references('id') // role id
->on($tableNames['roles'])
->onDelete('cascade');
$table->primary([$pivotPermission, $pivotRole], 'role_has_permissions_permission_id_role_id_primary');
});
app('cache')
->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null)
->forget(config('permission.cache.key'));
}
/**
* Reverse the migrations.
*/
public function down(): void
{
$tableNames = config('permission.table_names');
if (empty($tableNames)) {
throw new \Exception('Error: config/permission.php not found and defaults could not be merged. Please publish the package configuration before proceeding, or drop the tables manually.');
}
Schema::drop($tableNames['role_has_permissions']);
Schema::drop($tableNames['model_has_roles']);
Schema::drop($tableNames['model_has_permissions']);
Schema::drop($tableNames['roles']);
Schema::drop($tableNames['permissions']);
}
};

View File

@ -12,10 +12,12 @@ class DatabaseSeeder extends Seeder
public function run(): void
{
$this->call([
RoleSeeder::class,
UserSeeder::class,
KriteriaSeeder::class,
SubKriteriaSeeder::class,
MahasiswaSeeder::class,
SuperAdminPermissionSeeder::class,
]);
}
}

View File

@ -17,21 +17,35 @@ public function run(): void
[
'nama' => 'Kepemilikan KIP',
'prioritas' => 1,
'bobot' => 0.5555,
'bobot' => 0.5208333,
],
[
'nama' => 'Tingkatan Desil',
'prioritas' => 2,
'bobot' => 0.25,
'bobot' => 0.2708333,
],
[
'nama' => 'Kondisi Ekonomi',
'prioritas' => 3,
'bobot' => 0.20,
'bobot' => 0.1458333,
],
[
'nama' => 'Status Orang Tua',
'prioritas' => 4,
'bobot' => 0.0625000,
],
];
// Hitung total bobot untuk memastikan jumlahnya 1
$totalBobot = array_sum(array_column($kriterias, 'bobot'));
// Normalisasi bobot jika total tidak tepat 1
if (abs($totalBobot - 1) > 0.0001) {
foreach ($kriterias as &$kriteria) {
$kriteria['bobot'] = $kriteria['bobot'] / $totalBobot;
}
}
foreach ($kriterias as $kriteria) {
Kriteria::create($kriteria);
}

View File

@ -0,0 +1,42 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
class RoleSeeder extends Seeder
{
public function run()
{
// Create roles
$admin = Role::create(['name' => 'admin', 'guard_name' => 'web']);
$superAdmin = Role::create(['name' => 'super_admin', 'guard_name' => 'web']);
$mahasiswa = Role::create(['name' => 'mahasiswa', 'guard_name' => 'web']);
// Create permissions
$permissions = [
'view_any_pengumuman',
'view_pengumuman',
'create_pengumuman',
'update_pengumuman',
'delete_pengumuman',
'delete_any_pengumuman',
'force_delete_pengumuman',
'force_delete_any_pengumuman',
'restore_pengumuman',
'restore_any_pengumuman',
'replicate_pengumuman',
'reorder_pengumuman'
];
foreach ($permissions as $permission) {
Permission::create(['name' => $permission, 'guard_name' => 'web']);
}
// Give all permissions to admin and super_admin
$admin->givePermissionTo($permissions);
$superAdmin->givePermissionTo($permissions);
}
}

View File

@ -20,14 +20,14 @@ public function run(): void
'nama' => 'Memiliki KIP',
'deskripsi' => 'Mahasiswa memiliki Kartu Indonesia Pintar',
'prioritas' => 1,
'bobot' => 0.6,
'bobot' => 0.3906250,
],
[
'kriteria_id' => 1,
'nama' => 'Tidak Memiliki KIP',
'deskripsi' => 'Mahasiswa tidak memiliki Kartu Indonesia Pintar',
'prioritas' => 2,
'bobot' => 0.4,
'bobot' => 0.1302083,
],
// Subkriteria untuk Tingkatan Desil (kriteria_id: 2)
@ -36,35 +36,35 @@ public function run(): void
'nama' => 'Desil 1',
'deskripsi' => 'Tingkat kesejahteraan terendah',
'prioritas' => 1,
'bobot' => 0.35,
'bobot' => 0.1238805,
],
[
'kriteria_id' => 2,
'nama' => 'Desil 2',
'deskripsi' => 'Tingkat kesejahteraan sangat rendah',
'prioritas' => 2,
'bobot' => 0.25,
'bobot' => 0.0695139,
],
[
'kriteria_id' => 2,
'nama' => 'Desil 3',
'deskripsi' => 'Tingkat kesejahteraan rendah',
'prioritas' => 3,
'bobot' => 0.20,
'bobot' => 0.0424306,
],
[
'kriteria_id' => 2,
'nama' => 'Desil 4',
'deskripsi' => 'Tingkat kesejahteraan menengah bawah',
'prioritas' => 4,
'bobot' => 0.15,
'bobot' => 0.0243750,
],
[
'kriteria_id' => 2,
'nama' => 'Desil 5',
'deskripsi' => 'Tingkat kesejahteraan menengah',
'prioritas' => 5,
'bobot' => 0.05,
'bobot' => 0.0108333,
],
// Subkriteria untuk Kondisi Ekonomi (kriteria_id: 3)
@ -73,21 +73,51 @@ public function run(): void
'nama' => 'Sangat Kurang Mampu',
'deskripsi' => 'Memiliki lebih dari 2 bantuan pemerintah',
'prioritas' => 1,
'bobot' => 0.4,
'bobot' => 0.0759548,
],
[
'kriteria_id' => 3,
'nama' => 'Kurang Mampu',
'deskripsi' => 'Memiliki 2 bantuan pemerintah',
'prioritas' => 2,
'bobot' => 0.3,
'bobot' => 0.0394965,
],
[
'kriteria_id' => 3,
'nama' => 'Cukup Mampu',
'deskripsi' => 'Penghasilan diatas UMR',
'deskripsi' => 'Mahasiswa memiliki 1 bantuan pemerintah',
'prioritas' => 3,
'bobot' => 0.3,
'bobot' => 0.0212674,
],
[
'kriteria_id' => 3,
'nama' => 'Tidak Menerima Bantuan',
'deskripsi' => 'Mahasiswa tidak memiliki bantuan pemerintah',
'prioritas' => 4,
'bobot' => 0.0091146,
],
// Subkriteria untuk Status Orang Tua (kriteria_id: 4)
[
'kriteria_id' => 4,
'nama' => 'Kedua Orang Tua Wafat',
'deskripsi' => 'Ayah dan Ibu wafat',
'prioritas' => 1,
'bobot' => 0.0381944,
],
[
'kriteria_id' => 4,
'nama' => 'Salah Satu Orang Tua Wafat',
'deskripsi' => 'Ayah atau Ibu-nya wafat',
'prioritas' => 2,
'bobot' => 0.0173611,
],
[
'kriteria_id' => 4,
'nama' => 'Kedua Orang Tua Masih Hidup',
'deskripsi' => 'Ayah dan Ibu-nya masih hidup',
'prioritas' => 3,
'bobot' => 0.0069444,
],
];

View File

@ -18,12 +18,15 @@ public function run(): void
// Cek apakah email sudah ada
if (!User::where('email', 'najwa@admin.com')->exists()) {
User::create([
$user = User::create([
'name' => 'Najwa',
'email' => 'najwa@admin.com',
'password' => Hash::make('12345678'),
'email_verified_at' => now()
]);
// Berikan role super_admin
$user->assignRole('super_admin');
}
// Tambahkan user lain jika diperlukan