This update required changing the configuration and test directory structure. Some tests needed to be amended as well to compensate for new Cypress APIs.
141 lines
2.8 KiB
JavaScript
141 lines
2.8 KiB
JavaScript
// from https://github.com/pedroetb/node-oauth2-server-example
|
|
|
|
let config = {
|
|
clients: [{
|
|
clientId: "application",
|
|
clientSecret: "secret"
|
|
}],
|
|
confidentialClients: [{
|
|
clientId: "confidentialApplication",
|
|
clientSecret: "topSecret"
|
|
}],
|
|
tokens: [],
|
|
users: [{
|
|
id: "123",
|
|
username: "swagger",
|
|
password: "password"
|
|
}]
|
|
}
|
|
|
|
/**
|
|
* Dump the memory storage content (for debug).
|
|
*/
|
|
|
|
let dump = function () {
|
|
|
|
console.log("clients", config.clients)
|
|
console.log("confidentialClients", config.confidentialClients)
|
|
console.log("tokens", config.tokens)
|
|
console.log("users", config.users)
|
|
}
|
|
|
|
/*
|
|
* Methods used by all grant types.
|
|
*/
|
|
|
|
let getAccessToken = function (bearerToken, callback) {
|
|
|
|
let tokens = config.tokens.filter(function (token) {
|
|
|
|
return token.accessToken === bearerToken
|
|
})
|
|
|
|
return callback(false, tokens[0])
|
|
}
|
|
|
|
let getClient = function (clientId, clientSecret, callback) {
|
|
|
|
let clients = config.clients.filter(function (client) {
|
|
|
|
return client.clientId === clientId && client.clientSecret === clientSecret
|
|
})
|
|
|
|
let confidentialClients = config.confidentialClients.filter(function (client) {
|
|
|
|
return client.clientId === clientId && client.clientSecret === clientSecret
|
|
})
|
|
|
|
callback(false, clients[0] || confidentialClients[0])
|
|
}
|
|
|
|
let grantTypeAllowed = function (clientId, grantType, callback) {
|
|
|
|
let clientsSource,
|
|
clients = []
|
|
|
|
if (grantType === "password") {
|
|
clientsSource = config.clients
|
|
} else if (grantType === "client_credentials") {
|
|
clientsSource = config.confidentialClients
|
|
}
|
|
|
|
if (clientsSource) {
|
|
clients = clientsSource.filter(function (client) {
|
|
|
|
return client.clientId === clientId
|
|
})
|
|
}
|
|
|
|
callback(false, clients.length)
|
|
}
|
|
|
|
let saveAccessToken = function (accessToken, clientId, expires, user, callback) {
|
|
|
|
config.tokens.push({
|
|
accessToken: accessToken,
|
|
expires: expires,
|
|
clientId: clientId,
|
|
user: user
|
|
})
|
|
|
|
callback(false)
|
|
}
|
|
|
|
/*
|
|
* Method used only by password grant type.
|
|
*/
|
|
|
|
let getUser = function (username, password, callback) {
|
|
|
|
let users = config.users.filter(function (user) {
|
|
|
|
return user.username === username && user.password === password
|
|
})
|
|
|
|
callback(false, users[0])
|
|
}
|
|
|
|
/*
|
|
* Method used only by client_credentials grant type.
|
|
*/
|
|
|
|
let getUserFromClient = function (clientId, clientSecret, callback) {
|
|
|
|
let clients = config.confidentialClients.filter(function (client) {
|
|
|
|
return client.clientId === clientId && client.clientSecret === clientSecret
|
|
})
|
|
|
|
let user
|
|
|
|
if (clients.length) {
|
|
user = {
|
|
username: clientId
|
|
}
|
|
}
|
|
|
|
callback(false, user)
|
|
}
|
|
|
|
/**
|
|
* Export model definition object.
|
|
*/
|
|
|
|
module.exports = {
|
|
getAccessToken: getAccessToken,
|
|
getClient: getClient,
|
|
grantTypeAllowed: grantTypeAllowed,
|
|
saveAccessToken: saveAccessToken,
|
|
getUser: getUser,
|
|
getUserFromClient: getUserFromClient
|
|
} |