-
-
Save codecademydev/d82883cb462374f4297aec699cc56811 to your computer and use it in GitHub Desktop.
Codecademy export
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const express = require('express'); | |
const path = require('path'); | |
const OAuth2Server = require('oauth2-server'); | |
const app = express(); | |
app.use(express.json()); | |
app.use(express.urlencoded({extended: true})); | |
const PORT = 4001 | |
const oauth = new OAuth2Server({ | |
model: require("./model"), | |
allowBearerTokensInQueryString: true | |
}) | |
const authenticateRequest = (req, res, next) => { | |
let request = new OAuth2Server.Request(req); | |
let response = new OAuth2Server.Response(res) | |
return oauth.authenticate(request, response) | |
.then((token)=>{ | |
next() | |
}) | |
.catch((err) => { | |
res.sendFile(path.join(__dirname, 'public/error.html')) | |
}) | |
} | |
const obtainToken = (req, res) => { | |
let request = new OAuth2Server.Request(req); | |
let response = new OAuth2Server.Response(res); | |
return oauth.token(request, response) | |
.then((token) => { | |
res.json(token); | |
}) | |
.catch((err) => { | |
res.json(err); | |
}) | |
} | |
app.all('/auth', obtainToken); | |
app.get('/', (req, res)=>{ | |
res.sendFile(path.join(__dirname, 'public/home.html')); | |
}) | |
app.get('/login', (req, res)=>{ | |
res.sendFile(path.join(__dirname, 'public/login.html')); | |
}) | |
app.get('/public', (req, res)=>{ | |
res.sendFile(path.join(__dirname, 'public/allowed.html')); | |
}) | |
app.get('/secret', authenticateRequest, (req, res)=>{ | |
res.sendFile(path.join(__dirname, 'public/private.html')); | |
}) | |
app.listen(PORT, ()=>console.log(`Listening on port ${PORT}`)); | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module.exports = | |
{ | |
confidentialClients: [{ | |
clientId: 'codecademy', | |
clientSecret: 'codec@demy', | |
grants: [ | |
'client_credentials' | |
], | |
}], | |
tokens:[] | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const db = require('./db') | |
const getClient = (clientId, clientSecret) => { | |
let confidentialClients = db.confidentialClients.filter((client)=>{ | |
return client.clientId === clientId && client.clientSecret === clientSecret | |
}) | |
return confidentialClients[0] | |
} | |
const saveToken = (token, client, user) => { | |
token.client = { | |
id: client.clientId | |
} | |
token.user = { | |
username: user.username | |
} | |
db.tokens.push(token) | |
return token | |
} | |
const getUserFromClient = (client) => { | |
// return client | |
return {} | |
} | |
const getAccessToken = (accessToken) => { | |
let tokens = db.tokens.filter((savedToken)=>{ | |
return savedToken.accessToken === accessToken | |
}) | |
return tokens[0] | |
} | |
module.exports = { | |
getAccessToken: getAccessToken, | |
getClient: getClient, | |
getUserFromClient: getUserFromClient, | |
saveToken: saveToken | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment