add timezone edit to profile (#63)

This commit is contained in:
Saeed Vaziry 2023-09-30 16:15:09 +02:00 committed by GitHub
parent 38e23a1ceb
commit 8282d39722
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 0 deletions

View File

@ -19,6 +19,10 @@ public function update(User $user, array $input): void
Validator::make($input, [ Validator::make($input, [
'name' => ['required', 'string', 'max:255'], 'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'email', 'max:255', Rule::unique('users')->ignore($user->id)], 'email' => ['required', 'email', 'max:255', Rule::unique('users')->ignore($user->id)],
'timezone' => [
'required',
Rule::in(timezone_identifiers_list()),
],
])->validateWithBag('updateProfileInformation'); ])->validateWithBag('updateProfileInformation');
if ($input['email'] !== $user->email) { if ($input['email'] !== $user->email) {
@ -27,6 +31,7 @@ public function update(User $user, array $input): void
$user->forceFill([ $user->forceFill([
'name' => $input['name'], 'name' => $input['name'],
'email' => $input['email'], 'email' => $input['email'],
'timezone' => $input['timezone'],
])->save(); ])->save();
} }
} }
@ -39,6 +44,7 @@ protected function updateVerifiedUser(User $user, array $input): void
$user->forceFill([ $user->forceFill([
'name' => $input['name'], 'name' => $input['name'],
'email' => $input['email'], 'email' => $input['email'],
'timezone' => $input['timezone'],
])->save(); ])->save();
} }
} }

View File

@ -15,10 +15,13 @@ class UpdateProfileInformation extends Component
public string $email; public string $email;
public string $timezone;
public function mount(): void public function mount(): void
{ {
$this->name = auth()->user()->name; $this->name = auth()->user()->name;
$this->email = auth()->user()->email; $this->email = auth()->user()->email;
$this->timezone = auth()->user()->timezone;
} }
/** /**

View File

@ -45,6 +45,18 @@
</div> </div>
@endif @endif
</div> </div>
<div>
<x-input-label for="timezone" :value="__('Timezone')" />
<x-select-input wire:model.defer="timezone" id="timezone" name="timezone" class="mt-1 block w-full" required>
@foreach(timezone_identifiers_list() as $timezone)
<option value="{{ $timezone }}">{{ $timezone }}</option>
@endforeach
</x-select-input>
@error('timezone')
<x-input-error class="mt-2" :messages="$message" />
@enderror
</div>
</form> </form>
<x-slot name="actions"> <x-slot name="actions">

View File

@ -29,6 +29,7 @@ public function test_profile_information_can_be_updated(): void
Livewire::test(UpdateProfileInformation::class) Livewire::test(UpdateProfileInformation::class)
->set('name', 'Test') ->set('name', 'Test')
->set('email', 'test@example.com') ->set('email', 'test@example.com')
->set('timezone', 'Europe/Berlin')
->call('submit') ->call('submit')
->assertSuccessful(); ->assertSuccessful();
@ -36,5 +37,6 @@ public function test_profile_information_can_be_updated(): void
$this->assertSame('Test', $this->user->name); $this->assertSame('Test', $this->user->name);
$this->assertSame('test@example.com', $this->user->email); $this->assertSame('test@example.com', $this->user->email);
$this->assertSame('Europe/Berlin', $this->user->timezone);
} }
} }