UNPKG

vue-token-fix

Version:

Simple token storage/ authorization in vuejs.

98 lines (71 loc) 2.19 kB
const Auth = { install(vue, options = { loginUrl: "/api/login", signupUrl: "/api/users", logoutUrl: "/api/logout"}) { vue.prototype.$auth = new Authenticate(vue, options.loginUrl, options.signupUrl, options.logoutUrl); vue.http.interceptors.push((request, next) => { if (!request.headers.hasOwnProperty('Authorization')) { request.headers['Authorization'] = localStorage.getItem("token"); } next(); }); } } if (typeof exports == "object") { // Export module.exports = Auth; } else if (window.Vue) { // Vue use if vue is being used on the page Vue.use(Auth); } class Authenticate { constructor(context, loginUrl, signupUrl, logoutUrl) { this.authenticated = this.check(); this.loginUrl = loginUrl; this.signupUrl = signupUrl; this.logoutUrl = logoutUrl; context = context; } login(context, input, redirect = false, errorHandler = false) { context.$http.post(this.loginUrl, input).then((response) => { setToken(response.data.bearerToken); this.authenticated = true; if(redirect)redirectMe(context, redirect); }, handleErrors(errorHandler)); } logout(context, redirect = false, errorHandler = false) { context.$http.get(this.logoutUrl).then((response) => { removeToken(); this.authenticated = false; if(redirect)redirectMe(context, redirect); }, handleErrors(errorHandler)); } check() { validToken(getToken()); } } function redirectMe(context, redirect) { if (redirect !== false) { context.$router.go(redirect); } } function validToken(token) { if (typeof token != "undefined" && token != null) { return true; } return false; } function handleErrors(errorHandler) { return (errors) => { if (errorHandler !== false) { errorHandler(errors); } } } function getToken() { return localStorage.getItem("token") } function setToken(token) { localStorage.setItem("token", "Bearer" + token); } function removeToken() { localStorage.removeItem("token") }