mirror of
https://github.com/filebrowser/filebrowser.git
synced 2025-06-17 14:53:00 +00:00

Former-commit-id: d7495b6fff4a99a8d155a3be87b15535a74a1305 [formerly 5b3a544447cca0d1cdcb6c87ca94f450a5493506] [formerly b4de1a4f5d4dd295c98366ede2b87bf2cb7918f9 [formerly 002f8066c794c9c440ec437743f6ddfa864f976b]] Former-commit-id: c0e5d38111a99f8e3e71fb5db86e19b7ba44ec48 [formerly 1b5e454263ba64ced95c6d4b51f5f32e66f74758] Former-commit-id: cfb17a53fc86d0071fba91503502444f5f10a0c7
65 lines
1.8 KiB
JavaScript
65 lines
1.8 KiB
JavaScript
import cookie from './cookie'
|
|
import store from '@/store'
|
|
import router from '@/router'
|
|
|
|
function parseToken (token) {
|
|
let path = store.state.baseURL
|
|
if (path === '') path = '/'
|
|
document.cookie = `auth=${token}; max-age=86400; path=${path}`
|
|
let res = token.split('.')
|
|
let user = JSON.parse(window.atob(res[1]))
|
|
store.commit('setJWT', token)
|
|
store.commit('setUser', user)
|
|
}
|
|
|
|
function loggedIn () {
|
|
return new Promise((resolve, reject) => {
|
|
let request = new window.XMLHttpRequest()
|
|
request.open('GET', `${store.state.baseURL}/api/auth/renew`, true)
|
|
if (!store.state.noAuth) request.setRequestHeader('Authorization', `Bearer ${cookie('auth')}`)
|
|
|
|
request.onload = () => {
|
|
if (request.status === 200) {
|
|
parseToken(request.responseText)
|
|
resolve()
|
|
} else {
|
|
reject(new Error(request.responseText))
|
|
}
|
|
}
|
|
request.onerror = () => reject(new Error('Could not finish the request'))
|
|
request.send()
|
|
})
|
|
}
|
|
|
|
function login (user, password, captcha) {
|
|
let data = {username: user, password: password, recaptcha: captcha}
|
|
return new Promise((resolve, reject) => {
|
|
let request = new window.XMLHttpRequest()
|
|
request.open('POST', `${store.state.baseURL}/api/auth/get`, true)
|
|
|
|
request.onload = () => {
|
|
if (request.status === 200) {
|
|
parseToken(request.responseText)
|
|
resolve()
|
|
} else {
|
|
reject(request.responseText)
|
|
}
|
|
}
|
|
request.onerror = () => reject(new Error('Could not finish the request'))
|
|
request.send(JSON.stringify(data))
|
|
})
|
|
}
|
|
|
|
function logout () {
|
|
let path = store.state.baseURL
|
|
if (path === '') path = '/'
|
|
document.cookie = `auth='nothing'; max-age=0; path=${path}`
|
|
router.push({path: '/login'})
|
|
}
|
|
|
|
export default {
|
|
loggedIn: loggedIn,
|
|
login: login,
|
|
logout: logout
|
|
}
|