Account Management

May 30, 2026 · View on GitHub

The profile scaffold is a complete, Jetstream-style account page — not just a name/email form. It's tabbed: Profile, Change password, Sessions, and a Danger zone.

php artisan adminlte:scaffold profile
php artisan migrate          # adds the nullable `avatar` column to users
php artisan storage:link     # so uploaded avatars are publicly served

What it publishes

ArtifactDestination
add_profile_fields_to_users_table migration (avatar column)database/migrations/
UpdateProfileRequest, UpdatePasswordRequestapp/Http/Requests/AdminLte/
ProfileControllerapp/Http/Controllers/AdminLte/
Tabbed account viewresources/views/adminlte/profile/
ProfileTesttests/Feature/AdminLte/
Routesprofile.* in the managed /admin group

Routes:

VerbURINamePurpose
GET/admin/profileadminlte.profile.showAccount page
PUT/admin/profileadminlte.profile.updateUpdate name / email
PUT/admin/profile/passwordadminlte.profile.password.updateChange password
POST/admin/profile/avataradminlte.profile.avatar.updateUpload avatar
PUT/admin/profile/other-sessionsadminlte.profile.sessions.logout-othersLog out other devices
DELETE/admin/profileadminlte.profile.destroyDelete account

Features

  • Profile — name + email via UpdateProfileRequest. When the email changes and the User implements MustVerifyEmail, verification is re-triggered.
  • Avatar — image upload (max 2 MB) to the public disk under avatars/. The path is set directly on the model, so you don't need to add avatar to the User $fillable. Requires php artisan storage:link.
  • Change password — current-password check + confirmed new password (UpdatePasswordRequest uses the current_password rule and Password::defaults()).
  • Sessions — lists the user's active sessions and offers "log out other devices" (Auth::logoutOtherDevices). Requires the database session driver (SESSION_DRIVER=database + a sessions table); with any other driver the tab shows a notice instead.
  • Danger zone — password-confirmed account deletion (also removes the avatar file and logs the user out).

Notes

  • The account routes live in the auth-protected /admin group.
  • See authentication.md for the related auth-hardening features (login throttling, email verification, password confirmation).