Guest User

Untitled

a guest
Dec 13th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.35 KB | None | 0 0
  1. //server.js
  2. var express = require('express');
  3. var bodyParser = require('body-parser');
  4. var cookieParser = require('cookie-parser');
  5. var session = require('express-session');
  6. var morgan = require('morgan');
  7. var User = require('./models/user');
  8.  
  9. // invoke an instance of express application.
  10. var app = express();
  11.  
  12. // set our application port
  13. app.set('port', 9000);
  14.  
  15. // set morgan to log info about our requests for
  16. development use.
  17. app.use(morgan('dev'));
  18.  
  19. // initialize body-parser to parse incoming parameters
  20. requests to req.body
  21. app.use(bodyParser.urlencoded({ extended: true }));
  22.  
  23. // initialize cookie-parser to allow us access the
  24. cookies stored in the browser.
  25. app.use(cookieParser());
  26.  
  27. // initialize express-session to allow us track the
  28. logged-in user across sessions.
  29. app.use(session({
  30. key: 'user_sid',
  31. secret: 'somerandonstuffs',
  32. resave: false,
  33. saveUninitialized: false,
  34. cookie: {
  35. expires: 600000
  36. }
  37. }));
  38.  
  39.  
  40. // This middleware will check if user's cookie is still
  41. saved in browser and user is not set, then automatically
  42. log the user out.
  43. // This usually happens when you stop your express
  44. server after login, your cookie still remains saved in
  45. the browser.
  46. app.use((req, res, next) => {
  47. if (req.cookies.user_sid && !req.session.user) {
  48. res.clearCookie('user_sid');
  49. }
  50. next();
  51. });
  52.  
  53.  
  54. // middleware function to check for logged-in users
  55. var sessionChecker = (req, res, next) => {
  56. if (req.session.user && req.cookies.user_sid) {
  57. res.redirect('/dashboard');
  58. } else {
  59. next();
  60. }
  61. };
  62.  
  63.  
  64. // route for Home-Page
  65. app.get('/', sessionChecker, (req, res) => {
  66. res.redirect('/login');
  67. });
  68.  
  69.  
  70. // route for user signup
  71. app.route('/signup')
  72. .get(sessionChecker, (req, res) => {
  73. res.sendFile(__dirname + '/public/signup.html');
  74. })
  75. .post((req, res) => {
  76. User.create({
  77. username: req.body.username,
  78. email: req.body.email,
  79. password: req.body.password
  80. })
  81. .then(user => {
  82. req.session.user = user.dataValues;
  83. res.redirect('/dashboard');
  84. })
  85. .catch(error => {
  86. res.redirect('/signup');
  87. });
  88. });
  89.  
  90.  
  91. // route for user Login
  92. app.route('/login')
  93. .get(sessionChecker, (req, res) => {
  94. res.sendFile(__dirname + '/public/login.html');
  95. })
  96. .post((req, res) => {
  97. var username = req.body.username,
  98. password = req.body.password;
  99.  
  100.  
  101. User.findOne({ where: { username: username }
  102. }).then(function (user) {
  103. if (!!uuser) {
  104. res.redirect('/dashboard`');
  105. } else if (!user.validPassword(password)) {
  106. res.redirect('/dashboard');
  107. }
  108. else {
  109. req.session.user = user.dataValues;
  110. res.redirect('/dashboard');
  111. }
  112. });
  113. });
  114.  
  115.  
  116. // route for user's dashboard
  117. app.get('/dashboard', (req, res) => {
  118. if (req.session.user && req.cookies.user_sid) {
  119. res.sendFile(__dirname +
  120. '/public/dashboard.html');
  121. } else {
  122. res.redirect('/login');
  123. }
  124. });
  125.  
  126. app.get('/helloworld', (req, res) => {
  127. if (req.session.user && req.cookies.user_sid) {
  128. res.sendFile(__dirname +
  129. '/public/helloworld.html');
  130. } else {
  131. res.redirect('/login');
  132. }
  133. });
  134.  
  135.  
  136. // route for user logout
  137. app.get('/logout', (req, res) => {
  138. if (req.session.user && req.cookies.user_sid) {
  139. res.clearCookie('user_sid');
  140. res.redirect('/');
  141. } else {
  142. res.redirect('/login');
  143. }
  144. });
  145.  
  146.  
  147. // route for handling 404 requests(unavailable routes)
  148. app.use(function (req, res, next) {
  149. res.status(404).send("Sorry can't find that!")
  150. });
  151.  
  152.  
  153. // start the express server
  154. app.listen(app.get('port'), () => console.log(`App
  155. started on port ${app.get('port')}`));
  156.  
  157. //user.js
  158. var Sequelize = require('sequelize');
  159. var bcrypt = require('bcrypt');
  160.  
  161.  
  162. //create sequelize instance with local database
  163. var sequelize = new
  164.  
  165. Sequelize('mysql://root:root@localhost:8889/authsystem');
  166.  
  167. // setup User model and its fields.
  168. var User = sequelize.define('users', {
  169. username: {
  170. type: Sequelize.STRING,
  171. unique: true,
  172. allowNull: false
  173. },
  174. email: {
  175. type: Sequelize.STRING,
  176. unique: true,
  177. allowNull: false
  178. },
  179. password: {
  180. type: Sequelize.STRING,
  181. allowNull: false
  182. }
  183. }, {
  184. hooks: {
  185. beforeCreate: (user) => {
  186. const salt = bcrypt.genSaltSync();
  187. user.password =
  188. bcrypt.hashSync(user.password, salt);
  189. }
  190. },
  191. instanceMethods: {
  192. validPassword: function(password) {
  193. return bcrypt.compareSync(password,
  194. this.password);
  195. }
  196. }
  197. });
  198.  
  199. // create all the defined tables in the
  200. specified database.
  201. sequelize.sync()
  202. .then(() => console.log('users table has
  203. been successfully created, if one doesn't
  204. exist'))
  205. .catch(error => console.log('This error
  206. occured', error));
  207.  
  208. // export User model for use in other files.
  209. module.exports = User;
  210.  
  211. //login.html
  212.  
  213. <html>
  214. <head>
  215. <title>Login Here</title>
  216. <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
  217. </head>
  218. <body class="container">
  219. <div class="page-header">
  220. <h1>Simple Auth-System</h1>
  221. </div>
  222.  
  223. <nav class="navbar navbar-default">
  224. <div class="container-fluid">
  225. <!-- Collect the nav links, forms, and other content for toggling -->
  226. <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
  227. <ul class="nav navbar-nav">
  228. <li><a href="/">Home</a></li>
  229. <li><a href="/signup">Sign Up</a></li>
  230. <li><a href="/dashboard">Dashboard</a></li>
  231. </ul>
  232.  
  233. <ul class="nav navbar-nav navbar-right">
  234. <li><a href="/login">Log In</a></li>
  235. <li><a href="/logout">Log Out</a></li>
  236. <li><a href="/helloworld">hello world</a></li>
  237.  
  238. </ul>
  239. </div><!-- /.navbar-collapse -->
  240. </div><!-- /.container-fluid -->
  241. </nav>
  242.  
  243. <div class="container row">
  244. <div class="jumbotron col-sm-4 pull-center">
  245. <form action="/login" method="post">
  246. <div>
  247. <label>Username:</label>
  248. <input type="text" name="username"/>
  249. </div>
  250. <div>
  251. <label>Password:</label>
  252. <input type="password" name="password"/>
  253. </div>
  254. <div>
  255. <input class="btn btn-primary" type="submit" value="Log In" onclick="login()"/>
  256. <script>
  257. function login(){
  258. };
  259. console.log(login);
  260. </script>
  261. </div>
  262. </form>
  263. </div>
  264. </div>
  265. </body>
  266. </html>
  267.  
  268. //signup.html
  269.  
  270. <html>
  271. <head>
  272. <title>Login Here</title>
  273. <link rel="stylesheet"
  274.  
  275.  
  276.  
  277.  
  278.  
  279. href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"
  280. integrity="sha384-
  281. BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u"
  282. crossorigin="anonymous">
  283. </head>
  284. <body class="container">
  285. <div class="page-header">
  286. <h1>Simple Auth-System</h1>
  287. </div>
  288.  
  289. <nav class="navbar navbar-default">
  290. <div class="container-fluid">
  291. <!-- Collect the nav links, forms, and other
  292. content for toggling -->
  293. <div class="collapse navbar-collapse" id="bs-
  294. example-navbar-collapse-1">
  295. <ul class="nav navbar-nav">
  296. <li><a href="/">Home</a></li>
  297. <li><a href="/signup">Sign Up</a></li>
  298. <li><a href="/dashboard">Dashboard</a>
  299. </li>
  300. </ul>
  301.  
  302. <ul class="nav navbar-nav navbar-right">
  303. <li><a href="/login">Log In</a></li>
  304. <li><a href="/logout">Log Out</a></li>
  305. <li><a href="/helloworld">hello
  306. world</a></li>
  307.  
  308. </ul>
  309. </div><!-- /.navbar-collapse -->
  310. </div><!-- /.container-fluid -->
  311. </nav>
  312.  
  313. <div class="container row">
  314. <div class="jumbotron col-sm-4 pull-center">
  315. <form action="/signup" method="post">
  316. <div>
  317. <label>Username:</label>
  318. <input type="text" name="username"/>
  319. </div>
  320. <div>
  321. <label>Email:</label>
  322. <input type="text" name="email"/>
  323. </div>
  324. <div>
  325. <label>Password:</label>
  326. <input type="password" name="password"/>
  327. </div>
  328. <div>
  329. <input class="btn btn-primary"
  330. type="submit" value="Sign Up"/>
  331. </div>
  332. </form>
  333. </div>
  334. </div>
  335. </body>
  336. </html>
Add Comment
Please, Sign In to add comment