Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2020
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { useState, useEffect } from 'react';
  2. import {
  3.   Grid,
  4.   Button,
  5.   Typography,
  6.   FormControl,
  7.   FormControlLabel,
  8.   Checkbox,
  9.   TextField,
  10.   InputAdornment,
  11.   IconButton
  12. } from '@material-ui/core';
  13. import Logo_img from 'Images/Logo_img.png';
  14. import { useTranslation } from 'react-i18next';
  15. import { makeStyles } from '@material-ui/core/styles';
  16. import { connect } from 'react-redux';
  17. import { login } from 'Api/AuthorizationApi';
  18. import { useFormik } from 'formik';
  19. import * as Yup from 'yup';
  20. import Visibility from '@material-ui/icons/Visibility';
  21. import VisibilityOff from '@material-ui/icons/VisibilityOff';
  22.  
  23. const useStyles = makeStyles(theme => ({
  24.   secondaryText: {
  25.     color: '#a5a5a5',
  26.     marginBottom: '2em',
  27.   },
  28.   header: {
  29.     marginBottom: '1em',
  30.   },
  31.   formControl: {
  32.     width: '100%',
  33.   },
  34.   inputGrid: {
  35.     marginBottom: '2em',
  36.   },
  37.   loginGrid: {
  38.     marginTop: '2em',
  39.   },
  40.   loginMain: {
  41.     padding: '0 230px 0 0',
  42.     backgroundColor: 'white',
  43.   },
  44.   error: {
  45.     color: 'red',
  46.   },
  47. }))
  48.  
  49. const passwordRegex = /^(?=.*\d)(?=.*[A-Z])(?=.*[^a-zA-Z\d\s:]).{8,}$/;
  50.  
  51. function ResetPassword(props) {
  52.   const classes = useStyles();
  53.   const { t } = useTranslation();
  54.   const [showPassword, setShowPassword] = useState(false);
  55.  
  56.   const handleClickShowPassword = () => {
  57.     setShowPassword(!showPassword);
  58.   };
  59.  
  60.   const handleMouseDownPassword = event => {
  61.     event.preventDefault();
  62.   };
  63.  
  64.  
  65.   const formik = useFormik({
  66.     initialValues: {
  67.       password1: '',
  68.       confirmationPassword: '',
  69.     },
  70.     validationSchema: Yup.object({
  71.       password1: Yup.string()
  72.         .required(t('requiredField'))
  73.         .test('constraints', t('passwordConstraint'), (val) => {
  74.           return passwordRegex.test(val);
  75.         }),
  76.       confirmationPassword: Yup.string()
  77.         .test('equal', t('passwordConfirmationError'), (value) => {
  78.           return password1.value === value
  79.         }),
  80.     }),
  81.     onSubmit: values => {
  82.       alert(JSON.stringify(values, null, 2));
  83.     },
  84.   });
  85.  
  86.   const { error, authenticated } = props;
  87.   const {
  88.     touched,
  89.     handleChange,
  90.     handleBlur,
  91.     values,
  92.     errors,
  93.     handleSubmit
  94.   } = formik;
  95.   const error1 = touched.password1 && errors.password1;
  96.   const error2 = touched.confirmationPassword && errors.confirmationPassword;
  97.   const { mode } = props.match.params;
  98.  
  99.   return (
  100.     <main className={classes.loginMain}>
  101.         <form onSubmit={handleSubmit}>
  102.         <Grid container justify="center">
  103.           <Grid item container xs={12} justify="center">
  104.             <img src={Logo_img} placeholder='Logo_img'/>
  105.           </Grid>
  106.           <Grid item container xs={12} justify="center" className={classes.header}>
  107.             <Typography variant="h2">
  108.               {t('appName')}
  109.             </Typography>
  110.           </Grid>
  111.           <Grid item container xs={12} justify="center">
  112.             <Typography component="span" className={classes.secondaryText}>
  113.             {t('resetPassword')}
  114.             </Typography>
  115.           </Grid>
  116.           <Grid item container xs={12} direction="column" alignItems="center">
  117.             <Grid item container xs={3} justify="center" className={classes.inputGrid}>
  118.               <FormControl className={classes.formControl}>
  119.                 <TextField
  120.                   error={!!error1}
  121.                   label={t('password')}
  122.                   type={showPassword ? 'text': 'password'}
  123.                   id="password1"
  124.                   name="password1"
  125.                   value={values.password1}
  126.                   onChange={handleChange}
  127.                   onBlur={handleBlur}
  128.                   helperText={error1 && errors.password1}
  129.                   InputProps={{
  130.                     endAdornment:  
  131.                       <InputAdornment position="end">
  132.                         <IconButton
  133.                           aria-label="toggle password visibility"
  134.                           onClick={handleClickShowPassword}
  135.                           onMouseDown={handleMouseDownPassword}
  136.                         >
  137.                           {showPassword ? <Visibility /> : <VisibilityOff />}
  138.                         </IconButton>
  139.                       </InputAdornment>
  140.                   }}
  141.                 />
  142.               </FormControl>
  143.             </Grid>
  144.             <Grid item container xs={3} justify="center" className={classes.inputGrid}>
  145.               <FormControl className={classes.formControl}>
  146.                 <TextField
  147.                   error={!!error2}
  148.                   label={t('passwordConfirmation')}
  149.                   type={showPassword ? 'text': 'password'}
  150.                   id="confirmationPassword"
  151.                   name="confirmationPassword"
  152.                   value={values.confirmationPassword}
  153.                   onChange={handleChange}
  154.                   onBlur={handleBlur}
  155.                   helperText={error2 && errors.confirmationPassword}
  156.                 />
  157.               </FormControl>
  158.             </Grid>
  159.           </Grid>
  160.           {error && (
  161.             <Grid item container xs={12} justify="center">
  162.               <Typography component="span" className={classes.error}>
  163.                 {t(`${error.message[0]}`)}
  164.               </Typography>
  165.           </Grid>
  166.           )}
  167.          
  168.           <Grid item container xs={12} justify="center" className={classes.loginGrid}>
  169.             <Button variant="contained" color="primary" type="submit" style={{width: "10%"}}>{t('submit')}</Button>
  170.           </Grid>
  171.         </Grid>
  172.       </form>
  173.     </main>
  174.   );
  175. };
  176.  
  177. export default ResetPassword;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement