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 }}"
->
+>
+
- @else
-