diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 8b79ea1..94597f0 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -18,12 +18,16 @@ class AuthController extends Controller $user = Socialite::driver('authentik')->user(); $authUser = User::updateOrCreate( - [ 'email' => $user->getEmail() ], - [ 'name' => $user->getName() ] + [ 'email' => $user->getEmail() ] ); if ($authUser) { + if ($authUser->name == '') + { + $authUser->name = $user->getName(); + $authUser->save(); + } Auth::login($authUser); return redirect('/'); } diff --git a/app/Livewire/Pages/Profile.php b/app/Livewire/Pages/Profile.php index cb3d29a..29aa864 100644 --- a/app/Livewire/Pages/Profile.php +++ b/app/Livewire/Pages/Profile.php @@ -4,6 +4,7 @@ namespace App\Livewire\Pages; use App\Models\User; use Illuminate\Support\Facades\Auth; +use Illuminate\Validation\Rule; use Livewire\Attributes\Validate; use Livewire\Component; use Livewire\WithFileUploads; @@ -14,15 +15,39 @@ class Profile extends Component public User $user; - #[Validate('image|max:10240')] public $avatar = null; + public string $name = ''; + + public function mount(User $user) + { + $this->user = $user; + $this->name = $user->name; + } public function render() { return view('livewire.pages.profile')->title($this->user->name); } - public function updated() + public function rules() + { + return [ + 'avatar' => [ + 'nullable', + 'image', + 'max:10240', + ], + 'name' => [ + 'required', + 'string', + 'min:2', + 'max:80', + Rule::unique('users', 'name')->ignore($this->user), + ], + ]; + } + + public function updated($name, $value) { if (Auth::id() != $this->user->id) { @@ -31,10 +56,16 @@ class Profile extends Component $this->validate(); - $this->user->avatarExt = $this->avatar->getClientOriginalExtension(); - $this->user->save(); + $this->user->update([$name => $value]); + + if (isset($this->avatar)) + { + $this->user->avatarExt = $this->avatar->getClientOriginalExtension(); + $this->user->save(); + + $this->avatar->storeAs('avatars', $this->user->id); + return $this->redirect("/profiles/{$this->user->id}"); + } - $this->avatar->storeAs('avatars', $this->user->id); - return $this->redirect("/profiles/{$this->user->id}"); } } diff --git a/package-lock.json b/package-lock.json index 6b923e4..0cd0e05 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "photos", + "name": "nyaabooru", "lockfileVersion": 3, "requires": true, "packages": { diff --git a/resources/views/livewire/app/pfp.blade.php b/resources/views/livewire/app/pfp.blade.php index 6767b75..49bbe11 100644 --- a/resources/views/livewire/app/pfp.blade.php +++ b/resources/views/livewire/app/pfp.blade.php @@ -5,4 +5,6 @@ label="avatar for {{ $user->name }}" shape="{{ $shape }}" style="--size: {{ $size }}" -> +> + + diff --git a/resources/views/livewire/app/user-card.blade.php b/resources/views/livewire/app/user-card.blade.php index f2cb83e..6e57aa4 100644 --- a/resources/views/livewire/app/user-card.blade.php +++ b/resources/views/livewire/app/user-card.blade.php @@ -1,13 +1,11 @@ -
- - -
+ diff --git a/resources/views/livewire/pages/profile.blade.php b/resources/views/livewire/pages/profile.blade.php index 7b1e67e..b9075cf 100644 --- a/resources/views/livewire/pages/profile.blade.php +++ b/resources/views/livewire/pages/profile.blade.php @@ -23,13 +23,26 @@

User settings

-