mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-13 04:24:15 +00:00
improve auth behavior
This commit is contained in:
parent
1536573dd5
commit
09a39b69a9
@ -12,44 +12,17 @@ export default async (req, res, next) => {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const tokenAuthHeader = req.headers?.authorization?.split(" ")
|
const tokenAuthHeader = req.headers?.authorization?.split(" ")
|
||||||
const serverTokenHeader = req.headers?.server_token
|
|
||||||
|
|
||||||
if (!serverTokenHeader && !tokenAuthHeader) {
|
if (!tokenAuthHeader) {
|
||||||
return reject("Missing token header")
|
return reject("Missing token header")
|
||||||
}
|
}
|
||||||
|
|
||||||
if (serverTokenHeader) {
|
if (!tokenAuthHeader[1]) {
|
||||||
const [client_id, token] = serverTokenHeader.split(":")
|
return reject("Recived header, missing token")
|
||||||
|
|
||||||
if (client_id === "undefined" || token === "undefined") {
|
|
||||||
return reject("Invalid server token")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const secureEntries = new SecureEntry(authorizedServerTokens)
|
switch (tokenAuthHeader[0]) {
|
||||||
|
case "Bearer": {
|
||||||
const serverTokenEntry = await secureEntries.get(client_id, undefined, {
|
|
||||||
keyName: "client_id",
|
|
||||||
valueName: "token",
|
|
||||||
})
|
|
||||||
|
|
||||||
if (!serverTokenEntry) {
|
|
||||||
return reject("Invalid server token")
|
|
||||||
}
|
|
||||||
|
|
||||||
if (serverTokenEntry !== token) {
|
|
||||||
return reject("Missmatching server token")
|
|
||||||
}
|
|
||||||
|
|
||||||
req.user = {
|
|
||||||
__server: true,
|
|
||||||
_id: client_id,
|
|
||||||
roles: ["server"],
|
|
||||||
}
|
|
||||||
|
|
||||||
return next()
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!serverTokenHeader && tokenAuthHeader && tokenAuthHeader[0] === "Bearer") {
|
|
||||||
const token = tokenAuthHeader[1]
|
const token = tokenAuthHeader[1]
|
||||||
let decoded = null
|
let decoded = null
|
||||||
|
|
||||||
@ -117,6 +90,42 @@ export default async (req, res, next) => {
|
|||||||
|
|
||||||
return next()
|
return next()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
break
|
||||||
|
}
|
||||||
|
case "Server": {
|
||||||
|
const [client_id, token] = tokenAuthHeader[1].split(":")
|
||||||
|
|
||||||
|
if (client_id === "undefined" || token === "undefined") {
|
||||||
|
return reject("Invalid server token")
|
||||||
|
}
|
||||||
|
|
||||||
|
const secureEntries = new SecureEntry(authorizedServerTokens)
|
||||||
|
|
||||||
|
const serverTokenEntry = await secureEntries.get(client_id, undefined, {
|
||||||
|
keyName: "client_id",
|
||||||
|
valueName: "token",
|
||||||
|
})
|
||||||
|
|
||||||
|
if (!serverTokenEntry) {
|
||||||
|
return reject("Invalid server token")
|
||||||
|
}
|
||||||
|
|
||||||
|
if (serverTokenEntry !== token) {
|
||||||
|
return reject("Missmatching server token")
|
||||||
|
}
|
||||||
|
|
||||||
|
req.user = {
|
||||||
|
__server: true,
|
||||||
|
_id: client_id,
|
||||||
|
roles: ["server"],
|
||||||
|
}
|
||||||
|
|
||||||
|
return next()
|
||||||
|
}
|
||||||
|
default: {
|
||||||
|
return reject("Invalid token type")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error)
|
console.error(error)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user