Guest User

Untitled

a guest
Nov 19th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.03 KB | None | 0 0
  1. <template>
  2. <div class="med-size">
  3.  
  4. <div class="row">
  5.  
  6. <div class="card col-4 my-5 offset-4">
  7. <h2 class="card-title mt-3 text-center">
  8. Login
  9. </h2>
  10. <div class="card-body">
  11. <form @submit.prevent="submit" class="form" role="form">
  12. <div class="form-group">
  13. <label for="email">E-mail: </label>
  14. <input type="email" class="form-control" :class="{'is-invalid' : error.email}" id="email" v-model="form.email" :disabled="loading" />
  15. <div class="invalid-feedback" v-show="error.email">{{ error.email }}</div>
  16. </div>
  17. <div class="form-group">
  18. <label for="password">Password: </label>
  19. <input type="password" class="form-control" :class="{'is-invalid' : error.password}" id="password" v-model="form.password" :disabled="loading" />
  20. <div class="invalid-feedback" v-show="error.password">{{ error.password }}</div>
  21. </div>
  22. <div class="form-group mt-4">
  23. <button type="submit" class="btn btn-primary btn-lg btn-block" :class="{ 'btn-loading': loading }" :disabled="loading">Sign in</button>
  24. </div>
  25. <div class="form-group">
  26. <div>
  27. <nuxt-link :to="{ name: 'forgot'}">Forgot password?</nuxt-link>
  28. </div>
  29.  
  30. </div>
  31. </form>
  32. <login-social />
  33. </div>
  34. </div>
  35. </div>
  36.  
  37. </div>
  38. </template>
  39.  
  40.  
  41. <script>
  42. import LoginSocial from "~/components/LoginSocial.vue"
  43.  
  44. export default {
  45. middleware: ["guest"],
  46. head() {
  47. return {
  48. title: "Login",
  49. meta: [
  50. {
  51. hid: `description`,
  52. name: "description",
  53. content: "Login page"
  54. }
  55. ]
  56. }
  57. },
  58. data() {
  59. return {
  60. loading: false,
  61. form: {
  62. email: null,
  63. password: null
  64. },
  65. error: {}
  66. }
  67. },
  68.  
  69. components: {
  70. LoginSocial
  71. },
  72. computed: {},
  73. mounted() {
  74. const errorMsg = this.$route.query.errorMsg || null
  75.  
  76. if (errorMsg == "error_social") {
  77. this.$toast.error("Error auth with social network.")
  78. this.$router.push({ name: "login" })
  79. } else {
  80. this.$toast.error(errorMsg)
  81. this.$router.push({ name: "login" })
  82. }
  83. },
  84. methods: {
  85. async submit() {
  86. this.loading = true
  87. try {
  88. await this.$store.dispatch("auth/login", this.form)
  89. this.$router.push({ name: "home" })
  90. this.loading = false
  91. this.error = {}
  92. } catch (err) {
  93. this.loading = false
  94. const error_code = parseInt(err.response && err.response.status) || 500
  95. const error_msg = err.response && err.response.data ? err.response.data : err
  96. const validation_errors = error_msg.validation_errors ? error_msg.validation_errors : null
  97.  
  98. const auth_error = error_msg.auth_error ? error_msg.auth_error : null
  99.  
  100. if (validation_errors) {
  101. const error_fields = Object.keys(this.form)
  102. error_fields.forEach(field_name => {
  103. this.error[field_name] = validation_errors[field_name] ? validation_errors[field_name] : null
  104. })
  105. } else if (auth_error) {
  106. this.error.email = auth_error
  107. } else {
  108. if (process.env.NODE_ENV == "development") {
  109. console.log("Error", `${error_code} ${error_msg}`)
  110. }
  111. this.$toast.error("Server error. Try again later")
  112. }
  113. }
  114. }
  115. }
  116. }
  117. </script>
Add Comment
Please, Sign In to add comment