123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <script lang="ts">
- import toast from 'svelte-french-toast';
- import { updateUserPassword } from '$lib/apis/auths';
- let show = false;
- let currentPassword = '';
- let newPassword = '';
- let newPasswordConfirm = '';
- const updatePasswordHandler = async () => {
- if (newPassword === newPasswordConfirm) {
- const res = await updateUserPassword(localStorage.token, currentPassword, newPassword).catch(
- (error) => {
- toast.error(error);
- return null;
- }
- );
- if (res) {
- toast.success('Successfully updated.');
- }
- currentPassword = '';
- newPassword = '';
- newPasswordConfirm = '';
- } else {
- toast.error(
- `The passwords you entered don't quite match. Please double-check and try again.`
- );
- newPassword = '';
- newPasswordConfirm = '';
- }
- };
- </script>
- <form
- class="flex flex-col text-sm"
- on:submit|preventDefault={() => {
- updatePasswordHandler();
- }}
- >
- <div class="flex justify-between mb-2.5 items-center text-sm">
- <div class=" font-medium">Change Password</div>
- <button
- class=" text-xs font-medium text-gray-500"
- type="button"
- on:click={() => {
- show = !show;
- }}>{show ? 'Hide' : 'Show'}</button
- >
- </div>
- {#if show}
- <div class=" space-y-1.5">
- <div class="flex flex-col w-full">
- <div class=" mb-1 text-xs text-gray-500">Current Password</div>
- <div class="flex-1">
- <input
- class="w-full rounded py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-800 outline-none"
- type="password"
- bind:value={currentPassword}
- autocomplete="current-password"
- required
- />
- </div>
- </div>
- <div class="flex flex-col w-full">
- <div class=" mb-1 text-xs text-gray-500">New Password</div>
- <div class="flex-1">
- <input
- class="w-full rounded py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-800 outline-none"
- type="password"
- bind:value={newPassword}
- autocomplete="new-password"
- required
- />
- </div>
- </div>
- <div class="flex flex-col w-full">
- <div class=" mb-1 text-xs text-gray-500">Confirm Password</div>
- <div class="flex-1">
- <input
- class="w-full rounded py-2 px-4 text-sm dark:text-gray-300 dark:bg-gray-800 outline-none"
- type="password"
- bind:value={newPasswordConfirm}
- autocomplete="off"
- required
- />
- </div>
- </div>
- </div>
- <div class="mt-3 flex justify-end">
- <button
- class=" px-4 py-2 text-xs bg-gray-800 hover:bg-gray-900 dark:bg-gray-700 dark:hover:bg-gray-800 text-gray-100 transition rounded-md font-medium"
- >
- Update password
- </button>
- </div>
- {/if}
- </form>
|