Created
October 28, 2018 18:54
-
-
Save syntaxlexx/421d3ee8289c13308767861cd9e7ba9d to your computer and use it in GitHub Desktop.
Revisions
-
syntaxlexx created this gist
Oct 28, 2018 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,102 @@ window._ = require('lodash'); window.Popper = require('popper.js').default; /** * We'll load jQuery and the Bootstrap jQuery plugin which provides support * for JavaScript based Bootstrap features such as modals and tabs. This * code may be modified to fit the specific needs of your application. */ try { window.$ = window.jQuery = require('jquery'); require('bootstrap'); } catch (e) {} /** * We'll load the axios HTTP library which allows us to easily issue requests * to our Laravel back-end. This library automatically handles sending the * CSRF token as a header based on the value of the "XSRF" token cookie. */ window.axios = require('axios'); window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; window.axios.interceptors.request.use(null, error => { return Promise.reject(error); }); /** * Intercept error 401 from axios and redirect user to login page */ // ES6 Modules or TypeScript import Swal from 'sweetalert2' window.axios.interceptors.response.use((response) => { // intercept the global error return response }, function (error) { if (error.response.status === 401) { // if the error is 401 // login token expired. prompt for logout Swal({ title: 'ERROR 401!', html: 'Sorry. It seems your access token has expired <br/> or are unauthorised to access this part!', imageUrl: '/img/401_unauthorised_robot.png', imageWidth: 326, imageHeight: 326, imageAlt: 'ERROR 401 - Unauthorised Access!!', animation: false, customClass: 'animated fadeInUp', showCancelButton: true, confirmButtonColor: '#3085d6', cancelButtonColor: '#d33', confirmButtonText: 'Refresh Access Token!' }).then((result) => { if (result.value) { Promise.reject(error); return window.location = '/account/logout'; } }); } // Reject the error and proceed return Promise.reject(error) }); /** * To avoid a user's token being deactivated due to inactivity, * we are going to start a timeout to refresh the page automatically */ require('./libs/inactivityGuard'); /** * Next we will register the CSRF Token as a common header with Axios so that * all outgoing HTTP requests automatically have it attached. This is just * a simple convenience so we don't have to attach every token manually. */ let token = document.head.querySelector('meta[name="csrf-token"]'); if (token) { window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content; } else { console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token'); } /** * Echo exposes an expressive API for subscribing to channels and listening * for events that are broadcast by Laravel. Echo and event broadcasting * allows your team to easily build robust real-time web applications. */ // import Echo from 'laravel-echo' // window.Pusher = require('pusher-js'); // window.Echo = new Echo({ // broadcaster: 'pusher', // key: process.env.MIX_PUSHER_APP_KEY, // cluster: process.env.MIX_PUSHER_APP_CLUSTER, // encrypted: true // }); This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,41 @@ /** * Created by PhpStorm. * User: Lexx YungCarter * Date: 28/10/2018 * Time: 21:41 */ var timeoutID; function setup() { this.addEventListener("mousemove", resetTimer, false); this.addEventListener("mousedown", resetTimer, false); this.addEventListener("keypress", resetTimer, false); this.addEventListener("DOMMouseScroll", resetTimer, false); this.addEventListener("mousewheel", resetTimer, false); this.addEventListener("touchmove", resetTimer, false); this.addEventListener("MSPointerMove", resetTimer, false); startTimer(); } // start setup setup(); function startTimer() { // wait 2 seconds before calling goInactive timeoutID = window.setTimeout(goInactive, 60000*60); // 60 s * 60 min = 1 hr; } function resetTimer(e) { window.clearTimeout(timeoutID); goActive(); } function goInactive() { window.location.reload(true); } function goActive() { startTimer(); }