mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-01-03 00:06:46 +01:00
Fix use first accessible library depending on display order, default library id checked on server when authenticating
This commit is contained in:
parent
0dd219f303
commit
08e1782253
@ -1,7 +1,9 @@
|
|||||||
export default function ({ store, redirect, route, app }) {
|
export default function ({ store, redirect, route, app }) {
|
||||||
// If the user is not authenticated
|
// If the user is not authenticated
|
||||||
if (!store.state.user.user) {
|
if (!store.state.user.user) {
|
||||||
if (route.name === 'batch' || route.name === 'index') return redirect('/login')
|
if (route.name === 'batch' || route.name === 'index') {
|
||||||
|
return redirect('/login')
|
||||||
|
}
|
||||||
return redirect(`/login?redirect=${route.fullPath}`)
|
return redirect(`/login?redirect=${route.fullPath}`)
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -48,22 +48,8 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
setUser(user) {
|
setUser(user, defaultLibraryId) {
|
||||||
// If user is not able to access main library, then set current library
|
this.$store.commit('libraries/setCurrentLibrary', defaultLibraryId)
|
||||||
// var userLibrariesAccessible = this.$store.getters['user/getLibrariesAccessible']
|
|
||||||
var userCanAccessAll = user.permissions ? !!user.permissions.accessAllLibraries : false
|
|
||||||
if (!userCanAccessAll) {
|
|
||||||
var accessibleLibraries = user.librariesAccessible || []
|
|
||||||
console.log('Setting user without all library access', accessibleLibraries)
|
|
||||||
if (accessibleLibraries.length && !accessibleLibraries.includes('main')) {
|
|
||||||
console.log('Setting current library', accessibleLibraries[0])
|
|
||||||
this.$store.commit('libraries/setCurrentLibrary', accessibleLibraries[0])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// if (userLibrariesAccessible.length && !userLibrariesAccessible.includes('main')) {
|
|
||||||
// this.$store.commit('libraries/setCurrentLibrary', userLibrariesAccessible[0])
|
|
||||||
// }
|
|
||||||
|
|
||||||
this.$store.commit('user/setUser', user)
|
this.$store.commit('user/setUser', user)
|
||||||
},
|
},
|
||||||
async submitForm() {
|
async submitForm() {
|
||||||
@ -83,7 +69,7 @@ export default {
|
|||||||
if (authRes && authRes.error) {
|
if (authRes && authRes.error) {
|
||||||
this.error = authRes.error
|
this.error = authRes.error
|
||||||
} else if (authRes) {
|
} else if (authRes) {
|
||||||
this.setUser(authRes.user)
|
this.setUser(authRes.user, authRes.userDefaultLibraryId)
|
||||||
}
|
}
|
||||||
this.processing = false
|
this.processing = false
|
||||||
},
|
},
|
||||||
@ -101,7 +87,7 @@ export default {
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.then((res) => {
|
.then((res) => {
|
||||||
this.setUser(res.user)
|
this.setUser(res.user, res.userDefaultLibraryId)
|
||||||
this.processing = false
|
this.processing = false
|
||||||
})
|
})
|
||||||
.catch((error) => {
|
.catch((error) => {
|
||||||
|
@ -120,7 +120,7 @@ class Auth {
|
|||||||
if (password) {
|
if (password) {
|
||||||
return res.status(401).send('Invalid root password (hint: there is none)')
|
return res.status(401).send('Invalid root password (hint: there is none)')
|
||||||
} else {
|
} else {
|
||||||
return res.json({ user: user.toJSONForBrowser() })
|
return res.json({ user: user.toJSONForBrowser(), userDefaultLibraryId: user.getDefaultLibraryId(this.db.libraries) })
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,7 +128,8 @@ class Auth {
|
|||||||
var compare = await bcrypt.compare(password, user.pash)
|
var compare = await bcrypt.compare(password, user.pash)
|
||||||
if (compare) {
|
if (compare) {
|
||||||
res.json({
|
res.json({
|
||||||
user: user.toJSONForBrowser()
|
user: user.toJSONForBrowser(),
|
||||||
|
userDefaultLibraryId: user.getDefaultLibraryId(this.db.libraries)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
Logger.debug(`[Auth] Failed login attempt ${req.rateLimit.current} of ${req.rateLimit.limit}`)
|
Logger.debug(`[Auth] Failed login attempt ${req.rateLimit.current} of ${req.rateLimit.limit}`)
|
||||||
|
@ -146,6 +146,7 @@ class Db {
|
|||||||
})
|
})
|
||||||
var p3 = this.librariesDb.select(() => true).then((results) => {
|
var p3 = this.librariesDb.select(() => true).then((results) => {
|
||||||
this.libraries = results.data.map(l => new Library(l))
|
this.libraries = results.data.map(l => new Library(l))
|
||||||
|
this.libraries.sort((a, b) => a.displayOrder - b.displayOrder)
|
||||||
Logger.info(`[DB] ${this.libraries.length} Libraries Loaded`)
|
Logger.info(`[DB] ${this.libraries.length} Libraries Loaded`)
|
||||||
})
|
})
|
||||||
var p4 = this.settingsDb.select(() => true).then((results) => {
|
var p4 = this.settingsDb.select(() => true).then((results) => {
|
||||||
|
@ -381,9 +381,10 @@ class LibraryController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (hasUpdates) {
|
if (hasUpdates) {
|
||||||
Logger.info(`[LibraryController] Updated library display orders`)
|
this.db.libraries.sort((a, b) => a.displayOrder - b.displayOrder)
|
||||||
|
Logger.debug(`[LibraryController] Updated library display orders`)
|
||||||
} else {
|
} else {
|
||||||
Logger.info(`[LibraryController] Library orders were up to date`)
|
Logger.debug(`[LibraryController] Library orders were up to date`)
|
||||||
}
|
}
|
||||||
|
|
||||||
var libraries = this.db.libraries.map(lib => lib.toJSON())
|
var libraries = this.db.libraries.map(lib => lib.toJSON())
|
||||||
|
@ -168,7 +168,7 @@ class MiscController {
|
|||||||
Logger.error('Invalid user in authorize')
|
Logger.error('Invalid user in authorize')
|
||||||
return res.sendStatus(401)
|
return res.sendStatus(401)
|
||||||
}
|
}
|
||||||
res.json({ user: req.user })
|
res.json({ user: req.user, userDefaultLibraryId: req.user.getDefaultLibraryId(this.db.libraries) })
|
||||||
}
|
}
|
||||||
|
|
||||||
getAllTags(req, res) {
|
getAllTags(req, res) {
|
||||||
|
@ -223,6 +223,13 @@ class User {
|
|||||||
return hasUpdates
|
return hasUpdates
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getDefaultLibraryId(libraries) {
|
||||||
|
// Libraries should already be in ascending display order, find first accessible
|
||||||
|
var firstAccessibleLibrary = libraries.find(lib => this.checkCanAccessLibrary(lib.id))
|
||||||
|
if (!firstAccessibleLibrary) return null
|
||||||
|
return firstAccessibleLibrary.id
|
||||||
|
}
|
||||||
|
|
||||||
getMostRecentItemProgress(libraryItems) {
|
getMostRecentItemProgress(libraryItems) {
|
||||||
if (!this.mediaProgress.length) return null
|
if (!this.mediaProgress.length) return null
|
||||||
var lip = this.mediaProgress.map(lip => lip.toJSON())
|
var lip = this.mediaProgress.map(lip => lip.toJSON())
|
||||||
|
Loading…
Reference in New Issue
Block a user