mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 10:34:17 +00:00
implement basic decode
This commit is contained in:
parent
be0c61a028
commit
35282dc1cd
@ -19,15 +19,13 @@ export default class Token {
|
||||
}
|
||||
|
||||
static async signToken(payload, strategy = "authStrategy") {
|
||||
const { secret, expiresIn, algorithm } = Token[strategy] ?? Token.authStrategy
|
||||
const { secret, expiresIn, algorithm } =
|
||||
Token[strategy] ?? Token.authStrategy
|
||||
|
||||
const token = jwt.sign(payload,
|
||||
secret,
|
||||
{
|
||||
const token = jwt.sign(payload, secret, {
|
||||
expiresIn: expiresIn,
|
||||
algorithm: algorithm
|
||||
}
|
||||
)
|
||||
algorithm: algorithm,
|
||||
})
|
||||
|
||||
return token
|
||||
}
|
||||
@ -43,6 +41,7 @@ export default class Token {
|
||||
ip_address: payload.ip_address,
|
||||
client: payload.client,
|
||||
date: new Date().getTime(),
|
||||
created_at: new Date().getTime(),
|
||||
})
|
||||
|
||||
await session.save()
|
||||
@ -51,9 +50,12 @@ export default class Token {
|
||||
}
|
||||
|
||||
static async createRefreshToken(user_id, authToken) {
|
||||
const jwt_token = await this.signToken({
|
||||
const jwt_token = await this.signToken(
|
||||
{
|
||||
user_id,
|
||||
}, "refreshStrategy")
|
||||
},
|
||||
"refreshStrategy",
|
||||
)
|
||||
|
||||
const refreshRegistry = new RefreshToken({
|
||||
authToken: authToken,
|
||||
@ -65,6 +67,20 @@ export default class Token {
|
||||
return jwt_token
|
||||
}
|
||||
|
||||
static async basicDecode(token) {
|
||||
const { secret } = Token.authStrategy
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
jwt.verify(token, secret, async (err, decoded) => {
|
||||
if (err) {
|
||||
reject(err)
|
||||
}
|
||||
|
||||
resolve(decoded)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
static async validate(token) {
|
||||
let result = {
|
||||
expired: false,
|
||||
@ -97,7 +113,9 @@ export default class Token {
|
||||
result.data = decoded
|
||||
|
||||
// check account tos violation
|
||||
const violation = await TosViolations.findOne({ user_id: decoded.user_id })
|
||||
const violation = await TosViolations.findOne({
|
||||
user_id: decoded.user_id,
|
||||
})
|
||||
|
||||
if (violation) {
|
||||
console.log("violation", violation)
|
||||
@ -112,7 +130,9 @@ export default class Token {
|
||||
}
|
||||
|
||||
const sessions = await Session.find({ user_id: decoded.user_id })
|
||||
const currentSession = sessions.find((session) => session.token === token)
|
||||
const currentSession = sessions.find(
|
||||
(session) => session.token === token,
|
||||
)
|
||||
|
||||
if (!currentSession) {
|
||||
result.valid = false
|
||||
@ -120,7 +140,8 @@ export default class Token {
|
||||
} else {
|
||||
result.session = currentSession
|
||||
result.valid = true
|
||||
result.user = async () => await User.findOne({ _id: decoded.user_id })
|
||||
result.user = async () =>
|
||||
await User.findOne({ _id: decoded.user_id })
|
||||
}
|
||||
})
|
||||
|
||||
@ -140,7 +161,10 @@ export default class Token {
|
||||
refreshToken: undefined,
|
||||
}
|
||||
|
||||
await jwt.verify(refreshToken, Token.refreshStrategy.secret, async (err, decoded) => {
|
||||
await jwt.verify(
|
||||
refreshToken,
|
||||
Token.refreshStrategy.secret,
|
||||
async (err, decoded) => {
|
||||
if (err) {
|
||||
result.error = err.message
|
||||
return false
|
||||
@ -153,7 +177,7 @@ export default class Token {
|
||||
|
||||
let currentSession = await Session.findOne({
|
||||
user_id: decoded.user_id,
|
||||
token: authToken
|
||||
token: authToken,
|
||||
}).catch((err) => {
|
||||
return null
|
||||
})
|
||||
@ -165,16 +189,22 @@ export default class Token {
|
||||
|
||||
currentSession = currentSession.toObject()
|
||||
|
||||
await Session.findOneAndDelete({ _id: currentSession._id.toString() })
|
||||
await Session.findOneAndDelete({
|
||||
_id: currentSession._id.toString(),
|
||||
})
|
||||
|
||||
result.token = await this.createAuthToken({
|
||||
...currentSession,
|
||||
date: new Date().getTime(),
|
||||
})
|
||||
result.refreshToken = await this.createRefreshToken(decoded.user_id, result.token)
|
||||
result.refreshToken = await this.createRefreshToken(
|
||||
decoded.user_id,
|
||||
result.token,
|
||||
)
|
||||
|
||||
return true
|
||||
})
|
||||
},
|
||||
)
|
||||
|
||||
if (result.error) {
|
||||
throw new OperationError(401, result.error)
|
||||
|
Loading…
x
Reference in New Issue
Block a user