mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-11 03:24:16 +00:00
improve token generation
This commit is contained in:
parent
91d7ae8c4a
commit
0bc7776564
@ -18,7 +18,13 @@ export default {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const token = await Token.createNewAuthToken(user, options)
|
const token = await Token.createNewAuthToken({
|
||||||
|
username: user.username,
|
||||||
|
user_id: user._id.toString(),
|
||||||
|
ip_address: req.headers["x-forwarded-for"].split(",")[0] || req.socket.remoteAddress,
|
||||||
|
client: req.headers["user-agent"],
|
||||||
|
signLocation: global.signLocation,
|
||||||
|
}, options)
|
||||||
|
|
||||||
return res.json({ token: token })
|
return res.json({ token: token })
|
||||||
})(req, res)
|
})(req, res)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import jwt from "jsonwebtoken"
|
import jwt from "jsonwebtoken"
|
||||||
import { Session, RegenerationToken } from "../../models"
|
import { Session, RegenerationToken } from "@models"
|
||||||
|
|
||||||
export async function regenerateSession(expiredToken, refreshToken) {
|
export async function regenerateSession(expiredToken, refreshToken, aggregateData = {}) {
|
||||||
// search for a regeneration token with the expired token (Should exist only one)
|
// search for a regeneration token with the expired token (Should exist only one)
|
||||||
const regenerationToken = await RegenerationToken.findOne({ refreshToken: refreshToken })
|
const regenerationToken = await RegenerationToken.findOne({ refreshToken: refreshToken })
|
||||||
|
|
||||||
@ -60,7 +60,12 @@ export async function regenerateSession(expiredToken, refreshToken) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// generate a new token
|
// generate a new token
|
||||||
const newToken = await createNewAuthToken(decodedExpiredToken, {
|
const newToken = await createNewAuthToken({
|
||||||
|
username: decodedExpiredToken.username,
|
||||||
|
session_uuid: session.session_uuid,
|
||||||
|
user_id: decodedExpiredToken.user_id,
|
||||||
|
ip_address: aggregateData.ip_address,
|
||||||
|
}, {
|
||||||
updateSession: session._id,
|
updateSession: session._id,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -121,18 +126,7 @@ export async function createNewRegenerationToken(expiredToken) {
|
|||||||
return regenerationToken
|
return regenerationToken
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function createNewAuthToken(user, options = {}) {
|
export async function createNewAuthToken(payload, options = {}) {
|
||||||
const payload = {
|
|
||||||
user_id: user._id ?? user.user_id,
|
|
||||||
username: user.username,
|
|
||||||
email: user.email,
|
|
||||||
signLocation: global.signLocation,
|
|
||||||
}
|
|
||||||
|
|
||||||
return await signNewAuthToken(payload, options)
|
|
||||||
}
|
|
||||||
|
|
||||||
export async function signNewAuthToken(payload, options = {}) {
|
|
||||||
if (options.updateSession) {
|
if (options.updateSession) {
|
||||||
const sessionData = await Session.findOne({ _id: options.updateSession })
|
const sessionData = await Session.findOne({ _id: options.updateSession })
|
||||||
|
|
||||||
@ -141,7 +135,12 @@ export async function signNewAuthToken(payload, options = {}) {
|
|||||||
payload.session_uuid = global.nanoid()
|
payload.session_uuid = global.nanoid()
|
||||||
}
|
}
|
||||||
|
|
||||||
const token = jwt.sign(payload, global.jwtStrategy.secretOrKey, {
|
const token = jwt.sign({
|
||||||
|
session_uuid: payload.session_uuid,
|
||||||
|
username: payload.username,
|
||||||
|
user_id: payload.user_id,
|
||||||
|
signLocation: payload.signLocation,
|
||||||
|
}, global.jwtStrategy.secretOrKey, {
|
||||||
expiresIn: global.jwtStrategy.expiresIn ?? "1h",
|
expiresIn: global.jwtStrategy.expiresIn ?? "1h",
|
||||||
algorithm: global.jwtStrategy.algorithm ?? "HS256"
|
algorithm: global.jwtStrategy.algorithm ?? "HS256"
|
||||||
})
|
})
|
||||||
@ -151,16 +150,14 @@ export async function signNewAuthToken(payload, options = {}) {
|
|||||||
session_uuid: payload.session_uuid,
|
session_uuid: payload.session_uuid,
|
||||||
username: payload.username,
|
username: payload.username,
|
||||||
user_id: payload.user_id,
|
user_id: payload.user_id,
|
||||||
|
location: payload.signLocation,
|
||||||
|
ip_address: payload.ip_address,
|
||||||
|
client: payload.client,
|
||||||
date: new Date().getTime(),
|
date: new Date().getTime(),
|
||||||
location: payload.signLocation ?? "rs-auth",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.updateSession) {
|
if (options.updateSession) {
|
||||||
await Session.findByIdAndUpdate(options.updateSession, {
|
await Session.findByIdAndUpdate(options.updateSession, session)
|
||||||
token: session.token,
|
|
||||||
date: session.date,
|
|
||||||
location: session.location,
|
|
||||||
})
|
|
||||||
} else {
|
} else {
|
||||||
let newSession = new Session(session)
|
let newSession = new Session(session)
|
||||||
|
|
||||||
|
@ -8,5 +8,7 @@ export default {
|
|||||||
user_id: { type: String, required: true },
|
user_id: { type: String, required: true },
|
||||||
date: { type: Number, default: 0 },
|
date: { type: Number, default: 0 },
|
||||||
location: { type: String, default: "Unknown" },
|
location: { type: String, default: "Unknown" },
|
||||||
|
ip_address: { type: String, default: "Unknown" },
|
||||||
|
client: { type: String, default: "Unknown" },
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user