Merge branch 'Fix-auth'
This commit is contained in:
@@ -38,7 +38,13 @@ const corsOptions = {
|
|||||||
|
|
||||||
console.log('CORS check for origin:', origin);
|
console.log('CORS check for origin:', origin);
|
||||||
|
|
||||||
// Check if origin is allowed
|
// Allow local network IPs (192.168.1.xxx)
|
||||||
|
if (origin && origin.match(/^http:\/\/192\.168\.1\.\d{1,3}(:\d+)?$/)) {
|
||||||
|
callback(null, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if origin is in allowed list
|
||||||
if (!origin || allowedOrigins.indexOf(origin) !== -1) {
|
if (!origin || allowedOrigins.indexOf(origin) !== -1) {
|
||||||
callback(null, true);
|
callback(null, true);
|
||||||
} else {
|
} else {
|
||||||
@@ -96,19 +102,19 @@ app.post('/login', (req, res) => {
|
|||||||
expiresIn: '24h'
|
expiresIn: '24h'
|
||||||
});
|
});
|
||||||
|
|
||||||
// Determine if request is from localhost
|
// Determine if request is from local network
|
||||||
const isLocalhost = req.headers.origin?.includes('localhost');
|
const isLocalNetwork = req.headers.origin?.includes('192.168.1.') || req.headers.origin?.includes('localhost');
|
||||||
|
|
||||||
const cookieOptions = {
|
const cookieOptions = {
|
||||||
httpOnly: true,
|
httpOnly: true,
|
||||||
secure: !isLocalhost,
|
secure: !isLocalNetwork, // Only use secure for non-local requests
|
||||||
sameSite: isLocalhost ? 'lax' : 'none',
|
sameSite: isLocalNetwork ? 'lax' : 'none',
|
||||||
path: '/',
|
path: '/',
|
||||||
maxAge: 24 * 60 * 60 * 1000 // 24 hours
|
maxAge: 24 * 60 * 60 * 1000 // 24 hours
|
||||||
};
|
};
|
||||||
|
|
||||||
// Add domain only for production
|
// Only set domain for production
|
||||||
if (!isLocalhost) {
|
if (!isLocalNetwork) {
|
||||||
cookieOptions.domain = '.kent.pw';
|
cookieOptions.domain = '.kent.pw';
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -163,13 +169,13 @@ app.get('/check', (req, res) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
app.post('/logout', (req, res) => {
|
app.post('/logout', (req, res) => {
|
||||||
const isLocalhost = req.headers.origin?.includes('localhost');
|
const isLocalNetwork = req.headers.origin?.includes('192.168.1.') || req.headers.origin?.includes('localhost');
|
||||||
const cookieOptions = {
|
const cookieOptions = {
|
||||||
httpOnly: true,
|
httpOnly: true,
|
||||||
secure: !isLocalhost,
|
secure: !isLocalNetwork,
|
||||||
sameSite: isLocalhost ? 'lax' : 'none',
|
sameSite: isLocalNetwork ? 'lax' : 'none',
|
||||||
path: '/',
|
path: '/',
|
||||||
domain: isLocalhost ? undefined : '.kent.pw'
|
domain: isLocalNetwork ? undefined : '.kent.pw'
|
||||||
};
|
};
|
||||||
|
|
||||||
console.log('Clearing cookie with options:', cookieOptions);
|
console.log('Clearing cookie with options:', cookieOptions);
|
||||||
|
|||||||
@@ -72,8 +72,10 @@ export default defineConfig(({ mode }) => {
|
|||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
secure: true,
|
secure: true,
|
||||||
cookieDomainRewrite: {
|
cookieDomainRewrite: {
|
||||||
"dashboard.kent.pw": "localhost",
|
"dashboard.kent.pw": "",
|
||||||
},
|
},
|
||||||
|
hostRewrite: true,
|
||||||
|
autoRewrite: true,
|
||||||
configure: (proxy, _options) => {
|
configure: (proxy, _options) => {
|
||||||
proxy.on("error", (err, req, res) => {
|
proxy.on("error", (err, req, res) => {
|
||||||
console.log("Auth proxy error:", err);
|
console.log("Auth proxy error:", err);
|
||||||
@@ -85,13 +87,29 @@ export default defineConfig(({ mode }) => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
proxy.on("proxyReq", (proxyReq, req, _res) => {
|
proxy.on("proxyReq", (proxyReq, req, _res) => {
|
||||||
|
proxyReq.setHeader('X-Forwarded-Host', req.headers.host);
|
||||||
|
proxyReq.setHeader('X-Forwarded-Proto', 'http');
|
||||||
|
|
||||||
|
const origin = req.headers.origin || `http://${req.headers.host}`;
|
||||||
|
proxyReq.setHeader('origin', origin);
|
||||||
|
|
||||||
console.log("Outgoing auth request:", {
|
console.log("Outgoing auth request:", {
|
||||||
method: req.method,
|
method: req.method,
|
||||||
url: req.url,
|
url: req.url,
|
||||||
headers: req.headers,
|
headers: proxyReq.getHeaders(),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
proxy.on("proxyRes", (proxyRes, req, _res) => {
|
proxy.on("proxyRes", (proxyRes, req, res) => {
|
||||||
|
const cookies = proxyRes.headers['set-cookie'];
|
||||||
|
if (cookies) {
|
||||||
|
proxyRes.headers['set-cookie'] = cookies.map(cookie =>
|
||||||
|
cookie
|
||||||
|
.replace(/Domain=[^;]+;/g, '')
|
||||||
|
.replace(/Secure;/g, '')
|
||||||
|
.replace(/SameSite=None/g, 'SameSite=Lax')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
console.log("Auth proxy response:", {
|
console.log("Auth proxy response:", {
|
||||||
statusCode: proxyRes.statusCode,
|
statusCode: proxyRes.statusCode,
|
||||||
url: req.url,
|
url: req.url,
|
||||||
|
|||||||
Reference in New Issue
Block a user