Advertisement
Guest User

aws-amplify-auth-alt

a guest
Jul 6th, 2018
296
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import React, { Fragment } from 'react';
  2. import { Auth, API } from 'aws-amplify';
  3.  
  4. export default class Home extends React.Component {
  5.   constructor(props) {
  6.     super(props);
  7.     this.state = {
  8.       message: '',
  9.       email: '',
  10.       password: '',
  11.       user: null,
  12.       isAuthenticated: false,
  13.       isAuthenticating: false,
  14.       oldPassword: '',
  15.       newPassword: '',
  16.     };
  17.   }
  18.  
  19.   handleChange = (key) => (e) => {
  20.     this.setState({
  21.       [key]: e.target.value,
  22.     });
  23.   }
  24.  
  25.   handleLogin = async (e) => {
  26.     e.preventDefault();
  27.     const { email, password } = this.state;
  28.     try {
  29.       await this.setState({ isAuthenticating: true });
  30.       const user = await Auth.signIn(email, password);
  31.       await this.setState({ user, isAuthenticated: true, isAuthenticating: false, password: '' });
  32.       console.log('login successful', user);
  33.     } catch (err) {
  34.       console.error('login failed', err);
  35.     }
  36.   }
  37.  
  38.   handleChangePassword = async (e) => {
  39.     e.preventDefault();
  40.     try {
  41.       if (this.state.user === null) {
  42.         throw new Error('user is null');
  43.       }
  44.       await Auth.changePassword(this.state.user, this.state.oldPassword, this.state.newPassword);
  45.       console.log('change password successful');
  46.       await this.setState({ isAuthenticated: false });
  47.     } catch (err) {
  48.       console.error('something in change password failed', err);
  49.     }
  50.   }
  51.  
  52.   handleLogout = async (e) => {
  53.     e.preventDefault();
  54.     console.log('handleLogout', e);
  55.     try {
  56.       await Auth.signOut();
  57.       await this.setState({ isAuthenticated: false });
  58.       console.log('logout successful');
  59.     } catch (err) {
  60.       console.error('logout failed', err);
  61.     }
  62.   }
  63.  
  64.   render() {
  65.     return (
  66.       <div>
  67.         <form>
  68.           {
  69.             !this.state.isAuthenticated
  70.             ? (
  71.               <Fragment>
  72.                 <label htmlFor="email">
  73.                   Email
  74.                   <input
  75.                     id="email"
  76.                     name="email"
  77.                     type="email"
  78.                     defaultValue={this.state.email}
  79.                     value={this.state.email}
  80.                     onChange={this.handleChange('email')}
  81.                   />
  82.                 </label>
  83.                 <label htmlFor="password">
  84.                   Password
  85.                   <input
  86.                     id="password"
  87.                     name="password"
  88.                     type="password"
  89.                     defaultValue={this.state.password}
  90.                     value={this.state.password}
  91.                     onChange={this.handleChange('password')}
  92.                   />
  93.                 </label>
  94.                 <input
  95.                   name="submit"
  96.                   type="submit"
  97.                   value="Login"
  98.                   onClick={this.handleLogin}
  99.                 />
  100.                 { this.state.isAuthenticating ? (<span>Authenticating...</span>) : null }
  101.               </Fragment>
  102.             )
  103.             : (
  104.               <Fragment>
  105.                 <div>
  106.                   <label htmlFor="old-password">
  107.                       OldPassword
  108.                     <input
  109.                       id="old-password"
  110.                       name="old-password"
  111.                       type="password"
  112.                       defaultValue={this.state.oldPassword}
  113.                       value={this.state.oldPassword}
  114.                       onChange={this.handleChange('oldPassword')}
  115.                     />
  116.                   </label>
  117.                   <label htmlFor="new-password">
  118.                       NewPassword
  119.                     <input
  120.                       id="new-password"
  121.                       name="new-password"
  122.                       type="password"
  123.                       defaultValue={this.state.newPassword}
  124.                       value={this.state.newPassword}
  125.                       onChange={this.handleChange('newPassword')}
  126.                     />
  127.                   </label>
  128.                   <input
  129.                     name="submit"
  130.                     type="submit"
  131.                     value="Change Password"
  132.                     onClick={this.handleChangePassword}
  133.                   />
  134.                 </div>
  135.                 <div>
  136.                   <input
  137.                     name="submit"
  138.                     type="submit"
  139.                     value="Logout"
  140.                     onClick={this.handleLogout}
  141.                   />
  142.                 </div>
  143.               </Fragment>
  144.  
  145.             )
  146.           }
  147.         </form>
  148.       </div>
  149.     );
  150.   }
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement