Guest User

Untitled

a guest
Aug 14th, 2018
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.22 KB | None | 0 0
  1. import React from "react"
  2. import { navigate} from "@reach/router"
  3. import { Link } from 'gatsby'
  4.  
  5. import { Auth } from 'aws-amplify'
  6.  
  7. const initialState = {
  8. username: ``,
  9. password: ``,
  10. email: '',
  11. phone_number: '',
  12. authCode: '',
  13. stage: 0
  14. }
  15.  
  16.  
  17. class SignUp extends React.Component {
  18. state = initialState
  19.  
  20. handleUpdate = (event) => {
  21. this.setState({
  22. [event.target.name]: event.target.value,
  23. })
  24. }
  25.  
  26. signUp = async() => {
  27. const { username, password, email, phone_number } = this.state
  28. try {
  29. await Auth.signUp({ username, password, attributes: { email, phone_number }})
  30. this.setState({ stage: 1 })
  31. } catch (err) {
  32. console.log('error signing up...', err)
  33. }
  34. }
  35.  
  36. confirmSignUp = async() => {
  37. const { username, authCode } = this.state
  38. try {
  39. await Auth.confirmSignUp(username, authCode)
  40. alert('Successfully signed up!')
  41. navigate("/app/login")
  42. } catch (err) {
  43. console.log('error confirming signing up...', err)
  44. }
  45. }
  46.  
  47. render() {
  48. return (
  49. <div>
  50. <h1>Sign Up</h1>
  51. {
  52. this.state.stage === 0 && (
  53. <div style={styles.formContainer}>
  54. <input
  55. onChange={this.handleUpdate}
  56. placeholder='Username'
  57. name='username'
  58. value={this.state.username}
  59. style={styles.input}
  60. />
  61. <input
  62. onChange={this.handleUpdate}
  63. placeholder='Password'
  64. name='password'
  65. value={this.state.password}
  66. type='password'
  67. style={styles.input}
  68. />
  69. <input
  70. onChange={this.handleUpdate}
  71. placeholder='Email'
  72. name='email'
  73. value={this.state.email}
  74. style={styles.input}
  75. />
  76. <input
  77. onChange={this.handleUpdate}
  78. placeholder='Phone Number'
  79. name='phone_number'
  80. value={this.state.phone_number}
  81. style={styles.input}
  82. />
  83. <div style={styles.button} onClick={this.signUp}>
  84. <span style={styles.buttonText}>Sign Up</span>
  85. </div>
  86. </div>
  87. )
  88. }
  89. {
  90. this.state.stage === 1 && (
  91. <div style={styles.formContainer}>
  92. <input
  93. onChange={this.handleUpdate}
  94. placeholder='Authorization Code'
  95. name='authCode'
  96. value={this.state.authCode}
  97. style={styles.input}
  98. />
  99. <div style={styles.button} onClick={this.confirmSignUp}>
  100. <span style={styles.buttonText}>Confirm Sign Up</span>
  101. </div>
  102. </div>
  103. )
  104. }
  105. <Link to="/app/login">Sign In</Link>
  106. </div>
  107. )
  108. }
  109. }
  110.  
  111. const styles = {
  112. input: {
  113. height: 40, margin: '10px 0px', padding: 7
  114. },
  115. formContainer: {
  116. display: 'flex', flexDirection: 'column'
  117. },
  118. button: {
  119. backgroundColor: 'rebeccapurple', padding: '15px 7px', cursor: 'pointer', textAlign: 'center', marginBottom: 10
  120. },
  121. buttonText: {
  122. color: 'white'
  123. }
  124. }
  125.  
  126. export default SignUp
Add Comment
Please, Sign In to add comment