Advertisement
Guest User

backend

a guest
Dec 22nd, 2018
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.44 KB | None | 0 0
  1. const http = require('http');
  2. const express = require('express');
  3. const socketIO = require('socket.io');
  4. const bodyParser = require('body-parser');
  5. const multer = require('multer');
  6. const consolidate = require('consolidate');
  7. const session = require('express-session');
  8.  
  9. const app = express();
  10. const server = http.Server(app);
  11. const io = socketIO(server);
  12. app.use(session({
  13. secret: 'zazagelovidzudzua', resave: false,
  14. saveUninitialized: true
  15. }))
  16. app.engine('html', consolidate.mustache);
  17. app.set('view engine', 'html');
  18. app.set('views', __dirname + '/views');
  19.  
  20. app.use(bodyParser.json());
  21. app.use(bodyParser.urlencoded({ extended: true }));
  22. app.use(multer().array());
  23. app.use(express.static('public'));
  24.  
  25. const mongoose = require('mongoose');
  26. const connectionUri = 'mongodb://localhost/my_database';
  27. mongoose.Promise = global.Promise;
  28.  
  29. mongoose
  30. .connect(connectionUri, { useNewUrlParser: true })
  31. .then(() => {
  32. console.log('Connection to database established');
  33. })
  34. .catch(error => {
  35. console.error('MongoDB connection error:', error.message);
  36. process.exit(-1);
  37. });
  38.  
  39.  
  40. const Schema = mongoose.Schema;
  41. const UserSchema = new Schema({
  42.  
  43. username: String,
  44. password: String,
  45. email: String,
  46.  
  47. });
  48.  
  49.  
  50.  
  51. const User = mongoose.model('User', UserSchema);
  52.  
  53.  
  54.  
  55. app.get('/', (req, res) => {
  56. res.render('mainpage');
  57. });
  58.  
  59. app.get('/reg', (req, res) => {
  60. res.render('reg');
  61. });
  62.  
  63.  
  64.  
  65. app.post(
  66. '/reeg',
  67. async (req, res) => {
  68. try {
  69. const username = req.body.username
  70. const password = req.body.password
  71. const email = req.body.email
  72.  
  73. const user = await User.create({ username, password, email });
  74.  
  75. console.log('Created user:', user)
  76.  
  77. res.sendFile(__dirname + '/views/mainpage.html')
  78.  
  79. }
  80. catch (error) {
  81. res.status(500).send(error.message);
  82. }
  83. });
  84.  
  85.  
  86. app.post('/login', async (req, res) => {
  87. try {
  88. const {username, password} = req.body;
  89. const user = await User.findOne({username}).lean();
  90.  
  91.  
  92. if (!user) {
  93. return res.status(404).send({
  94. message: 'user is not registered'
  95. });
  96. }
  97.  
  98.  
  99. if (user.password !== password) {
  100. return res.status(403).send({
  101. message: 'user password invalid'
  102. });
  103. }
  104. req.session.user = user;
  105.  
  106. const redirectTo = '/dash';
  107.  
  108. if (
  109. req.is('application/json') // request content type is json
  110. || // or
  111. req.xhr // is ajax
  112. ) {
  113. // respond with json response
  114. return res.status(200).status({redirectTo});
  115. }
  116.  
  117. // not ajax request
  118. // then respond redirect header
  119. res.redirect(redirectTo);
  120. }
  121. catch (error) {
  122. res.status(500).send({
  123. message: error.message
  124. });
  125. }
  126. });
  127. app.get('/dash',
  128. async (req, res) => {
  129. try{
  130. if (!req.session.user) {
  131. res.status(401).send('login first please!')
  132. }
  133.  
  134. res.status(200)
  135.  
  136. res.send('Hi ' + req.session.user.username)
  137. }catch(error){
  138. console.log(error.message)
  139. return res.status(500)
  140. }
  141. })
  142.  
  143.  
  144. server.listen('8080');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement