mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-03 23:00:14 -05:00
Added runnable example w/ mock membersApi
This commit is contained in:
parent
2e40e253d6
commit
5c9ed65b06
1 changed files with 79 additions and 0 deletions
79
ghost/members-ssr/example.js
Normal file
79
ghost/members-ssr/example.js
Normal file
|
@ -0,0 +1,79 @@
|
|||
const jwt = require('jsonwebtoken');
|
||||
const keypair = require('keypair');
|
||||
const MembersSSR = require('./');
|
||||
const keys = keypair();
|
||||
|
||||
const membersApiInstance = {
|
||||
getMember() {
|
||||
return Promise.resolve({name: 'egg'});
|
||||
},
|
||||
getPublicConfig() {
|
||||
return Promise.resolve({
|
||||
issuer: 'example.com',
|
||||
publicKey: keys.public
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const {
|
||||
exchangeTokenForSession,
|
||||
getMemberDataFromSession
|
||||
} = MembersSSR({
|
||||
cookieSecure: false, // Secure cookie (default)
|
||||
cookieKeys: ['some-coole-secret'], // Key to sign cookie with
|
||||
membersApi: membersApiInstance // Used to fetch data and verify tokens
|
||||
});
|
||||
|
||||
const server = require('http').createServer((req, res) => {
|
||||
if (req.method.toLowerCase() === 'post') {
|
||||
exchangeTokenForSession(req, res).then(() => {
|
||||
res.writeHead(200);
|
||||
res.end();
|
||||
}).catch((err) => {
|
||||
res.writeHead(err.code);
|
||||
res.end(err.message);
|
||||
});
|
||||
} else {
|
||||
getMemberDataFromSession(req, res).then((member) => {
|
||||
res.writeHead(200, {
|
||||
'Content-Type': 'application/json'
|
||||
});
|
||||
res.end(JSON.stringify(member));
|
||||
}).catch((err) => {
|
||||
res.writeHead(err.code);
|
||||
res.end(err.message);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
server.listen(0, '127.0.0.1', () => {
|
||||
const {address, port} = server.address();
|
||||
const url = `http://${address}:${port}`;
|
||||
const token = jwt.sign({}, keys.private, {
|
||||
issuer: 'example.com',
|
||||
audience: 'members-ssr',
|
||||
algorithm: 'RS512'
|
||||
});
|
||||
|
||||
require('http').request(url, {
|
||||
method: 'post',
|
||||
headers: {
|
||||
'content-type': 'text'
|
||||
}
|
||||
}, (res) => {
|
||||
require('http').request(url, {
|
||||
headers: {
|
||||
cookie: res.headers['set-cookie'].join('; ')
|
||||
}
|
||||
}, (res) => {
|
||||
res.pipe(process.stdout);
|
||||
res.on('close', () => {
|
||||
server.close();
|
||||
});
|
||||
}).end();
|
||||
}).end(token);
|
||||
});
|
||||
|
||||
server.on('close', () => {
|
||||
process.exit(1);
|
||||
});
|
Loading…
Add table
Reference in a new issue