|
- <template>
- <form v-if="active === 'register'" v-on:submit="register" id="register-form">
- <h3>Registration</h3>
- <div>{{errorMessage}}</div>
- <div>
- <label for='sender_name'>Name</label>
- <input id='register-name' required type='name' name='sender_name' placeholder=''
- spellcheck='false'>
- </div>
- <div>
- <label for='sender_email'>Email</label>
- <input v-on:input="checkPasswords" id='register-email' required type='email' name='sender_email' placeholder=''
- spellcheck='false'>
- </div>
- <div>
- <label for='sender_password'>Password</label>
- <input v-on:input="checkPasswords" id='register-password' required type='password' name='sender_password'
- placeholder='' spellcheck='false'>
- </div>
- <div>
- <label for='confirm_password'>Confirm Password</label>
- <input v-on:input="checkPasswords" id='confirm-password' required type='password'
- name='sender_password' placeholder='' spellcheck='false'>
- </div>
- <button class="submit-btn" type="submit">Submit</button>
- </form>
- <form v-if="active === 'forgot'" v-on:submit="forgotPassword" id="forgot-form">
- <h3>Forgot Password</h3>
- <div>
- <label for='sender_email'>Email</label>
- <input id='forgot-email' required type='email' name='sender_email' placeholder=''
- spellcheck='false'>
- </div>
- <button class="submit-btn" type="submit">Submit</button>
- </form>
- <img v-if="active === 'loading'" type="image/svg+xml" class="loading-icon" src="../../images/loading.svg" alt=""/>
- <div v-if="active === 'register-completed'">
- <img class="medium-icon" src="../../images/checked2.svg" alt="">
- <h3>Success!</h3>
- <p>A verification link has been sent to your inbox.</p>
- </div>
- <div v-if="active === 'forgot-completed'">
- <img class="medium-icon" src="../../images/checked2.svg" alt="">
- <h3>Success!</h3>
- <p>A password reset link has been sent.</p>
- </div>
- <div v-if="active === 'error'">
- <img class="medium-icon" src="../../images/warning-colored.svg" alt="">
- <h3>An Error Occured.</h3>
- <p>{{`${error}: ${errorMessage}`}}</p>
- </div>
- <div v-on:click="closeArea" class="cancel-button"></div>
- </template>
-
- <script>
- function getCookie(name) {
- var re = new RegExp(name + "=([^;]+)")
- var value = re.exec(document.cookie)
-
- return (value != null) ? unescape(value[1]) : null
- }
-
- function getToken() {
- return fetch("/sanctum/csrf-cookie", {
- method: 'GET'
- }).then( () => {
- this.token = this.getCookie('XSRF-TOKEN')
- return this.token
- })
- }
- function register(event) {
- this.active = 'loading'
- this.getToken().then(() => {fetch("/register", {
- method: 'POST',
- headers: {'Content-Type': 'application/json',
- 'Accept': 'application/json',
- 'X-XSRF-TOKEN': this.token},
- body: JSON.stringify({"name": document.getElementById("register-name").value,
- "email": document.getElementById("register-email").value,
- "password": document.getElementById("register-password").value,
- "password_confirmation": document.getElementById("confirm-password").value})})
- .then(response => {
- //Give completed or error
- if (response.ok) {
- this.active = 'register-completed'
- } else {
- if (response.status === 422) {
- this.errorMessage = 'That email is already registered.'
- this.active = 'register'
- } else {
- this.error = response.status
- this.errorMessage = response.statusText
- this.active = 'error'
- }
- }
- /* console.log(response.json()) */
- });
- event.preventDefault();
- })
- }
-
- function checkPasswords() {
- let passInput = document.getElementById('register-password')
- let passInput2 = document.getElementById('confirm-password')
- if (passInput.value != passInput2.value) {
- passInput2.setCustomValidity('Passwords must be matching')
- } else {
- passInput2.setCustomValidity('');
- }
- }
-
- function forgotPassword(event) {
- this.active = 'loading'
- fetch("/forgot-password", {
- method: 'POST',
- headers: {'Content-Type': 'application/json',
- 'Accept': 'application/json',
- 'X-XSRF-TOKEN': this.token},
- body: JSON.stringify({"email": document.getElementById("forgot-email").value})})
- .then(response => {
- //Give completed or error
- console.log(response.status)
- console.log(response.json())
- if (response.ok) {
- this.active = 'forgot-completed'
- } else {
- this.error = response.status
- this.errorMessage = response.statusText
- this.active = 'error'
- }
- /* console.log(response.json()) */
- });
- event.preventDefault();
- }
-
- module.exports = {
- data() {
- return {active: 'register', token: '', errorMessage: ''}
- },
- methods: {
- getToken,
- getCookie,
- register,
- checkPasswords,
- forgotPassword,
- closeArea() {
- document.querySelector(".register-area").classList.remove("active")
- },
- }
- }
- </script>
|