Advertisement
Dodo67

Activate.jsx

Feb 7th, 2022
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { useState, useEffect } from 'react';
  2. import authSvg from '../assests/welcome.svg';
  3. import { ToastContainer, toast } from 'react-toastify';
  4. import axios from 'axios';
  5. import jwt from 'jsonwebtoken';
  6. import { authenticate, isAuth } from '../helpers/auth';
  7. import { Link, Navigate } from 'react-router-dom';
  8.  
  9. const Activate = ({ match }) => {
  10.   const [formData, setFormData] = useState({
  11.     name: '',
  12.     token: '',
  13.     show: true
  14.   });
  15.  
  16.   useEffect(() => {
  17.     let token = match.params.token;
  18.     let { name } = jwt.decode(token);
  19.  
  20.     if (token) {
  21.       setFormData({ ...formData, name, token });
  22.     }
  23.  
  24.     console.log(token, name);
  25.   }, [match.params]);
  26.   const { name, token, show } = formData;
  27.  
  28.   const handleSubmit = e => {
  29.     e.preventDefault();
  30.  
  31.     axios
  32.       .post(`${process.env.REACT_APP_API_URL}/activation`, {
  33.         token
  34.       })
  35.       .then(res => {
  36.         setFormData({
  37.           ...formData,
  38.           show: false
  39.         });
  40.  
  41.         toast.success(res.data.message);
  42.       })
  43.       .catch(err => {
  44.        
  45.         toast.error(err.response.data.errors);
  46.       });
  47.   };
  48.  
  49.   return (
  50.     <div className='min-h-screen bg-gray-100 text-gray-900 flex justify-center'>
  51.       {isAuth() ? <Navigate to='/' /> : null}
  52.       <ToastContainer />
  53.       <div className='max-w-screen-xl m-0 sm:m-20 bg-white shadow sm:rounded-lg flex justify-center flex-1'>
  54.         <div className='lg:w-1/2 xl:w-5/12 p-6 sm:p-12'>
  55.           <div className='mt-12 flex flex-col items-center'>
  56.             <h1 className='text-2xl xl:text-3xl font-extrabold'>
  57.               Welcome {name}
  58.             </h1>
  59.  
  60.             <form
  61.               className='w-full flex-1 mt-8 text-indigo-500'
  62.               onSubmit={handleSubmit}
  63.             >
  64.               <div className='mx-auto max-w-xs relative '>
  65.                 <button
  66.                   type='submit'
  67.                   className='mt-5 tracking-wide font-semibold bg-indigo-500 text-gray-100 w-full py-4 rounded-lg hover:bg-indigo-700 transition-all duration-300 ease-in-out flex items-center justify-center focus:shadow-outline focus:outline-none'
  68.                 >
  69.                   <i className='fas fa-user-plus fa 1x w-6  -ml-2' />
  70.                   <span className='ml-3'>Activate your Account</span>
  71.                 </button>
  72.               </div>
  73.               <div className='my-12 border-b text-center'>
  74.                 <div className='leading-none px-2 inline-block text-sm text-gray-600 tracking-wide font-medium bg-white transform translate-y-1/2'>
  75.                   Or sign up again
  76.                 </div>
  77.               </div>
  78.               <div className='flex flex-col items-center'>
  79.                 <a
  80.                   className='w-full max-w-xs font-bold shadow-sm rounded-lg py-3
  81.           bg-indigo-100 text-gray-800 flex items-center justify-center transition-all duration-300 ease-in-out focus:outline-none hover:shadow focus:shadow-sm focus:shadow-outline mt-5'
  82.                   href='/register'
  83.                   target='_self'
  84.                 >
  85.                   <i className='fas fa-sign-in-alt fa 1x w-6  -ml-2 text-indigo-500' />
  86.                   <span className='ml-4'>Sign Up</span>
  87.                 </a>
  88.               </div>
  89.             </form>
  90.           </div>
  91.         </div>
  92.         <div className='flex-1 bg-indigo-100 text-center hidden lg:flex'>
  93.           <div
  94.             className='m-12 xl:m-16 w-full bg-contain bg-center bg-no-repeat'
  95.             style={{ backgroundImage: `url(${authSvg})` }}
  96.           ></div>
  97.         </div>
  98.       </div>
  99.       ;
  100.     </div>
  101.   );
  102. };
  103.  
  104. export default Activate;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement