From 5a4fada9a924e2cff57e142e32485b7d39cf6645 Mon Sep 17 00:00:00 2001 From: Sari Date: Mon, 3 Aug 2026 09:39:20 +0700 Subject: [PATCH] feat: tombol Kirim Akun via WhatsApp di manajemen user (generate password baru, link+username+password via wa.me, konfirmasi, disable tanpa HP) + test --- app/Http/Controllers/Admin/UserController.php | 42 +++++++++++++++++++ resources/views/users/index.blade.php | 35 ++++++++++++++++ routes/web.php | 1 + tests/Feature/UserManagementTest.php | 33 +++++++++++++++ 4 files changed, 111 insertions(+) diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 52b9ce9..9fb1acc 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -3,10 +3,12 @@ namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; +use App\Models\Setting; use App\Models\User; use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Str; use Illuminate\View\View; class UserController extends Controller @@ -122,4 +124,44 @@ class UserController extends Controller return redirect()->route('users.index') ->with('success', 'Password untuk ' . $user->name . ' berhasil direset.'); } + + /** + * Kirim akun (link + username + password baru) ke nomor HP user via WhatsApp. + * Password lama tidak bisa dikirim (tersimpan hash) — jadi dibuatkan password baru. + */ + public function sendWa(User $user): RedirectResponse + { + if ($user->id === auth()->id()) { + return back()->with('error', 'Tidak perlu mengirim akun ke diri sendiri.'); + } + + if (blank($user->phone)) { + return back()->with('error', 'Nomor HP belum diisi untuk ' . $user->name . ' — isi dulu di form edit user.'); + } + + // Generate password baru yang mudah dibaca (8 karakter, tanpa karakter ambigu) + $password = Str::upper(Str::random(4)).rand(10, 99).Str::lower(Str::random(2)); + + $user->update([ + 'password' => Hash::make($password), + ]); + + $appName = Setting::getValue('app_name', 'Aplikasi'); + $appUrl = Setting::getValue('app_url', config('app.url', '')); + + $message = implode("\n", [ + '📲 *Akun Aplikasi '.$appName.'*', + '', + 'Yth. '.$user->name.',', + 'Berikut akun Anda untuk masuk ke aplikasi:', + '', + '🔗 Link: '.$appUrl, + '👤 Username: '.$user->username, + '🔑 Password: '.$password, + '', + 'Mohon segera login dan ganti password Anda. Terima kasih.', + ]); + + return redirect()->away('https://wa.me/'.$user->phone.'?text='.rawurlencode($message)); + } } diff --git a/resources/views/users/index.blade.php b/resources/views/users/index.blade.php index 41aeea8..74cfc50 100644 --- a/resources/views/users/index.blade.php +++ b/resources/views/users/index.blade.php @@ -131,6 +131,18 @@ @if($user->id !== auth()->id()) +
+ @csrf + +
+ @endif
@csrf @method('DELETE') @@ -341,6 +353,29 @@ @push('scripts')