aboutsummaryrefslogtreecommitdiffstats
path: root/login-service/src/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'login-service/src/index.js')
-rw-r--r--login-service/src/index.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/login-service/src/index.js b/login-service/src/index.js
new file mode 100644
index 0000000..0de5931
--- /dev/null
+++ b/login-service/src/index.js
@@ -0,0 +1,35 @@
+const express = require('express');
+var jwt = require('jsonwebtoken');
+
+const app = express();
+app.use(express.json());
+app.use((req, res, next) => {
+ res.set('Access-Control-Allow-Origin', '*');
+ res.set('Access-Control-Allow-Headers', '*');
+ next();
+});
+
+const port = 4000;
+
+const JWT_SECRET = process.env.JWT_SECRET;
+
+const loginWithUsernameAndPassword = (username, password) => {
+ // TODO
+ const now = Math.round(new Date().getTime() / 1000);
+
+ return {
+ role: 'todo_user',
+ exp: now + 30 * 60, // 30 minutes
+ };
+};
+
+app.get('/', (req, res) => res.send('Login service API'));
+app.post('/login', (req, res) => {
+ const payload = req.body;
+ const { username, password } = payload;
+ const claims = loginWithUsernameAndPassword(username, password);
+ const signedJWT = jwt.sign(claims, JWT_SECRET);
+ res.json({ jwt: signedJWT });
+});
+
+app.listen(port, () => console.log(`Listening at http://localhost:${port}`));