aboutsummaryrefslogtreecommitdiff
path: root/src/pages/AuthPage
diff options
context:
space:
mode:
Diffstat (limited to 'src/pages/AuthPage')
-rw-r--r--src/pages/AuthPage/AuthPage.tsx8
-rw-r--r--src/pages/AuthPage/SignInForm.tsx38
2 files changed, 24 insertions, 22 deletions
diff --git a/src/pages/AuthPage/AuthPage.tsx b/src/pages/AuthPage/AuthPage.tsx
index 82d468d..72733f0 100644
--- a/src/pages/AuthPage/AuthPage.tsx
+++ b/src/pages/AuthPage/AuthPage.tsx
@@ -1,14 +1,12 @@
import React from 'react';
-import { User } from '../../types';
import SignInForm from './SignInForm';
interface PropTypes {
- setUser: (newUser: User | undefined) => void;
- navigate: (prefix: string, id: string) => void;
+ logIn: (name: string, password: string) => Promise<boolean>;
}
-const AuthPage: React.FC<PropTypes> = ({ setUser, navigate }) => {
- return <SignInForm setUser={setUser} navigate={navigate} />;
+const AuthPage: React.FC<PropTypes> = ({ logIn }) => {
+ return <SignInForm logIn={logIn} />;
};
export default AuthPage;
diff --git a/src/pages/AuthPage/SignInForm.tsx b/src/pages/AuthPage/SignInForm.tsx
index b7696e7..1d4ce0e 100644
--- a/src/pages/AuthPage/SignInForm.tsx
+++ b/src/pages/AuthPage/SignInForm.tsx
@@ -1,13 +1,10 @@
-import React, { useRef } from 'react';
+import React, { useState, useRef } from 'react';
import { makeStyles } from '@material-ui/core/styles';
import TextField from '@material-ui/core/TextField';
import Button from '@material-ui/core/Button';
-import { User } from '../../types';
-import { get } from '../../requests';
interface PropTypes {
- setUser: (newUser: User) => void;
- navigate: (prefix: string, id: string) => void;
+ logIn: (name: string, password: string) => Promise<boolean>;
}
const useStyles = makeStyles(theme => ({
@@ -23,18 +20,18 @@ const useStyles = makeStyles(theme => ({
}
}));
-const SignInForm: React.FC<PropTypes> = ({ setUser, navigate }) => {
+const SignInForm: React.FC<PropTypes> = ({ logIn }) => {
+ const [error, setError] = useState<boolean>(false);
const classes = useStyles();
- const inputRef = useRef<HTMLInputElement>();
+ const nameRef = useRef<HTMLInputElement>();
+ const passwordRef = useRef<HTMLInputElement>();
- const onClick = () => {
- const username = inputRef.current?.value;
- if (username) {
- get(`/users?name=${username}`).then(response => {
- const user = response.data[0];
- setUser(user);
- localStorage.setItem('userId', user._id);
- navigate('profile', user._id);
+ const onClick = async () => {
+ const name = nameRef.current?.value;
+ const password = passwordRef.current?.value;
+ if (name && password) {
+ logIn(name, password).then(success => {
+ if (!success) setError(true);
});
}
};
@@ -42,9 +39,15 @@ const SignInForm: React.FC<PropTypes> = ({ setUser, navigate }) => {
return (
<form className={classes.root} noValidate autoComplete="off">
<h1>Sign In</h1>
- <TextField inputRef={inputRef} id="standard-basic" label="Login" />
<TextField
- id="standard-password-input"
+ inputRef={nameRef}
+ error={error}
+ label="Login"
+ />
+ <TextField
+ inputRef={passwordRef}
+ error={error}
+ helperText={error && 'Invalid credentials'}
label="Password"
type="password"
/>
@@ -54,3 +57,4 @@ const SignInForm: React.FC<PropTypes> = ({ setUser, navigate }) => {
};
export default SignInForm;
+