Skip to content
Snippets Groups Projects
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;