@tangtang In my profile update form view I added this above name and email fields to show already uploaded picture :
@if (Auth::user()->picture)
<img src="{{ asset(Auth::user()->picture) }}" alt="" class="w-16 h-16 rounded-full object-cover">
@else
<!-- If profile photo not available -->
<img src="{{ URL('images/user-default-avatar.png') }}" alt=""
class="w-16 h-16 object-cover mx-2">
@endif
This is what I do for RegisterUserController :
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\User;
use App\Providers\RouteServiceProvider;
use Illuminate\Auth\Events\Registered;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rules;
use Illuminate\View\View;
use App\Helpers\Helper;
class RegisteredUserController extends Controller
{
/**
* Display the registration view.
*/
public function create(): View
{
return view('auth.register');
}
/**
* Handle an incoming registration request.
*
* @throws \Illuminate\Validation\ValidationException
*/
public function store(Request $request): RedirectResponse
{
$request->validate([
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:' . User::class],
'password' => ['required', 'confirmed', Rules\Password::defaults()],
'picture' => ['file', 'mimes:jpg,png,gif', 'max:3072'],
]);
$path = null;
if ($request->hasFile('picture')) {
$path = $request->file('picture')->storePublicly('pictures');
}
$user = User::create([
'name' => $request->name,
'email' => $request->email,
'password' => Hash::make($request->password),
'picture' => $path,
]);
event(new Registered($user));
Auth::login($user);
return redirect(RouteServiceProvider::HOME);
}
}
For profile controller I haven't changed anything yet :
<section>
<header>
<h2 class="text-lg font-medium text-gray-900">
{{ __('Informations de profil') }}
{{-- Profile Information --}}
</h2>
<p class="mt-1 text-sm text-gray-600">
{{ __("Mettez à jour les informations de profil et l'adresse e-mail de votre compte.") }}
{{-- Update your account's profile information and email address. --}}
</p>
</header>
<form id="send-verification" method="post" action="{{ route('verification.send') }}">
@csrf
</form>
<form method="post" action="{{ route('profile.update') }}" class="mt-6 space-y-6">
@csrf
@method('patch')
<div>
<x-input-label for="name" :value="__('Prénom et nom')" />
<x-text-input id="name" name="name" type="text" class="mt-1 block w-full" :value="old('name', $user->name)"
required autofocus autocomplete="name" />
<x-input-error class="mt-2" :messages="$errors->get('name')" />
</div>
<div>
<x-input-label for="email" :value="__('Email')" />
<x-text-input id="email" name="email" type="email" class="mt-1 block w-full"
:value="old('email', $user->email)" required autocomplete="username" />
<x-input-error class="mt-2" :messages="$errors->get('email')" />
@if ($user instanceof \Illuminate\Contracts\Auth\MustVerifyEmail && ! $user->hasVerifiedEmail())
<div>
<p class="text-sm mt-2 text-gray-800">
{{ __('Votre adresse e-mail n\'est pas vérifiée.') }}
{{-- Your email address is unverified. --}}
<button form="send-verification"
class="underline text-sm text-gray-600 hover:text-gray-900 rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500">
{{ __('Cliquez ici pour renvoyer l\'e-mail de vérification.') }}
{{-- Click here to re-send the verification email. --}}
</button>
</p>
@if (session('status') === 'verification-link-sent')
<p class="mt-2 font-medium text-sm text-green-600">
{{ __('Un nouveau lien de vérification a été envoyé à votre adresse e-mail.') }}
{{-- A new verification link has been sent to your email address. --}}
</p>
@endif
</div>
@endif
</div>
<div class="flex items-center gap-4">
<x-primary-button>{{ __('Enregistrer') }}</x-primary-button>
{{-- Save --}}
@if (session('status') === 'profile-updated')
<p x-data="{ show: true }" x-show="show" x-transition x-init="setTimeout(() => show = false, 2000)"
class="text-sm text-gray-600">{{ __('Enregistré.') }}</p>
{{-- Saved. --}}
@endif
</div>
</form>
</section>