Skip to content

Commit

Permalink
User is logged in, now we need to create the dashboard
Browse files Browse the repository at this point in the history
  • Loading branch information
Christian Martinez committed Jul 25, 2023
1 parent df8aa5b commit 7bde937
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 13 deletions.
6 changes: 6 additions & 0 deletions controllers/api/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
const router = require('express').Router()
const userRoutes = require('./user-routes')

router.use('/users', userRoutes)

module.exports = router
58 changes: 58 additions & 0 deletions controllers/api/user-routes.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
const router = require('express').Router()
const { User } = require('../../models')

router.post('/', async (req, res) => {
try {
const userData = await User.create(req.body)

req.session.save(() => {
req.session.user_id = userData.id
req.session.logged_in = true

res.redirect('/login')
})
} catch (err) {
res.status(400).json(err)
}
})

router.post('/login', async (req, res) => {
try {
const userData = await User.findOne({ where: { email: req.body.email } })

if (!userData) {
res.status(400).json({ message: 'Incorrect email or password' })
return
}

const validPassword = await userData.checkPassword(req.body.password)

if (!validPassword) {
res
.status(400)
.json({ message: 'Incorrect email or password, please try again' })
return
}

req.session.save(() => {
req.session.user_id = userData.id
req.session.logged_in = true
res.redirect('/dashboard')
res.render('dashboard', { userData, logged_in: req.session.logged_in })
})
} catch (err) {
res.status(400).json(err)
}
})

router.post('/logout', (req, res) => {
if (req.session.logged_in) {
req.session.destroy(() => {
res.status(204).end()
})
} else {
res.status(404).end()
}
})

module.exports = router
8 changes: 1 addition & 7 deletions controllers/home-routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ const router = require('express').Router()
const { Post, User, Comment } = require('../models')

router.get('/', (req, res) => {
console.log(req.session)
Post.findAll({
attributes: ['id', 'post_text', 'title', 'created_on'],
order: [['created_on', 'DESC']],
Expand Down Expand Up @@ -35,18 +34,13 @@ router.get('/', (req, res) => {
})

router.get('/login', (req, res) => {
if (req.session.loggedIn) {
if (req.session.logged_in) {
res.redirect('/dashboard')
return
}
res.render('login')
})

router.get('/signup', (req, res) => {
if (req.session.loggedIn) {
res.redirect('/')
return
}
res.render('signup')
})

Expand Down
2 changes: 2 additions & 0 deletions controllers/index.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
const router = require('express').Router()
const homeRoutes = require('./home-routes')
const apiRoutes = require('./api')
//const dashboardRoutes = require('./dashboard-routes')

router.use('/', homeRoutes)
router.use('/api', apiRoutes)
//router.use('/dashboard', dashboardRoutes)

module.exports = router
2 changes: 1 addition & 1 deletion models/User.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ User.init(
type: DataTypes.STRING,
allowNull: false,
validate: {
len: [4],
len: [6],
},
},
},
Expand Down
4 changes: 2 additions & 2 deletions views/login.handlebars
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@
</div>

<div class='mt-10 sm:mx-auto sm:w-full sm:max-w-sm'>
<form class='space-y-6' action='#' method='POST'>
<form class='space-y-6' action='/api/users/login' method='POST'>
<div>
<label
for='email'
class='block text-sm font-medium leading-6 text-gray-900'
>Email address</label>
>Email</label>
<div class='mt-2'>
<input
id='email'
Expand Down
6 changes: 3 additions & 3 deletions views/signup.handlebars
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@
</div>

<div class='mt-10 sm:mx-auto sm:w-full sm:max-w-sm'>
<form class='space-y-6' action='#' method='POST'>
<form class='space-y-6' action='/api/users' method='POST'>
<div>
<label
for='name'
class='block text-sm font-medium leading-6 text-gray-900'
>Full Name</label>
<div class='mt-2'>
<input
id='name'
name='name'
id='full_name'
name='full_name'
type='text'
autocomplete='off'
required
Expand Down

0 comments on commit 7bde937

Please sign in to comment.