123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- var express = require('express');
- var path = require('path');
- var logger = require('morgan');
- var compression = require('compression');
- var methodOverride = require('method-override');
- var session = require('express-session');
- var flash = require('express-flash');
- var bodyParser = require('body-parser');
- var expressValidator = require('express-validator');
- var dotenv = require('dotenv');
- var nunjucks = require('nunjucks');
- var markdown = require('nunjucks-markdown');
- var marked = require('marked');
- var mongoose = require('mongoose');
- var passport = require('passport');
- // Load environment variables from .env file
- dotenv.load();
- // Controllers
- var HomeController = require('./controllers/home');
- var userController = require('./controllers/user');
- var contactController = require('./controllers/contact');
- var watchController = require('./controllers/watch');
- var uploadController = require('./controllers/upload');
- var pagesController = require('./controllers/pages');
- var listController = require('./controllers/list');
- var profileController = require('./controllers/profile');
- // Passport OAuth strategies
- require('./config/passport');
- var app = express();
- mongoose.connect(process.env.DB_PATH);
- mongoose.connection.on('error', function() {
- console.log('MongoDB Connection Error. Please make sure that MongoDB is running.');
- process.exit(1);
- });
- // view engine setup
- var njks = nunjucks.configure('views', {
- autoescape: true,
- express: app,
- marked: true
- });
- markdown.register(njks, marked);
- app.set('view engine', 'html');
- app.set('port', process.env.PORT || 3999);
- app.use(compression());
- app.use(logger('dev'));
- app.use(bodyParser.json());
- app.use(bodyParser.urlencoded({ extended: false }));
- app.use(expressValidator());
- app.use(methodOverride('_method'));
- app.use(session({ secret: process.env.SESSION_SECRET, resave: true, saveUninitialized: true }));
- app.use(flash());
- app.use(passport.initialize());
- app.use(passport.session());
- app.use(function(req, res, next) {
- res.locals.user = req.user;
- next();
- });
- app.use(express.static(path.join(__dirname, 'public')));
- // routers
- // Home
- app.get('/', HomeController.index);
- // Pages
- app.get('/sobre', pagesController.sobreController);
- app.get('/apps', pagesController.appsController);
- app.get('/privacy', pagesController.privacyController);
- app.get('/tos', pagesController.tosController);
- app.get('/dmca', pagesController.dmcaController);
- app.get('/faq', pagesController.faqController);
- app.get('/press', pagesController.pressController);
- app.get('/uploader', userController.ensureAuthenticated, pagesController.uploaderController);
- // Watch
- app.get('/assistir/:permalink', watchController.watchGet);
- app.get('/t/:tags', watchController.tagsGet);
- app.get('/novo', userController.ensureAuthenticated, watchController.newWatchGet);
- app.post('/novo', userController.ensureAuthenticated, watchController.newWatchPost);
- // Watch edit
- app.get('/edit/:_id', userController.ensureAuthenticated, watchController.watchEdit);
- app.post('/edit/:_id', userController.ensureAuthenticated, watchController.watchPut);
- //upload
- app.post('/upload', userController.ensureAuthenticated, uploadController.uploadImage);
- uploadDir = path.join(__dirname, '/public/media/');
- // Contato
- app.get('/contato', contactController.contactGet);
- app.post('/contato', contactController.contactPost);
- //list
- app.get('/list', listController.index);
- //ProfileNavigation
- app.get('/u/:username', profileController.profileGet);
- // Account
- app.get('/account', userController.ensureAuthenticated, userController.accountGet);
- app.put('/account', userController.ensureAuthenticated, userController.accountPut);
- app.delete('/account', userController.ensureAuthenticated, userController.accountDelete);
- app.get('/signup', userController.signupGet);
- app.post('/signup', userController.signupPost);
- app.get('/login', userController.loginGet);
- app.post('/login', userController.loginPost);
- app.get('/forgot', userController.forgotGet);
- app.post('/forgot', userController.forgotPost);
- app.get('/reset/:token', userController.resetGet);
- app.post('/reset/:token', userController.resetPost);
- app.get('/logout', userController.logout);
- app.get('/unlink/:provider', userController.ensureAuthenticated, userController.unlink);
- app.get('/auth/facebook', passport.authenticate('facebook', { scope: ['email', 'user_location'] }));
- app.get('/auth/facebook/callback', passport.authenticate('facebook', { successRedirect: '/', failureRedirect: '/login' }));
- app.get('/auth/twitter', passport.authenticate('twitter'));
- app.get('/auth/twitter/callback', passport.authenticate('twitter', { successRedirect: '/', failureRedirect: '/login' }));
- app.get('/auth/github', passport.authenticate('github', { scope: [ 'user:email profile repo' ] }));
- app.get('/auth/github/callback', passport.authenticate('github', { successRedirect: '/', failureRedirect: '/login' }));
- // Production error handler
- if (app.get('env') === 'production') {
- app.use(function(err, req, res, next) {
- console.error(err.stack);
- res.sendStatus(err.status || 500);
- });
- }
- app.listen(app.get('port'), function() {
- console.log('Express server listening on port ' + app.get('port'));
- });
- module.exports = app;
|