Advertisement
Guest User

Untitled

a guest
Aug 31st, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.83 KB | None | 0 0
  1. <template lang="html">
  2. <section class="container h-100">
  3. <div class="row h-100 justify-content-center align-items-center">
  4. <div class="col wrapper-box">
  5. <img class="mx-auto d-block" src="../assets/logo_polvo_colorido.svg" alt="Grupo Polvo" title="Grupo Polvo">
  6. <p class="wrapper-box__title text-center">Seja bem vindo</p>
  7. <div>
  8. <form class="form form-newaccount" id="passwordForm">
  9. <div class="form-group">
  10. <label for="">E-mail</label>
  11. <input type="text" v-model="input.username" @focus="clearError('username')" @blur="username_check" name="email" class="form-control" id="email" placeholder="">
  12. <span class="invalid-email d-block" v-show="error.username">{{ error.username }}</span>
  13. </div>
  14. <div class="form-group">
  15. <label for="">Senha</label>
  16. <input type="password" v-model="input.password" class="input-lg form-control" :class="{'green' : passValid === 3, 'yellow' : passValid === 2, 'orange' : passValid === 1}" name="password1" id="password1" placeholder="" autocomplete="off">
  17. <div class="row">
  18. <div class="col-sm-12">
  19. <div class="form-newaccount__bullet-steps d-flex flex-row">
  20. <div class="bullet-pass-hor" :class="{'active' : passValid > 0}"><span :class="{'green' : passValid === 3, 'yellow' : passValid === 2, 'orange' : passValid === 1}"></span></div>
  21. <div class="bullet-pass-hor" :class="{'active' : passValid > 1}"><span :class="{'green' : passValid === 3, 'yellow' : passValid === 2, 'orange' : passValid === 1}"></span></div>
  22. <div class="bullet-pass-hor" :class="{'active' : passValid > 2}"><span :class="{'green' : passValid === 3, 'yellow' : passValid === 2, 'orange' : passValid === 1}"></span></div>
  23. </div>
  24. </div>
  25. <div class="col-sm-12">
  26. <span class="d-block bullet-pass-rounded" v-if="!minLength"><span class="fa fa-circle" aria-hidden="true"></span> Pelo menos 6 caracteres</span>
  27. <span class="d-block bullet-pass-rounded" v-if="minLength"><span class="fa fa-circle active" aria-hidden="true"></span> Pelo menos 6 caracteres</span>
  28.  
  29. <span class="d-block bullet-pass-rounded" v-if="!hasUpperCase"><span class="fa fa-circle" aria-hidden="true"></span> Pelo menos 1 letra maiúscula</span>
  30. <span class="d-block bullet-pass-rounded" v-if="hasUpperCase"><span class="fa fa-circle active" aria-hidden="true"></span> Pelo menos 1 letra maiúscula</span>
  31.  
  32. <span class="d-block bullet-pass-rounded" v-if="!hasNumber"><span class="fa fa-circle" aria-hidden="true"></span> Pelo menos 1 número</span>
  33. <span class="d-block bullet-pass-rounded" v-if="hasNumber"><span class="fa fa-circle active" aria-hidden="true"></span> Pelo menos 1 número</span>
  34. </div>
  35. </div>
  36. </div>
  37. <div class="form-group">
  38. <label for="">Confirme sua senha</label>
  39. <input type="password" v-model="input.match_password" @focus="clearError('passwordMatch')" @blur="match_check" @keyup.enter="newUser" class="input-lg form-control" name="password2" id="password2" placeholder="" autocomplete="off">
  40. <span class="invalid-pass d-block" v-show="error.passwordMatch">{{ error.passwordMatch }}</span>
  41. </div>
  42. <input type="button" @click="newUser" class="btn btn-green" id="submit" data-loading-text="Cadastrando..." value="Cadastrar">
  43. <transition-group name="fade">
  44. <span class="error-message" :key="index + 'error'"v-for="(errorName, index) in error" v-show="errorName !== ''">{{ errorName }}</span>
  45. </transition-group>
  46. </form>
  47. </div>
  48. </div>
  49. </div>
  50. </section>
  51. </template>
  52.  
  53. <script>
  54. export default {
  55. name: 'Login',
  56. data() {
  57. return {
  58. input: {
  59. username: '',
  60. password: '',
  61. match_password: '',
  62. },
  63. error: {
  64. password: '',
  65. passwordMatch: '',
  66. username: ''
  67. }
  68. }
  69. },
  70. methods: {
  71. match_check () {
  72. this.error.passwordMatch = ''
  73. if (this.input.password !== this.input.match_password) this.error.passwordMatch = 'senhas nao conferem'
  74. return this.error.passwordMatch !== ''
  75. },
  76. login() {
  77. if (this.input.username != '' && this.input.password != '' && this.input.match_password != '') {
  78. if (this.input.username && this.input.password && this.input.match_password) {
  79. this.$emit('authenticated', true);
  80. this.$router.replace({ name: "secure" });
  81. } else {
  82. this.error = 'E-mail ou senha incorretos'
  83. console.log("The username and / or password is incorrect");
  84. }
  85. } else {
  86. this.error = 'Digite um e-mail válido e uma senha'
  87. console.log("A username and password must be present");
  88. }
  89. },
  90. clearError (field) {
  91. this.error[field] = ''
  92. },
  93. password_check() {
  94. this.error.password = ''
  95. if (!this.hasNumber) this.error.password = 'não tem numero'
  96. if (!this.hasLowerCase) this.error.password = 'não tem letra minuscula'
  97. if (!this.hasUpperCase) this.error.password = 'não tem letra maiúscula'
  98. if (!this.minLength) this.error.password = 'não tem 6 caracteres'
  99.  
  100. return this.error.password !== ''
  101. },
  102. username_check() {
  103. this.error.username = ''
  104. if (this.input.username === '') this.error.username = 'digite um email'
  105. // if (this.username./regex Validando email/) this.error = 'digite um email valido'
  106. return this.error.username !== ''
  107. },
  108. newUser() {
  109. if (this.username_check()) return
  110. if (this.password_check()) return
  111. if (this.match_check()) return
  112. // TODO: cadastrar e redirecionar
  113. },
  114. },
  115. computed: {
  116. hasNumber() {
  117. return /\d/.test(this.input.password)
  118. },
  119. hasLowerCase() {
  120. return /[a-z]/.test(this.input.password)
  121. },
  122. hasUpperCase() {
  123. return /[A-Z]/.test(this.input.password)
  124. },
  125. minLength() {
  126. return this.input.password.length > 5
  127. },
  128. passValid() {
  129. let value = 0
  130. if (this.hasNumber) value += 1
  131. // if (this.hasLowerCase) value += 1
  132. if (this.hasUpperCase) value += 1
  133. if (this.minLength) value += 1
  134. return value
  135. },
  136. },
  137. }
  138. </script>
  139.  
  140. <style lang="scss">
  141. .fade-enter,
  142. .fade-leave-active {
  143. opacity: 0;
  144. }
  145.  
  146. .fade-enter-active,
  147. .fade-leave-active {
  148. transition: opacity 300ms;
  149. }
  150. </style>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement