role permission belom fix
This commit is contained in:
parent
9214aa0a31
commit
ca6a95571e
|
@ -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;
|
||||
// });
|
||||
// }
|
||||
|
||||
// }
|
|
@ -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');
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -68,7 +68,7 @@
|
|||
'enabled' => true,
|
||||
|
||||
'pages' => [
|
||||
'Dashboard',
|
||||
// Hapus Dashboard dari sini
|
||||
],
|
||||
|
||||
'widgets' => [
|
||||
|
|
|
@ -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',
|
||||
],
|
||||
];
|
|
@ -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');
|
||||
});
|
||||
}
|
||||
};
|
|
@ -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');
|
||||
}
|
||||
};
|
||||
};
|
|
@ -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');
|
||||
}
|
||||
};
|
|
@ -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();
|
||||
});
|
||||
}
|
||||
};
|
|
@ -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');
|
||||
});
|
||||
}
|
||||
};
|
|
@ -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']);
|
||||
}
|
||||
};
|
|
@ -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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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,
|
||||
],
|
||||
];
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue