forked from OpenNeo/impress
Fix neopass-server
to respond correctly to /token
requests
Hey nice, now we can actually get a round-trip auth success! This gets us to the `Devise::OmniauthCallbacksController#neopass` success method, so now we need to add our logic to actually login/signup!
This commit is contained in:
parent
f483722af4
commit
21bc4bcadc
1 changed files with 23 additions and 8 deletions
|
@ -41,10 +41,10 @@ async function startBackingServer(port) {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function startMainServer(port) {
|
async function startMainServer(port) {
|
||||||
const fetch = await import("node-fetch");
|
const fetch = (await import("node-fetch")).default;
|
||||||
|
|
||||||
const app = express();
|
const app = express();
|
||||||
app.use(express.raw());
|
app.use(express.text({ type: "*/*" }));
|
||||||
|
|
||||||
app.get("/", (req, res) => res.end("NeoPass development server for DTI!"));
|
app.get("/", (req, res) => res.end("NeoPass development server for DTI!"));
|
||||||
|
|
||||||
|
@ -53,12 +53,27 @@ async function startMainServer(port) {
|
||||||
res.redirect(`http://localhost:8686/authorize?${query}`);
|
res.redirect(`http://localhost:8686/authorize?${query}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
app.post("/oauth2/token", (req, res) => {
|
app.post("/oauth2/token", async (req, res) => {
|
||||||
// For POST requests, the HTTP spec doesn't allow a redirect to a POST,
|
try {
|
||||||
// so we proxy the request instead.
|
// For POST requests, the HTTP spec doesn't allow a redirect to a
|
||||||
// TODO: Actually do that! For now we just log it.
|
// POST, so we proxy the request instead.
|
||||||
console.log(req.body);
|
const backingRes = await fetch("http://localhost:8686/token", {
|
||||||
res.end("owo");
|
method: "POST",
|
||||||
|
headers: {
|
||||||
|
"Content-Type": req.get("Content-Type"),
|
||||||
|
},
|
||||||
|
body: req.body,
|
||||||
|
});
|
||||||
|
if (!backingRes.ok) {
|
||||||
|
throw new Error(`backing server returned status ${res.status}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
res.set("Content-Type", backingRes.headers.get("Content-Type"));
|
||||||
|
return res.end(await backingRes.text());
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
return res.end(error.message);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
await new Promise((resolve) => app.listen(port, resolve));
|
await new Promise((resolve) => app.listen(port, resolve));
|
||||||
|
|
Loading…
Reference in a new issue