Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <template lang="pug">
  2. .wait-message
  3. p.verify-message Thanks for signing up!
  4. p.verify-message We'll just need you to verify your email address to continue. Please check your email!
  5. </template>
  6. <script>
  7. import { authenticator } from '../../services/auth.service.js'
  8. import { createProfileForUserId } from '../../services/profile.service'
  9. import { signupUser } from '../../services/user.service.js'
  10. export default {
  11. name: 'Auth',
  12. props: {
  13. question: {
  14. required: true,
  15. type: Object,
  16. default: () => {},
  17. },
  18. answered: {
  19. type: Object,
  20. default: () => {},
  21. },
  22. responses: {
  23. type: Object,
  24. default: () => {},
  25. },
  26. survey: {
  27. required: true,
  28. type: Object,
  29. default: () => {},
  30. },
  31. },
  32. emits: ['update-answers'],
  33. async created() {
  34. // Establishes New User And Sends Auth Email
  35. try {
  36. this.doesUserHaveMinResponses(this.responses)
  37. const userPass = this.responses.find(
  38. response => response.response_key_id === 9,
  39. )
  40. const newUserId = await this.signupNewUser({
  41. ...this.answered,
  42. password: userPass.val,
  43. })
  44. await this.createProfileForNewUser(newUserId, this.responses)
  45. const sessionToken = await this.createToken({
  46. ...this.answered,
  47. })
  48. const sessionInfo = await authenticator.sendEmail({
  49. ...this.answered,
  50. sessionToken: sessionToken,
  51. })
  52. document.cookie = `siimee_session=${sessionInfo.hashedSessionToken}; max-age=600; path=/`
  53. } catch (err) {
  54. // TODO: render an error page in this component displaying which
  55. // error occurred and how to reach out to staff
  56. console.error('ERROR :=>', err)
  57. }
  58. },
  59. methods: {
  60. doesUserHaveMinResponses(responses) {
  61. if (!this.survey.hasMinResponsesToCreateProfile(responses))
  62. throw new Error(
  63. 'User has not answered minimum amount of questions to create profile',
  64. )
  65. },
  66. async createToken(payload) {
  67. return await authenticator.createToken({
  68. payload,
  69. })
  70. },
  71. async signupNewUser(userInfo) {
  72. const newUser = await signupUser(userInfo)
  73. if (!newUser || newUser.error) {
  74. throw new Error(
  75. 'Error occured when signing up new User :=>',
  76. newUser.error,
  77. )
  78. } else return newUser.user_id
  79. },
  80. async createProfileForNewUser(userId, responses) {
  81. try {
  82. await createProfileForUserId(userId, responses)
  83. } catch (err) {
  84. throw new Error(err)
  85. }
  86. },
  87. },
  88. }
  89. </script>
  90. <style>
  91. .wait-message {
  92. margin: 5rem auto;
  93. text-align: center;
  94. width: 90%;
  95. max-width: 35rem;
  96. font-size: 150%;
  97. font-weight: bold;
  98. }
  99. </style>