test.js 2.62 KiB
const express = require('express');
const oauth2orize = require('oauth2orize');
const passport = require('passport');
const ClientPasswordStrategy = require('passport-oauth2-client-password');
const testApp = express();
const libs = `${process.cwd()}/libs`;
const Client = require(`${libs}/models/client`);
const User = require(`${libs}/models/user`)
var server = oauth2orize.createServer();
passport.use(new ClientPasswordStrategy(
function(client_id, client_secret, done) {
Client.findOne({where: {client_id: client_id}
}).then(function(err, client) {
if(err){
console.log("Erro de requisicao");
return done(err);
}
if(!client){
console.log("Erro de cliente");
return done(null, false);
}
if (client.client_secret !== client_secret){
console.log("Erro de geracao Chave Secreta");
return done(null, false);
}
console.log("Tudo certo nesse use");
return done(null, client);
})
}
));
let generateTokens = (userId, clientId, done) => {
// curries in `done` callback so we don't need to pass it
let refreshTokenValue;
let token;
let tokenValue;
RefreshToken.destroy({where:{"user_id": userId, "client_id": clientId}});
AccessToken.destroy({where:{"user_id": userId, "client_id": clientId}});
tokenValue = crypto.randomBytes(32).toString('hex');
refreshTokenValue = crypto.randomBytes(32).toString('hex');
AccessToken.create({
user_id:userId,
client_id:clientId,
token:tokenValue
})
let refreshed_token = refreshTokenValue;
RefreshToken.create({
user_id:userId,
client_id:clientId,
token:refreshed_token
})
token.save((err) => {
if (err) {
log.error(err);
return done(err);
}
done(null, tokenValue, refreshTokenValue, {
'expires_in': config.security.tokenLife
});
})
};
let entrar = function(client, username, done) {
User.findOne({
where: {email:username}
}).then(function(user) {
console.log(user)
if(user == null){
return done(null, false);
}
if(user.dataValues.origin != client.client_secret){
console.log("Erro de client_secret");
return done(null, false);
}
log.info(`Gerando token para usuário ${user.name}`);
generateTokens(user._id, client._id, done);
}).catch(function(error) {
return done(error);
});
};
testApp.post('/', (req, res, next) =>{
entrar(req.body, req.body.username);
});
module.exports = testApp;