|
|
@ -1,7 +1,7 @@ |
|
|
|
<script lang="ts"> |
|
|
|
import type {CognitoUser} from "amazon-cognito-identity-js"; |
|
|
|
|
|
|
|
import { signIn } from "../clients/amplify"; |
|
|
|
import { forgotPassword, forgotPasswordSubmit, signIn } from "../clients/amplify"; |
|
|
|
import authStore from "../stores/auth"; |
|
|
|
import Modal from "../components/Modal.svelte"; |
|
|
|
|
|
|
@ -10,10 +10,21 @@ |
|
|
|
let password = ""; |
|
|
|
let newPassword = ""; |
|
|
|
let newPasswordRepeat = ""; |
|
|
|
let resetCode = ""; |
|
|
|
let settingNewPassword = false; |
|
|
|
let resettingPassword = false; |
|
|
|
let error = null; |
|
|
|
let done = false; |
|
|
|
|
|
|
|
function startPasswordReset() { |
|
|
|
forgotPassword(username).then(() => { |
|
|
|
settingNewPassword = true; |
|
|
|
resettingPassword = true; |
|
|
|
}).catch(err => { |
|
|
|
error = "Reset request failed: " + err.message; |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
function login() { |
|
|
|
error = null; |
|
|
|
|
|
|
@ -23,6 +34,15 @@ |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
if (resettingPassword) { |
|
|
|
forgotPasswordSubmit(username, resetCode, newPassword).then(() => { |
|
|
|
authStore.check(); |
|
|
|
settingNewPassword = false; |
|
|
|
resettingPassword = false; |
|
|
|
}).catch(err => { |
|
|
|
error = "Reset submit failed: " + err.message; |
|
|
|
}); |
|
|
|
} else { |
|
|
|
user.completeNewPasswordChallenge(newPassword, null, { |
|
|
|
onSuccess: () => { |
|
|
|
done = true; |
|
|
@ -32,6 +52,7 @@ |
|
|
|
error = err |
|
|
|
}, |
|
|
|
}) |
|
|
|
} |
|
|
|
} else { |
|
|
|
signIn(username, password).then(newUser => { |
|
|
|
if (!newUser) { |
|
|
@ -49,7 +70,7 @@ |
|
|
|
|
|
|
|
user = newUser; |
|
|
|
}).catch(err => { |
|
|
|
error = err |
|
|
|
error = err.message |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
@ -59,16 +80,24 @@ |
|
|
|
<form on:submit|preventDefault={login}> |
|
|
|
<label for="username">Username</label> |
|
|
|
<input name="username" type="text" bind:value={username} /> |
|
|
|
{#if !resettingPassword} |
|
|
|
<label for="password">Password</label> |
|
|
|
<input name="password" type="password" bind:value={password} /> |
|
|
|
{:else} |
|
|
|
<label for="resetCode">Code From Email</label> |
|
|
|
<input name="resetCode" type="text" bind:value={resetCode} /> |
|
|
|
{/if} |
|
|
|
{#if settingNewPassword} |
|
|
|
<label for="newPassword">New Password</label> |
|
|
|
<input name="newPassword" type="password" bind:value={newPassword} /> |
|
|
|
<label for="newPasswordRepeat">New Password</label> |
|
|
|
<label for="newPasswordRepeat">Repeat Password</label> |
|
|
|
<input name="newPasswordRepeat" type="password" bind:value={newPasswordRepeat} /> |
|
|
|
{/if} |
|
|
|
|
|
|
|
<hr /> |
|
|
|
<button type="submit">Login</button> |
|
|
|
{#if !settingNewPassword} |
|
|
|
<button disabled={username === ""} on:click|preventDefault={startPasswordReset}>Forgot Password</button> |
|
|
|
{/if} |
|
|
|
</form> |
|
|
|
</Modal> |