@@ -1 +1 @@ | |||||
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512"><title>ionicons-v5-i</title><path d="M255.66,112c-77.94,0-157.89,45.11-220.83,135.33a16,16,0,0,0-.27,17.77C82.92,340.8,161.8,400,255.66,400,348.5,400,429,340.62,477.45,264.75a16.14,16.14,0,0,0,0-17.47C428.89,172.28,347.8,112,255.66,112Z" style="fill:none;stroke:#000;stroke-linecap:round;stroke-linejoin:round;stroke-width:32px"/><circle cx="256" cy="256" r="80" style="fill:none;stroke:#000;stroke-miterlimit:10;stroke-width:32px"/></svg> | |||||
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 512 512"><title>ionicons-v5-i</title><path d="M255.66,112c-77.94,0-157.89,45.11-220.83,135.33a16,16,0,0,0-.27,17.77C82.92,340.8,161.8,400,255.66,400,348.5,400,429,340.62,477.45,264.75a16.14,16.14,0,0,0,0-17.47C428.89,172.28,347.8,112,255.66,112Z" style="fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:32px"/><circle cx="256" cy="256" r="80" style="stroke-miterlimit:10;stroke-width:32px"/></svg> |
@@ -50,6 +50,7 @@ | |||||
svg { | svg { | ||||
fill: var(--light-grey); | fill: var(--light-grey); | ||||
stroke: var(--light-grey); | |||||
width: 20px; | width: 20px; | ||||
height: 20px; | height: 20px; | ||||
} | } | ||||
@@ -7,7 +7,7 @@ import { NavLink } from "react-router-dom"; | |||||
import axios from 'axios'; | import axios from 'axios'; | ||||
import { SERVER_URL } from "../../App"; | import { SERVER_URL } from "../../App"; | ||||
const authenticateCredentials = async (username: string, password: string) => { | |||||
export const authenticateCredentials = async (username: string, password: string) => { | |||||
return await axios.post(SERVER_URL + '/auth/api-auth/', { | return await axios.post(SERVER_URL + '/auth/api-auth/', { | ||||
email: username, | email: username, | ||||
password: password | password: password | ||||
@@ -6,6 +6,7 @@ import { ReactComponent as EyeIcon } from '../../assets/icons/eye-outline.svg'; | |||||
import { NavLink } from "react-router-dom"; | import { NavLink } from "react-router-dom"; | ||||
import axios from 'axios'; | import axios from 'axios'; | ||||
import { SERVER_URL } from "../../App"; | import { SERVER_URL } from "../../App"; | ||||
import { authenticateCredentials } from "./Login"; | |||||
const registerUser = async (name: string, username: string, password: string) => { | const registerUser = async (name: string, username: string, password: string) => { | ||||
@@ -40,6 +41,7 @@ export const Signup: React.FC = () => { | |||||
function register() { | function register() { | ||||
registerUser(fullName, userName, password).then(() => { | registerUser(fullName, userName, password).then(() => { | ||||
window.alert("Registered your email, please wait while we redirect you to verify..."); | |||||
setTimeout(() => { | setTimeout(() => { | ||||
requestVerification(userName).then(() => { | requestVerification(userName).then(() => { | ||||
@@ -56,8 +58,15 @@ export const Signup: React.FC = () => { | |||||
function verify() { | function verify() { | ||||
verifyUser(userName, otp).then(() => { | verifyUser(userName, otp).then(() => { | ||||
window.alert("Verified user!"); | |||||
window.location.assign("/login"); | |||||
window.alert("Verified user!, Logging you in...."); | |||||
authenticateCredentials(userName, password).then((response: any) => { | |||||
localStorage.anamnesisToken = response.data.token; | |||||
window.location.assign('/home'); | |||||
}, () => { | |||||
window.alert("Please check your credentials"); | |||||
}); | |||||
}, () => window.alert("Failed Verification, please try again")) | }, () => window.alert("Failed Verification, please try again")) | ||||
} | } | ||||
@@ -87,10 +96,10 @@ export const Signup: React.FC = () => { | |||||
</div> | </div> | ||||
<button className={styles.submitButton} onClick={() => register()}> | <button className={styles.submitButton} onClick={() => register()}> | ||||
Next Step | |||||
Next Step (Verification) | |||||
</button> | </button> | ||||
<NavLink className={styles.otherLinks} to="/Login"> Login? </NavLink> | |||||
<NavLink className={styles.otherLinks} to="/login"> Login? </NavLink> | |||||
</section> } | </section> } | ||||
@@ -0,0 +1,14 @@ | |||||
.toast { | |||||
position: fixed; | |||||
bottom: 5vh; | |||||
left: 5vw; | |||||
width: 90vw; | |||||
border-radius: 10px; | |||||
background-color: var(--red); | |||||
color: white; | |||||
padding: 10px 15px; | |||||
font-size: 16px; | |||||
font-weight: 500; | |||||
letter-spacing: 0.5px; | |||||
opacity: 0.8; | |||||
} |
@@ -0,0 +1,22 @@ | |||||
import React from "react"; | |||||
import styles from './Toast.module.scss'; | |||||
type OwnProps = { | |||||
type: 'success' | 'warning' | 'error', | |||||
message: string, | |||||
} | |||||
export const Toast: React.FC<OwnProps> = (props) => { | |||||
let toastStyle = ''; | |||||
switch(props.type) { | |||||
case 'success' : toastStyle = styles.success; break; | |||||
case 'warning': toastStyle = styles.warning; break; | |||||
case 'error': toastStyle = styles.error; break; | |||||
} | |||||
return <section className={styles.toast + ' ' + toastStyle}> | |||||
{ props.message } | |||||
</section> | |||||
} |