diff --git a/app/Http/Controllers/Auth/CustomRegisterController.php b/app/Http/Controllers/Auth/CustomRegisterController.php index f323632..93f5dbe 100644 --- a/app/Http/Controllers/Auth/CustomRegisterController.php +++ b/app/Http/Controllers/Auth/CustomRegisterController.php @@ -9,6 +9,7 @@ use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Hash; use Illuminate\Http\Request; use App\Models\User; +use App\Models\ProfileSekolah as Profile; class CustomRegisterController extends Controller { @@ -19,8 +20,9 @@ class CustomRegisterController extends Controller public function post_register(Request $request) { - Validator::make($request->all(), [ - 'email' => 'required|unique:user|email|regex:/@.*\./', + try { + Validator::make($request->all(), [ + 'email' => 'required|unique:users|email', 'name' => 'required|max:50', 'npsn' => 'required', 'tingkat_sekolah' => 'required', @@ -30,6 +32,47 @@ class CustomRegisterController extends Controller 'telp' => 'required', 'check' => 'required', 'password' => 'required|min:8|max:15|regex:/[a-z]/|regex:/[A-Z]/|regex:/[0-9]/|regex:/[@$!%*#?&]/', //min 8 char, maks 15 char, min 1 symbol, min 1 uppercase, min 1 lowercase, 1 number + ],[ + 'password.min' => 'password Minimal 8 Karakter', + 'password.max' => 'password Maksimal 15 Karakter', + 'password.regex' => 'Format Kata Sandi harus mengandung minimal Huruf Besar, Huruf Kecil, Angka, Spesial Karakter', ])->validate(); + + $cek = Profile::where('npsn',$request->npsn)->count(); + if($cek > 0){ + return redirect('register')->with([ + 'message' => 'Untuk NPSN :'.$request->npsn.' Sudah terdaftar! Silahkan Login', + 'type' => "error" + ]); + } + + $user = new User; + $user->email = $request->email; + $user->password = Hash::make($request->password); + $user->name = $request->name; + $user->save(); + + $profile = new Profile; + $profile->user_id = $user->id; + $profile->npsn = $request->npsn; + $profile->ms_tingkat_sekolah_id = $request->tingkat_sekolah; + $profile->status_sekolah = $request->status_sekolah; + $profile->alamat_sekolah = $request->alamat_sekolah; + $profile->kontak_person = $request->kontak_person; + $profile->telp = $request->telp; + $profile->save(); + + return redirect('/login')->with([ + 'message' => 'Berhasil membuat akun baru, silahkan login', + 'type' => 'success', + ]); + + + } catch (Exception $e) { + return redirect('register')->with([ + 'message' => $e->getMessage(), + 'type' => "error" + ]); + } } } diff --git a/app/Models/Master/MasterAccessMenu.php b/app/Models/Master/MasterAccessMenu.php new file mode 100644 index 0000000..f115c95 --- /dev/null +++ b/app/Models/Master/MasterAccessMenu.php @@ -0,0 +1,27 @@ +id('ProfileId'); + $table->string('npsn')->nullable(); + $table->integer('ms_tingkat_sekolah_id')->default(0); + $table->string('status_sekolah')->nullable(); + $table->text('alamat_sekolah')->nullable(); + $table->string('kontak_person')->nullable(); + $table->string('telp')->nullable(); + $table->timestampsTz(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('profile_sekolahs'); + } +}; diff --git a/database/migrations/2025_02_11_134459_create_master_tingkat_sekolahs_table.php b/database/migrations/2025_02_11_134459_create_master_tingkat_sekolahs_table.php new file mode 100644 index 0000000..2f5fe30 --- /dev/null +++ b/database/migrations/2025_02_11_134459_create_master_tingkat_sekolahs_table.php @@ -0,0 +1,29 @@ +id('MsTingkatSekolahId'); + $table->string('name')->nullable(); + $table->timestampsTz(); + $table->softDeletesTz(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('master_tingkat_sekolahs'); + } +}; diff --git a/database/migrations/2025_02_11_135004_add_forign_key_user.php b/database/migrations/2025_02_11_135004_add_forign_key_user.php new file mode 100644 index 0000000..b038acb --- /dev/null +++ b/database/migrations/2025_02_11_135004_add_forign_key_user.php @@ -0,0 +1,26 @@ +foreign('ms_tingkat_sekolah_id')->references('MsTingkatSekolahId')->on('ms_tingkat_sekolah')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + // + } +}; diff --git a/database/migrations/2025_02_11_135700_add_column_user_id.php b/database/migrations/2025_02_11_135700_add_column_user_id.php new file mode 100644 index 0000000..73fa495 --- /dev/null +++ b/database/migrations/2025_02_11_135700_add_column_user_id.php @@ -0,0 +1,30 @@ +integer('user_id')->default(0); + + $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('profile', function (Blueprint $table) { + // + }); + } +}; diff --git a/database/migrations/2025_02_11_140446_create_master_menus_table.php b/database/migrations/2025_02_11_140446_create_master_menus_table.php new file mode 100644 index 0000000..35ae7c6 --- /dev/null +++ b/database/migrations/2025_02_11_140446_create_master_menus_table.php @@ -0,0 +1,38 @@ +id('MsMenuId'); + $table->foreignId('parent_id')->index()->default(0)->comment('idx menu_id'); + $table->string('title', 150); + $table->string('module', 150)->nullable(); + $table->string('url', 150)->nullable(); + $table->string('menu_type', 50)->index()->nullable()->comment('tb_menu_group alias'); + $table->string('menu_icons', 50)->nullable(); + $table->tinyInteger('ordering')->default(0); + $table->boolean('status')->default(true)->comment('True/False'); + $table->foreignId('created_by')->default(0); + $table->foreignId('updated_by')->default(0)->nullable(); + $table->timestamps(); + $table->comment('Master menu aplikasi'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('master_menus'); + } +}; diff --git a/database/migrations/2025_02_11_140501_create_master_groups_table.php b/database/migrations/2025_02_11_140501_create_master_groups_table.php new file mode 100644 index 0000000..61d9f71 --- /dev/null +++ b/database/migrations/2025_02_11_140501_create_master_groups_table.php @@ -0,0 +1,32 @@ +id('MsGroupId'); + $table->string('menu_group', 50)->unique(); + $table->string('menu_group_alias', 50)->unique(); + $table->boolean('status')->default(true)->comment('True/False'); + $table->foreignId('created_by')->default(0); + $table->foreignId('updated_by')->default(0)->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('master_groups'); + } +}; diff --git a/database/migrations/2025_02_11_140513_create_master_access_menus_table.php b/database/migrations/2025_02_11_140513_create_master_access_menus_table.php new file mode 100644 index 0000000..667f02f --- /dev/null +++ b/database/migrations/2025_02_11_140513_create_master_access_menus_table.php @@ -0,0 +1,42 @@ +id('MsAccessMenuId'); + $table->foreignId('ms_group_id')->comment('FK ms group'); + $table->string('module', 150)->nullable(); + $table->foreignId('ms_menu_id')->comment('FK tb_menu'); + $table->string('menu_group', 20)->nullable()->default('adminsidebar'); + $table->boolean('is_create')->default(false); + $table->boolean('is_read')->default(false); + $table->boolean('is_update')->default(false); + $table->boolean('is_delete')->default(false); + $table->boolean('is_verify')->default(false); + $table->boolean('is_approve')->default(false); + $table->boolean('is_download')->default(false); + $table->json('access')->nullable(); + $table->timestamps(); + $table->foreign('ms_menu_id')->references('MsMenuId')->on('ms_menu')->cascadeOnDelete(); + $table->foreign('ms_group_id')->references('MsGroupId')->on('ms_group')->cascadeOnDelete(); + $table->comment('Master hak akses role/group user'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('master_access_menus'); + } +}; diff --git a/database/migrations/2025_02_11_140609_create_master_group_users_table.php b/database/migrations/2025_02_11_140609_create_master_group_users_table.php new file mode 100644 index 0000000..aa8708b --- /dev/null +++ b/database/migrations/2025_02_11_140609_create_master_group_users_table.php @@ -0,0 +1,31 @@ +id('MsGroupUserId'); + $table->foreignId('ms_group_id')->comment('FK Group'); + $table->foreignId('user_id')->comment('FK User'); + + $table->foreign('user_id')->references('id')->on('users')->cascadeOnDelete(); + $table->foreign('ms_group_id')->references('MsGroupId')->on('ms_group')->cascadeOnDelete(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('master_group_users'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 18a6f18..70d2cf2 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -4,6 +4,8 @@ namespace Database\Seeders; // use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; +use App\Models\User; +use App\Models\Master\MasterTingkatSekolah; use Hash; class DatabaseSeeder extends Seeder @@ -13,16 +15,35 @@ class DatabaseSeeder extends Seeder */ public function run(): void { - \DB::table('users')->insert([ + User::updateOrCreate([ + 'name' => 'Administrator', + 'email' => 'adminadiwiyata@dlh.go.id', + ],[ 'name' => 'Administrator', 'email' => 'adminadiwiyata@dlh.go.id', 'password' => Hash::make('##SekolahAdiwiyata123'), ]); - // \App\Models\User::factory(10)->create(); - // \App\Models\User::factory()->create([ - // 'name' => 'Test User', - // 'email' => 'test@example.com', - // ]); + $data = [ + ['name' => 'SD'], + ['name' => 'SMP'], + ['name' => 'SMA'], + ['name' => 'SMK'], + ['name' => 'MI'], + ['name' => 'MTs'], + ['name' => 'MA'], + ['name' => 'SD LB'], + ['name' => 'SMP LB'], + ['name' => 'SMA LM'], + ['name' => 'SLB Khusus'], + ]; + + foreach($data as $val){ + MasterTingkatSekolah::updateOrCreate([ + 'name' => $val['name'], + ],[ + 'name' => $val['name'], + ]); + } } } diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index d19607b..4913434 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -49,9 +49,9 @@
- + @error('npsn') - {{$message}} + {{$message}} @enderror Pastikan NPSN Telah Sesuai
@@ -60,9 +60,9 @@
- + @error('name') - {{$message}} + {{$message}} @enderror
@@ -84,7 +84,7 @@ @error('tingkat_sekolah') - {{$message}} + {{$message}} @enderror
@@ -97,36 +97,36 @@ @error('status_sekolah') - {{$message}} + {{$message}} @enderror
- + @error('alamat_sekolah') - {{$message}} + {{$message}} @enderror
- + @error('kontak_person') - {{$message}} + {{$message}} @enderror
- + @error('telp') - {{$message}} + {{$message}} @enderror
@error('email') - {{$message}} + {{$message}} @enderror * Pastikan email benar dan aktif, akses aplikasi akan dikirim ke email yang didaftarkan.
@@ -139,16 +139,17 @@ @error('password') - {{$message}} + {{$message}} @enderror
Kata Sandi harus mengandung Minimal 8 karakter, maksimal 15 karakter,
setidaknya 1 huruf kecil dan huruf besar, angka dan simbol
+
Dengan ini menyatakan bahwa isian registrasi diatas sudah benar. @error('check') - {{$message}} + {{$message}} @enderror