Notify super admins on new user registration (bell + email)

When a new user registers, all super_admin users receive:
- A database notification shown in the bell (type: new_user), with the
  new user's avatar and a link to their channel
- An email congratulating them with the new member's name, email,
  join date, gender, and nationality, plus a View Profile CTA

Notification rendering in app.blade.php refactored into notifHref() and
notifThumb() helpers so new_user notifications link to /channel/{slug}
and show a circular avatar instead of a video thumbnail. Also fixed the
legacy /storage/thumbnails/ path to /media/thumbnails/ for video notifications.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
This commit is contained in:
ghassanandClaude Sonnet 4.6 committed 2026-05-16 23:34:28 +03:00
1 parent 4887d0c517
commit 3fe167e33f
4 files changed
+116 -6

No files matched your search

@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use App\Notifications\NewUserRegistered;
use App\Rules\NotDisposableEmail;
use Illuminate\Auth\Events\Registered;
use Illuminate\Http\Request;
@@ -45,6 +46,11 @@ class RegisteredUserController extends Controller
event(new Registered($user));
// Notify all super admins of the new registration
User::where('role', 'super_admin')->each(function (User $admin) use ($user) {
$admin->notify(new NewUserRegistered($user));
});
auth()->login($user);
return redirect()->route('verification.notice');
+39
View File
@@ -0,0 +1,39 @@
<?php
namespace App\Notifications;
use App\Models\User;
use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;
class NewUserRegistered extends Notification
{
public function __construct(public User $newUser) {}
public function via(object $notifiable): array
{
return ['database', 'mail'];
}
public function toArray(object $notifiable): array
{
return [
'type' => 'new_user',
'user_id' => $this->newUser->id,
'user_name' => $this->newUser->name,
'user_email' => $this->newUser->email,
'user_avatar' => $this->newUser->avatar_url,
'user_channel' => $this->newUser->channel,
];
}
public function toMail(object $notifiable): MailMessage
{
return (new MailMessage)
->subject('New member joined TAKEONE 🎉')
->view('emails.new-user-registered', [
'newUser' => $this->newUser,
'admin' => $notifiable,
]);
}
}