2017-03-08 18:41:05 +00:00
|
|
|
/* eslint-env browser, jquery */
|
|
|
|
/* global Cookies */
|
2016-10-05 02:58:05 +00:00
|
|
|
|
2017-03-08 18:41:05 +00:00
|
|
|
import { serverurl } from '../config'
|
2016-10-05 02:58:05 +00:00
|
|
|
|
2017-03-08 18:41:05 +00:00
|
|
|
let checkAuth = false
|
|
|
|
let profile = null
|
|
|
|
let lastLoginState = getLoginState()
|
|
|
|
let lastUserId = getUserId()
|
|
|
|
var loginStateChangeEvent = null
|
|
|
|
|
|
|
|
export function setloginStateChangeEvent (func) {
|
|
|
|
loginStateChangeEvent = func
|
2017-01-05 08:48:23 +00:00
|
|
|
}
|
2016-10-05 02:58:05 +00:00
|
|
|
|
2017-03-08 18:41:05 +00:00
|
|
|
export function resetCheckAuth () {
|
|
|
|
checkAuth = false
|
2016-10-05 02:58:05 +00:00
|
|
|
}
|
|
|
|
|
2017-03-08 18:41:05 +00:00
|
|
|
export function setLoginState (bool, id) {
|
|
|
|
Cookies.set('loginstate', bool, {
|
|
|
|
expires: 365
|
|
|
|
})
|
|
|
|
if (id) {
|
|
|
|
Cookies.set('userid', id, {
|
|
|
|
expires: 365
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
Cookies.remove('userid')
|
|
|
|
}
|
|
|
|
lastLoginState = bool
|
|
|
|
lastUserId = id
|
|
|
|
checkLoginStateChanged()
|
2016-10-05 02:58:05 +00:00
|
|
|
}
|
|
|
|
|
2017-03-08 18:41:05 +00:00
|
|
|
export function checkLoginStateChanged () {
|
|
|
|
if (getLoginState() !== lastLoginState || getUserId() !== lastUserId) {
|
|
|
|
if (loginStateChangeEvent) setTimeout(loginStateChangeEvent, 100)
|
|
|
|
return true
|
|
|
|
} else {
|
|
|
|
return false
|
|
|
|
}
|
2016-10-05 02:58:05 +00:00
|
|
|
}
|
|
|
|
|
2017-03-08 18:41:05 +00:00
|
|
|
export function getLoginState () {
|
|
|
|
const state = Cookies.get('loginstate')
|
|
|
|
return state === 'true' || state === true
|
2016-10-05 02:58:05 +00:00
|
|
|
}
|
|
|
|
|
2017-03-08 18:41:05 +00:00
|
|
|
export function getUserId () {
|
|
|
|
return Cookies.get('userid')
|
2016-10-05 02:58:05 +00:00
|
|
|
}
|
|
|
|
|
2017-03-08 18:41:05 +00:00
|
|
|
export function clearLoginState () {
|
|
|
|
Cookies.remove('loginstate')
|
2016-10-05 02:58:05 +00:00
|
|
|
}
|
|
|
|
|
2017-03-08 18:41:05 +00:00
|
|
|
export function checkIfAuth (yesCallback, noCallback) {
|
|
|
|
const cookieLoginState = getLoginState()
|
|
|
|
if (checkLoginStateChanged()) checkAuth = false
|
|
|
|
if (!checkAuth || typeof cookieLoginState === 'undefined') {
|
|
|
|
$.get(`${serverurl}/me`)
|
2017-01-05 08:48:23 +00:00
|
|
|
.done(data => {
|
2017-03-08 18:41:05 +00:00
|
|
|
if (data && data.status === 'ok') {
|
|
|
|
profile = data
|
|
|
|
yesCallback(profile)
|
|
|
|
setLoginState(true, data.id)
|
|
|
|
} else {
|
|
|
|
noCallback()
|
|
|
|
setLoginState(false)
|
|
|
|
}
|
2016-10-05 02:58:05 +00:00
|
|
|
})
|
2017-01-05 08:48:23 +00:00
|
|
|
.fail(() => {
|
2017-03-08 18:41:05 +00:00
|
|
|
noCallback()
|
2016-10-05 02:58:05 +00:00
|
|
|
})
|
2017-01-05 08:48:23 +00:00
|
|
|
.always(() => {
|
2017-03-08 18:41:05 +00:00
|
|
|
checkAuth = true
|
|
|
|
})
|
|
|
|
} else if (cookieLoginState) {
|
|
|
|
yesCallback(profile)
|
|
|
|
} else {
|
|
|
|
noCallback()
|
|
|
|
}
|
2016-10-09 13:34:40 +00:00
|
|
|
}
|
|
|
|
|
2017-01-05 08:48:23 +00:00
|
|
|
export default {
|
2017-03-08 18:41:05 +00:00
|
|
|
checkAuth,
|
|
|
|
profile,
|
|
|
|
lastLoginState,
|
|
|
|
lastUserId,
|
|
|
|
loginStateChangeEvent
|
|
|
|
}
|