From fac66c41c34eee484fa1396ea21142fefea4ed48 Mon Sep 17 00:00:00 2001 From: Jaton David Date: Sat, 23 Nov 2024 17:36:41 +0100 Subject: [PATCH] Profile picture --- app/Http/Controllers/ProfileController.php | 38 ++++++++++--- app/Http/Requests/ProfileUpdateRequest.php | 2 + app/Models/User.php | 1 + ...23_144334_add_profile_picture_to_users.php | 31 ++++++++++ public/source/assets/avatar/avatar.png | Bin 0 -> 19252 bytes resources/css/app.css | 7 +++ resources/js/app.js | 4 +- .../update-profile-information-form.blade.php | 53 +++++++++--------- 8 files changed, 99 insertions(+), 37 deletions(-) create mode 100644 database/migrations/2024_11_23_144334_add_profile_picture_to_users.php create mode 100644 public/source/assets/avatar/avatar.png diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index a48eb8d..8bae238 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -9,6 +9,8 @@ use Illuminate\Support\Facades\Redirect; use Illuminate\View\View; +use Illuminate\Support\Facades\Storage; + class ProfileController extends Controller { /** @@ -24,18 +26,36 @@ public function edit(Request $request): View /** * Update the user's profile information. */ - public function update(ProfileUpdateRequest $request): RedirectResponse - { - $request->user()->fill($request->validated()); - if ($request->user()->isDirty('email')) { - $request->user()->email_verified_at = null; - } + public function update(ProfileUpdateRequest $request): RedirectResponse + { + $validated = $request->validated(); + + if ($request->hasFile('image')) { + $user = $request->user(); - $request->user()->save(); + if ($user->image) { + Storage::disk('public')->delete($user->image); + } + + $path = $request->file('image')->store('avatar', 'public'); + $validated['image'] = $path; + } else { + unset($validated['image']); + } + + $request->user()->fill($validated); + + if ($request->user()->isDirty('email')) { + $request->user()->email_verified_at = null; + } + + $request->user()->save(); + + return Redirect::route('profile.edit')->with('status', 'profile-updated'); + } + - return Redirect::route('profile.edit')->with('status', 'profile-updated'); - } /** * Delete the user's account. diff --git a/app/Http/Requests/ProfileUpdateRequest.php b/app/Http/Requests/ProfileUpdateRequest.php index b2ef6bb..469f892 100644 --- a/app/Http/Requests/ProfileUpdateRequest.php +++ b/app/Http/Requests/ProfileUpdateRequest.php @@ -23,8 +23,10 @@ public function rules(): array 'lowercase', 'email', 'max:255', + Rule::unique(User::class)->ignore($this->user()->id), ], + 'image' => ['nullable', 'image', 'mimes:jpeg,png,jpg', 'max:2048'], ]; } } diff --git a/app/Models/User.php b/app/Models/User.php index 445fd52..27df363 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -19,6 +19,7 @@ class User extends Authenticatable protected $fillable = [ 'name', 'email', + 'image', 'password', ]; diff --git a/database/migrations/2024_11_23_144334_add_profile_picture_to_users.php b/database/migrations/2024_11_23_144334_add_profile_picture_to_users.php new file mode 100644 index 0000000..d1bed01 --- /dev/null +++ b/database/migrations/2024_11_23_144334_add_profile_picture_to_users.php @@ -0,0 +1,31 @@ +string('image')->nullable(); + + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('users', function (Blueprint $table) { + // + $table->dropColumn('image'); + }); + } +}; diff --git a/public/source/assets/avatar/avatar.png b/public/source/assets/avatar/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..63c8cb642fe082457a2f0ac093c4b4f074ae096e GIT binary patch literal 19252 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 literal 0 HcmV?d00001 diff --git a/resources/css/app.css b/resources/css/app.css index c2c10a4..8dcf861 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -40,3 +40,10 @@ .messagesBackground { background-image: url('../../public/source/assets/images/messageBackground.png'); } + +.avatar { + vertical-align: middle; + width: 50px; + height: 50px; + border-radius: 50%; + } \ No newline at end of file diff --git a/resources/js/app.js b/resources/js/app.js index a8093be..3f6ccfb 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -1,6 +1,6 @@ -import './bootstrap'; +import "./bootstrap"; -import Alpine from 'alpinejs'; +import Alpine from "alpinejs"; window.Alpine = Alpine; diff --git a/resources/views/profile/partials/update-profile-information-form.blade.php b/resources/views/profile/partials/update-profile-information-form.blade.php index 7273fff..5e54369 100644 --- a/resources/views/profile/partials/update-profile-information-form.blade.php +++ b/resources/views/profile/partials/update-profile-information-form.blade.php @@ -13,7 +13,7 @@ @csrf -
+ @csrf @method('patch') @@ -27,38 +27,39 @@ + - @if ($user instanceof \Illuminate\Contracts\Auth\MustVerifyEmail && ! $user->hasVerifiedEmail()) -
-

- {{ __('Your email address is unverified.') }} - - -

- - @if (session('status') === 'verification-link-sent') -

- {{ __('A new verification link has been sent to your email address.') }} -

- @endif -
- @endif +
+ +
{{ __('Save') }} @if (session('status') === 'profile-updated') -

{{ __('Saved.') }}

+

{{ __('Saved.') }}

@endif
- + + \ No newline at end of file