feat(api): ✨ handle getting request ip through proxy
This commit is contained in:
parent
c6758721ec
commit
4b228bfce5
|
@ -44,7 +44,7 @@ export const handler: SessionHandlers = {
|
||||||
// save token to session
|
// save token to session
|
||||||
ctx.state.session.flash<MagicLinkInfos>(`MAGIC_LINK__${token}`, {
|
ctx.state.session.flash<MagicLinkInfos>(`MAGIC_LINK__${token}`, {
|
||||||
email,
|
email,
|
||||||
remoteId: remoteId(ctx),
|
remoteId: remoteId(request, ctx),
|
||||||
timestamp: Date.now(),
|
timestamp: Date.now(),
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -69,7 +69,7 @@ export const handler: SessionHandlers = {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
async GET(_request, ctx) {
|
async GET(request, ctx) {
|
||||||
const token = ctx.url.searchParams.get('token')
|
const token = ctx.url.searchParams.get('token')
|
||||||
const redirect = ctx.url.searchParams.get('redirect')
|
const redirect = ctx.url.searchParams.get('redirect')
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ export const handler: SessionHandlers = {
|
||||||
}
|
}
|
||||||
|
|
||||||
// check remote id (same user/machine that has query the token)
|
// check remote id (same user/machine that has query the token)
|
||||||
if (entry.remoteId === remoteId(ctx)) {
|
if (entry.remoteId === remoteId(request, ctx)) {
|
||||||
const user = await getUserByMail(entry.email)
|
const user = await getUserByMail(entry.email)
|
||||||
ctx.state.session.set('user', user)
|
ctx.state.session.set('user', user)
|
||||||
|
|
||||||
|
@ -109,8 +109,16 @@ export const handler: SessionHandlers = {
|
||||||
}
|
}
|
||||||
|
|
||||||
function remoteId(
|
function remoteId(
|
||||||
|
{ headers }: { headers: Headers },
|
||||||
{ remoteAddr }: { remoteAddr: FreshContext['remoteAddr'] },
|
{ remoteAddr }: { remoteAddr: FreshContext['remoteAddr'] },
|
||||||
): string {
|
): string {
|
||||||
|
const forwardedAddress = headers.get('X-FORWARDED-FOR')
|
||||||
|
const forwardedProto = headers.get('X-FORWARDED-PROTO')
|
||||||
|
|
||||||
|
if (forwardedAddress && forwardedProto) {
|
||||||
|
return `${forwardedProto}://${forwardedAddress}`
|
||||||
|
}
|
||||||
|
|
||||||
return `(${remoteAddr.transport}):${remoteAddr.hostname}:${remoteAddr.port}`
|
return `(${remoteAddr.transport}):${remoteAddr.hostname}:${remoteAddr.port}`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue