Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*jshint node: true */
- var express = require('express');
- var app = express();
- var bodyParser = require('body-parser');
- var cookieParser = require('cookie-parser');
- var expressSession = require('express-session');
- var mongoose = require('mongoose');
- var util = require('util');
- var expressLayouts = require('express-ejs-layouts');
- var path = require('path');
- var less = require('less-middleware');
- // Passport.js
- var passport = require('passport');
- var passportLocal = require('passport-local');
- var passportHttp = require('passport-http');
- // Serwer HTTPS
- // openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out my.crt -keyout my.key
- var fs = require('fs');
- var https = require('https');
- var server = https.createServer({
- key: fs.readFileSync('./ssl/my.key'),
- cert: fs.readFileSync('./ssl/my.crt')
- }, app);
- var socketio = require("socket.io");
- var io = socketio.listen(server);
- var MemoryStore = require('connect/lib/middleware/session/memory');
- var session_store = new MemoryStore();
- // parametry aplikacji
- var port = process.env.PORT || 3000;
- var secret = process.env.APP_SECRET || '$sekretny $sekret';
- var configDB = require('./config/database');
- app.set('trust proxy', 1); // trust first proxy
- // Model Mongoose reprezentujący uzytkownika
- var User = require('./models/user');
- var Post = require('./models/post');
- mongoose.connect(configDB.url);
- var db = mongoose.connection;
- db.on('open', function () {
- console.log('Połączono z MongoDB!');
- });
- db.on('error', console.error.bind(console, 'MongoDb Error: '));
- app.set('view engine', 'ejs');
- app.use(less(path.join(__dirname, '/src'), {
- dest: path.join(__dirname, '/public')
- }));
- app.use(express.static(path.join(__dirname, 'public')));
- app.use(expressLayouts);
- app.set('layout', 'layouts/layout');
- app.use(bodyParser.urlencoded({
- extended: false
- }));
- app.use(cookieParser());
- app.use(expressSession({
- secret: secret,
- resave: true,
- saveUninitialized: false,
- store: session_store
- }));
- // Używamy Passport.js
- app.use(passport.initialize());
- app.use(passport.session());
- // Konfiguracja Passport.js
- var validateUser = function (username, password, done){
- User.findOne({username: username}, function (err, user) {
- if (err) { done(err); }
- if (user) {
- // if (user.password === HASH(password)) {
- if (user.password === password) {
- done(null, user);
- } else {
- done(null, null);
- }
- } else { done(null, null); }
- });
- };
- passport.use(new passportLocal.Strategy(validateUser));
- passport.use(new passportHttp.BasicStrategy(validateUser));
- passport.serializeUser(function (user, done) {
- done(null, user.id);
- });
- passport.deserializeUser(function (id, done) {
- User.findOne({"_id": id}, function (err, user) {
- if (err) { done(err); }
- if (user) {
- done(null, {
- id: user._id,
- name: user.name,
- surname: user.surname,
- username: user.username,
- password: user.password
- });
- } else {
- done({ msg: 'Nieznany ID' });
- }
- });
- });
- // Routing aplikacji
- app.get('/', function (req, res) {
- res.render('page/index', {
- isAuthenticated: req.isAuthenticated(),
- user: req.user
- });
- });
- // redirect nie zalogowanego
- app.use(function(req, res, next) {
- var url = req.url;
- if (req.user === undefined & (url != '/add' & url != '/login') ){
- res.redirect('/');
- }else{
- next();
- }
- });
- app.get('/post', function (req, res) {
- res.render('page/post', {
- isAuthenticated: req.isAuthenticated(),
- user: req.user
- });
- });
- app.get('/login', function (req, res) {
- res.render('account/login', {section:"Logowanie"});
- });
- app.post('/login', passport.authenticate('local'), function (req, res) {
- req.session.user = req.user;
- res.redirect('/');
- });
- app.get('/add', function (req, res) {
- res.render('account/reg', {section:"Rejestracja"});
- });
- app.post('/add', function (req, res) {
- var tmp = new User(req.body);
- tmp.save(function (err) {
- if (err) {
- res.redirect('/add');
- }else{
- res.redirect('/login');
- }
- });
- });
- app.get('/logout', function (req, res) {
- req.logout();
- res.redirect('/');
- });
- var connect = require("connect");
- io.sockets.on('connection',function(socket){
- console.info('New client connected (id=' + socket.id + ').');
- var cookie_string = socket.request.headers.cookie;
- var parsed_cookies = connect.utils.parseCookie(cookie_string);
- var connect_sid = parsed_cookies['connect.sid'].split(".")[0].split(":")[1];
- var session = session_store.sessions[connect_sid];
- if (connect_sid) {
- if(session_store.sessions[connect_sid] != undefined){
- console.log(JSON.parse(session_store.sessions[connect_sid]).user.name);
- }
- }
- //var ts = (connection.handshake.headers.cookie)['connect.sid']
- //var sessionID = tS.split(".")[0].split(":")[1];
- var clients = [];
- clients.push(socket);
- User.find({},function (err,user) {
- if (!err) {
- socket.emit('newMsg',user);
- }
- });
- socket.on('disconnect', function() {
- var index = clients.indexOf(socket);
- if (index != -1) {
- clients.splice(index, 1);
- console.info('Client gone (id=' + socket.id + ').');
- }
- });
- socket.on('sendMsg',function(data){
- User.find({},function (err,user) {
- if (!err) {
- io.sockets.emit('newMsg',user);
- }
- });
- });
- });
- // Uruchamiamy serwer HTTPS
- server.listen(port, function () {
- console.log('https://localhost:' + port);
- });
- /*
- var parent = new User({name:"edek2",username:"edek2",password:"edek2"});
- parent.save();
- User.findOne({username: 'edek2'}, function (err, user) {
- if (user) {
- console.log(user._id);
- parent = user;
- //parent = JSON.stringify(user);
- }
- });
- var child = new Post({content:"halo", owner:parent._id, author:parent._id});
- child.save()
- User.hello();
- res.json({'asd':'asd'});
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement