aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/pages/AuthPage/AuthPage.tsx41
-rw-r--r--src/pages/AuthPage/Registration.tsx60
-rw-r--r--src/pages/AuthPage/SignInForm.tsx1
-rw-r--r--src/types.d.ts4
4 files changed, 101 insertions, 5 deletions
diff --git a/src/pages/AuthPage/AuthPage.tsx b/src/pages/AuthPage/AuthPage.tsx
index 72733f0..9b8040c 100644
--- a/src/pages/AuthPage/AuthPage.tsx
+++ b/src/pages/AuthPage/AuthPage.tsx
@@ -1,12 +1,47 @@
-import React from 'react';
+import React, {useState} from 'react';
+import { Authorization} from '../../types';
import SignInForm from './SignInForm';
+import {makeStyles} from "@material-ui/core";
+import Registration from "./Registration";
interface PropTypes {
logIn: (name: string, password: string) => Promise<boolean>;
}
-const AuthPage: React.FC<PropTypes> = ({ logIn }) => {
- return <SignInForm logIn={logIn} />;
+const useStyles = makeStyles(theme => ({
+ authorize: {
+ display: 'flex',
+ width: 200,
+ justifyContent: 'space-around',
+ margin: '0 auto'
+ }
+}));
+
+const AuthPage: React.FC<PropTypes> = ({logIn}) => {
+ const classes = useStyles();
+ const[authorization,setAuthorization] = useState<Authorization>({authorize: 'signUp'});
+
+ const handleSignUp = () => {
+ setAuthorization({authorize: 'signUp'});
+ console.log(authorization.authorize);
+ };
+
+ const handleRegistration = () => {
+ setAuthorization({authorize: 'registration'});
+ console.log(authorization.authorize);
+ };
+
+ return (
+ <>
+ <div className={classes.authorize}>
+ <div onClick={handleSignUp}>SignUp</div>
+ <div>or</div>
+ <div onClick={handleRegistration}>Registrate</div>
+ </div>
+ { authorization.authorize === 'signUp' && <SignInForm logIn={logIn} /> }
+ { authorization.authorize === 'registration' && <Registration logIn={logIn} /> }
+ </>
+ );
};
export default AuthPage;
diff --git a/src/pages/AuthPage/Registration.tsx b/src/pages/AuthPage/Registration.tsx
new file mode 100644
index 0000000..1884a8a
--- /dev/null
+++ b/src/pages/AuthPage/Registration.tsx
@@ -0,0 +1,60 @@
+import React, {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, post} from '../../requests';
+
+interface PropTypes {
+ logIn: (name: string, password: string) => Promise<boolean>;
+}
+
+const useStyles = makeStyles(theme => ({
+ root: {
+ '& > *': {
+ margin: theme.spacing(1),
+ width: '25ch'
+ },
+ display: 'flex',
+ flexDirection: 'column',
+ alignItems: 'center',
+ textAlign: 'center'
+ }
+}));
+
+const Registration: React.FC<PropTypes> = ({logIn}) => {
+ const classes = useStyles();
+ const inputRef = useRef<HTMLInputElement>();
+ const inputRefPassword = useRef<HTMLInputElement>();
+
+
+ const onClick = () => {
+ const name = inputRef.current?.value;
+ const password = inputRefPassword.current?.value;
+ const newUser = {
+ name: name,
+ password: password,
+ avatarUrl: '',
+ };
+ if (name && password) {
+ post(`/users`,newUser).then(response => {
+ logIn(name, password);
+ });
+ }
+ };
+
+ return (
+ <form className={classes.root} noValidate autoComplete="off">
+ <TextField inputRef={inputRef} id="standard-basic" label="Name"/>
+ <TextField id="standard-basic" label="Email"/>
+ <TextField inputRef={inputRefPassword}
+ id="standard-password-input"
+ label="Password"
+ type="password"
+ />
+ <Button variant="contained" onClick={onClick}>submit</Button>
+ </form>
+ );
+};
+
+export default Registration;
diff --git a/src/pages/AuthPage/SignInForm.tsx b/src/pages/AuthPage/SignInForm.tsx
index 1d4ce0e..e2ae8b7 100644
--- a/src/pages/AuthPage/SignInForm.tsx
+++ b/src/pages/AuthPage/SignInForm.tsx
@@ -38,7 +38,6 @@ const SignInForm: React.FC<PropTypes> = ({ logIn }) => {
return (
<form className={classes.root} noValidate autoComplete="off">
- <h1>Sign In</h1>
<TextField
inputRef={nameRef}
error={error}
diff --git a/src/types.d.ts b/src/types.d.ts
index e84f96c..fdb9327 100644
--- a/src/types.d.ts
+++ b/src/types.d.ts
@@ -2,7 +2,9 @@ export interface Page {
prefix: string;
id: string;
}
-
+export interface Authorization {
+ authorize: string;
+}
export interface User {
name: string;
avatarUrl: string;