feat: Adjust node filtering to display internal agents in sandbox mode for both agent route and Vless QR card.
This commit is contained in:
parent
c9ff466609
commit
d2f8158594
@ -73,16 +73,19 @@ export async function POST(request: NextRequest) {
|
||||
|
||||
const response = NextResponse.json({ ok: true, assumed: SANDBOX_EMAIL })
|
||||
|
||||
// Backup current root session token as a host-only cookie (do NOT set domain).
|
||||
response.cookies.set({
|
||||
name: ROOT_BACKUP_COOKIE,
|
||||
value: session.token,
|
||||
httpOnly: true,
|
||||
secure: secureCookies(),
|
||||
sameSite: 'lax',
|
||||
path: '/',
|
||||
maxAge: deriveMaxAgeFromExpires(payload.expiresAt),
|
||||
})
|
||||
// Backup current root session token only if it's NOT already an assumed session.
|
||||
// Check if the current user is NOT the sandbox user.
|
||||
if (user.email.toLowerCase() !== SANDBOX_EMAIL) {
|
||||
response.cookies.set({
|
||||
name: ROOT_BACKUP_COOKIE,
|
||||
value: session.token,
|
||||
httpOnly: true,
|
||||
secure: secureCookies(),
|
||||
sameSite: 'lax',
|
||||
path: '/',
|
||||
maxAge: deriveMaxAgeFromExpires(payload.expiresAt),
|
||||
})
|
||||
}
|
||||
|
||||
// Switch main session to sandbox token.
|
||||
applySessionCookie(response, payload.token, deriveMaxAgeFromExpires(payload.expiresAt))
|
||||
|
||||
@ -96,12 +96,25 @@ export function applySessionCookie(response: NextResponse, token: string, maxAge
|
||||
}
|
||||
|
||||
export function clearSessionCookie(response: NextResponse) {
|
||||
const domain = resolveCookieDomain()
|
||||
// Always clear the host-only cookie.
|
||||
response.cookies.set({
|
||||
name: SESSION_COOKIE_NAME,
|
||||
value: '',
|
||||
...secureCookieBase,
|
||||
maxAge: 0,
|
||||
})
|
||||
|
||||
// Also clear the domain-scoped cookie if we can resolve the domain.
|
||||
if (domain) {
|
||||
response.cookies.set({
|
||||
name: SESSION_COOKIE_NAME,
|
||||
value: '',
|
||||
...secureCookieBase,
|
||||
maxAge: 0,
|
||||
domain,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export function applyMfaCookie(response: NextResponse, token: string, maxAge?: number) {
|
||||
@ -115,12 +128,24 @@ export function applyMfaCookie(response: NextResponse, token: string, maxAge?: n
|
||||
}
|
||||
|
||||
export function clearMfaCookie(response: NextResponse) {
|
||||
// Clear host-only
|
||||
response.cookies.set({
|
||||
name: MFA_COOKIE_NAME,
|
||||
value: '',
|
||||
...secureCookieBase,
|
||||
maxAge: 0,
|
||||
})
|
||||
// Clear domain-scoped if resolved
|
||||
const domain = resolveCookieDomain()
|
||||
if (domain) {
|
||||
response.cookies.set({
|
||||
name: MFA_COOKIE_NAME,
|
||||
value: '',
|
||||
...secureCookieBase,
|
||||
maxAge: 0,
|
||||
domain,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
export function deriveMaxAgeFromExpires(expiresAt?: string | number | Date | null, fallback = SESSION_DEFAULT_MAX_AGE) {
|
||||
|
||||
@ -146,7 +146,7 @@ function buildGuestUser(): User {
|
||||
return {
|
||||
id: identifier,
|
||||
uuid: identifier,
|
||||
email: 'Sandbox@svc.plus',
|
||||
email: 'sandbox@svc.plus',
|
||||
name: 'Guest user',
|
||||
username: 'guest',
|
||||
mfaEnabled: false,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user