// Hecemos requiere de las librerias utilizadas
var express = require("express");
var bodyParser = require("body-parser");
var User = require("./models/user").User; // De esta manera accedemos al objeto al momento de ser exportado
//var session = require("express-session"); // Guarda la sessiones en memoria
var CookieSession = require("cookie-session"); // Guarda la sessiones en memoria
var router_app = require("./routes_app");
var session_middleware = require("./middlewares/sessions");
var methosOverride = require("method-override");
var app = express();
app.use("/public",express.static("public"));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
// le decimos a express que utilize method-override para que interprete put en el navegador
app.use(methosOverride("_method"))
// instancia para iniciar session y guardarla
/*app.use(session({
secret: "123byuhbsdah12ub",
resave: false,
saveUninitialized: false
}));*/
app.use(CookieSession({
name: "session",
keys: ["llave-1", "llave-2"]
}));
//app.use(express.static("assets"));
// Hacemos referencias a todos los archivos jade
app.set("view engine","jade");
// Redericionamos a la index de la aplicación
app.get("/", function (req, res) {
console.log(req.session.user_id);
res.render("index");
});
// Redericionamos a la pagina de registro
app.get("/signup",function(req, res){
User.find(function(err,doc){
console.log(doc);
res.render("signup");
});
});
// Redericionamos a la pagina de login o inicio de session
app.get("/login",function(req, res){
res.render("login");
});
// Función para hacer registros de los usuarios en la base de datos por medio de metodo POST
app.post("/users",function(req, res){
var user = new User({
// Hacemos referencias a los campos tomados del formulario
email: req.body.email,
password: req.body.pass,
password_confirmation: req.body.password_confirmation,
username: req.body.username
});
// Promise _ nuevo en javascript
// SAVE: Para guardar datos en base de datos
user.save().then(function(us){
// SEND: Para enviar cadena de texto
res.send("Guardamos el Usuario exitosamente");
},function(err){
if (err){
console.log(String(err));
res.send("No Pudimos Guardar la información");
}
});
});
// Metodo FIND()
app.post("/sessions", function(req, res){
// El primer parametros que pasamos es el query y el segundo son los campos que nos quiere que
// nos devuelva del socumenro que estamos extrayendo y despues pasamos un callback
// findID
/*user.findId("5980f68b8f9d2e2004f76a0d", function(err, docs){
console.log(docs);
})*/
// FINDONE: Solo trae un documento de la basde de datos
User.findOne({email:req.body.email, password:req.body.pass },function(err, user){
req.session.user_id = user._id;
res.redirect("/app");
});
});
// npm install express-session --save => para el manejo de sesiones en express
app.use("/app",session_middleware);
app.use("/app",router_app);
app.listen(8080);