diff options
| author | Jan Tuomi <jan.tuomi@eficode.com> | 2020-04-26 19:24:57 +0300 |
|---|---|---|
| committer | Jan Tuomi <jan.tuomi@eficode.com> | 2020-04-26 19:24:57 +0300 |
| commit | 7e057c8a56b51bdd7e95b3919d013ac0edd481e9 (patch) | |
| tree | afaeed8947e201102b80547f5105725a6fe383ce /login-service/src/index.js | |
| parent | 449ebe5164ad9d2ba1e7d61bbae8e4101b703490 (diff) | |
Get user&pass and google auth working
Diffstat (limited to 'login-service/src/index.js')
| -rw-r--r-- | login-service/src/index.js | 35 |
1 files changed, 32 insertions, 3 deletions
diff --git a/login-service/src/index.js b/login-service/src/index.js index 0de5931..248c269 100644 --- a/login-service/src/index.js +++ b/login-service/src/index.js @@ -1,4 +1,5 @@ const express = require('express'); +const axios = require('axios'); var jwt = require('jsonwebtoken'); const app = express(); @@ -13,7 +14,17 @@ const port = 4000; const JWT_SECRET = process.env.JWT_SECRET; -const loginWithUsernameAndPassword = (username, password) => { +const authorizeUserNamePassword = (username, password) => { + // TODO + const now = Math.round(new Date().getTime() / 1000); + + return { + role: 'todo_user', + exp: now + 30 * 60, // 30 minutes + }; +}; + +const authorizeGoogle = googleUser => { // TODO const now = Math.round(new Date().getTime() / 1000); @@ -24,12 +35,30 @@ const loginWithUsernameAndPassword = (username, password) => { }; app.get('/', (req, res) => res.send('Login service API')); -app.post('/login', (req, res) => { + +// Username + Password login +app.post('/login/userpass', (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 }); + res.json({ jwt: signedJWT, displayName: username }); +}); + +// Google access token login +app.post('/login/google', async (req, res) => { + const payload = req.body; + const { accessToken } = payload; + try { + const resp = await axios.get(`https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=${accessToken}`); + const payload = resp.data; + const { email } = payload; + const claims = authorizeGoogle(payload); + const signedJWT = jwt.sign(claims, JWT_SECRET); + res.json({ jwt: signedJWT, displayName: email }); + } catch (err) { + console.error(err); + } }); app.listen(port, () => console.log(`Listening at http://localhost:${port}`)); |
