This commit is contained in:
parent
c1bc2d87f2
commit
3cf3b4571a
|
@ -5,110 +5,111 @@ import router from '../router'
|
|||
|
||||
export default {
|
||||
|
||||
user: {
|
||||
authenticated: false,
|
||||
infos: {}
|
||||
},
|
||||
user: {
|
||||
authenticated: false,
|
||||
infos: {}
|
||||
},
|
||||
|
||||
login (context, creds, redirect) {
|
||||
HTTP.post('login', {
|
||||
username: creds.username,
|
||||
password: creds.password
|
||||
})
|
||||
.then(response => {
|
||||
// Save the token to local storage for later use
|
||||
localStorage.removeItem('token') // Delete an eventually preexisting old token
|
||||
localStorage.setItem('token', response.data.token)
|
||||
login(context, creds, redirect) {
|
||||
localStorage.removeItem('token') // Delete an eventually preexisting old token
|
||||
|
||||
// Tell others the user is autheticated
|
||||
this.user.authenticated = true
|
||||
this.getUserInfos()
|
||||
HTTP.post('login', {
|
||||
username: creds.username,
|
||||
password: creds.password
|
||||
})
|
||||
.then(response => {
|
||||
// Save the token to local storage for later use
|
||||
localStorage.setItem('token', response.data.token)
|
||||
|
||||
// Hide the loader
|
||||
context.loading = false
|
||||
// Tell others the user is autheticated
|
||||
this.user.authenticated = true
|
||||
this.getUserInfos()
|
||||
|
||||
// Redirect if nessecary
|
||||
if (redirect) {
|
||||
router.push({ name: redirect })
|
||||
}
|
||||
})
|
||||
.catch(e => {
|
||||
// Hide the loader
|
||||
context.loading = false
|
||||
if (e.response) {
|
||||
context.error = e.response.data.message
|
||||
if (e.response.status === 401) {
|
||||
context.error = 'Wrong username or password.'
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// Hide the loader
|
||||
context.loading = false
|
||||
|
||||
register (context, creds, redirect) {
|
||||
HTTP.post('register', {
|
||||
username: creds.username,
|
||||
email: creds.email,
|
||||
password: creds.password
|
||||
})
|
||||
.then(response => {
|
||||
// eslint-disable-next-line
|
||||
console.log(response)
|
||||
this.login(context, creds, redirect)
|
||||
})
|
||||
.catch(e => {
|
||||
// Hide the loader
|
||||
context.loading = false
|
||||
if (e.response) {
|
||||
context.error = e.response.data.message
|
||||
if (e.response.status === 401) {
|
||||
context.error = 'Wrong username or password.'
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
// Redirect if nessecary
|
||||
if (redirect) {
|
||||
router.push({name: redirect})
|
||||
}
|
||||
})
|
||||
.catch(e => {
|
||||
// Hide the loader
|
||||
context.loading = false
|
||||
if (e.response) {
|
||||
context.error = e.response.data.message
|
||||
if (e.response.status === 401) {
|
||||
context.error = 'Wrong username or password.'
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
logout () {
|
||||
localStorage.removeItem('token')
|
||||
router.push({ name: 'login' })
|
||||
this.user.authenticated = false
|
||||
},
|
||||
register(context, creds, redirect) {
|
||||
HTTP.post('register', {
|
||||
username: creds.username,
|
||||
email: creds.email,
|
||||
password: creds.password
|
||||
})
|
||||
.then(response => {
|
||||
// eslint-disable-next-line
|
||||
console.log(response)
|
||||
this.login(context, creds, redirect)
|
||||
})
|
||||
.catch(e => {
|
||||
// Hide the loader
|
||||
context.loading = false
|
||||
if (e.response) {
|
||||
context.error = e.response.data.message
|
||||
if (e.response.status === 401) {
|
||||
context.error = 'Wrong username or password.'
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
checkAuth () {
|
||||
let jwt = localStorage.getItem('token')
|
||||
this.getUserInfos()
|
||||
this.user.authenticated = false
|
||||
if (jwt) {
|
||||
let infos = this.user.infos
|
||||
let ts = Math.round((new Date()).getTime() / 1000)
|
||||
if (infos.exp >= ts) {
|
||||
this.user.authenticated = true
|
||||
}
|
||||
}
|
||||
},
|
||||
logout() {
|
||||
localStorage.removeItem('token')
|
||||
router.push({name: 'login'})
|
||||
this.user.authenticated = false
|
||||
},
|
||||
|
||||
getUserInfos () {
|
||||
let jwt = localStorage.getItem('token')
|
||||
if (jwt) {
|
||||
this.user.infos = this.parseJwt(localStorage.getItem('token'))
|
||||
return this.parseJwt(localStorage.getItem('token'))
|
||||
} else {
|
||||
return {}
|
||||
}
|
||||
},
|
||||
checkAuth() {
|
||||
let jwt = localStorage.getItem('token')
|
||||
this.getUserInfos()
|
||||
this.user.authenticated = false
|
||||
if (jwt) {
|
||||
let infos = this.user.infos
|
||||
let ts = Math.round((new Date()).getTime() / 1000)
|
||||
if (infos.exp >= ts) {
|
||||
this.user.authenticated = true
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
parseJwt (token) {
|
||||
let base64Url = token.split('.')[1]
|
||||
let base64 = base64Url.replace('-', '+').replace('_', '/')
|
||||
return JSON.parse(window.atob(base64))
|
||||
},
|
||||
getUserInfos() {
|
||||
let jwt = localStorage.getItem('token')
|
||||
if (jwt) {
|
||||
this.user.infos = this.parseJwt(localStorage.getItem('token'))
|
||||
return this.parseJwt(localStorage.getItem('token'))
|
||||
} else {
|
||||
return {}
|
||||
}
|
||||
},
|
||||
|
||||
getAuthHeader () {
|
||||
return {
|
||||
'Authorization': 'Bearer ' + localStorage.getItem('token')
|
||||
}
|
||||
},
|
||||
parseJwt(token) {
|
||||
let base64Url = token.split('.')[1]
|
||||
let base64 = base64Url.replace('-', '+').replace('_', '/')
|
||||
return JSON.parse(window.atob(base64))
|
||||
},
|
||||
|
||||
getToken () {
|
||||
return localStorage.getItem('token')
|
||||
}
|
||||
getAuthHeader() {
|
||||
return {
|
||||
'Authorization': 'Bearer ' + localStorage.getItem('token')
|
||||
}
|
||||
},
|
||||
|
||||
getToken() {
|
||||
return localStorage.getItem('token')
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,12 +32,15 @@ export default class AbstractService {
|
|||
baseURL: config.VIKUNJA_API_BASE_URL,
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': 'Bearer ' + localStorage.getItem('token'),
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
// Set the default auth header if we have a token
|
||||
if (localStorage.getItem('token') !== '' && localStorage.getItem('token') !== null && localStorage.getItem('token') !== undefined) {
|
||||
if (
|
||||
localStorage.getItem('token') !== '' &&
|
||||
localStorage.getItem('token') !== null &&
|
||||
localStorage.getItem('token') !== undefined
|
||||
) {
|
||||
this.http.defaults.headers.common['Authorization'] = 'Bearer ' + localStorage.getItem('token')
|
||||
}
|
||||
|
||||
|
|
2
todo.md
2
todo.md
|
@ -103,6 +103,8 @@
|
|||
* [ ] Refactor team sharing to not make a new request every time something was changed
|
||||
* [ ] Team sharing should be able to search for a team instead of its ID, like it's the case with users
|
||||
* [ ] Dropdown for rights
|
||||
* [ ] Fix the first request afer login being made with an old token. Possible workaround may be to just make a
|
||||
request into the void, before doing anything else, and repeating that until it succeeds.
|
||||
|
||||
## Waiting for backend
|
||||
|
||||
|
|
Reference in New Issue
Block a user