mirror of
https://github.com/mjrode/WhatToWatch.git
synced 2026-05-20 21:48:27 -05:00
Passport local auth and front end for registration, functioning but needs work
This commit is contained in:
@@ -13,29 +13,34 @@ router.get(
|
||||
},
|
||||
);
|
||||
|
||||
router.post(
|
||||
'/login',
|
||||
function(req, res, next) {
|
||||
console.log('Request params', req.params);
|
||||
console.log('Request body', req.body);
|
||||
console.log('Request query', req.query);
|
||||
next();
|
||||
},
|
||||
passport.authenticate('local', {
|
||||
failureRedirect: '/sign-up',
|
||||
failureFlash: true,
|
||||
}),
|
||||
function(req, res) {
|
||||
console.log('res', res.body);
|
||||
res.redirect('/');
|
||||
},
|
||||
);
|
||||
router.post('/sign-up', function(req, res, next) {
|
||||
passport.authenticate('local-signup', function(err, user, info) {
|
||||
if (err) {
|
||||
console.log('sign up error', err);
|
||||
return next(err);
|
||||
}
|
||||
if (!user) {
|
||||
console.log('no user returned', info);
|
||||
return res.json({message: info.message});
|
||||
}
|
||||
console.log('user found', user);
|
||||
res.json(user);
|
||||
})(req, res, next);
|
||||
});
|
||||
|
||||
router.post('/login', passport.authenticate('local-login'), function(req, res) {
|
||||
// If this function gets called, authentication was successful.
|
||||
// `req.user` contains the authenticated user.
|
||||
console.log('User in session', req.user);
|
||||
res.redirect('/');
|
||||
});
|
||||
|
||||
router.get('/google/callback', passport.authenticate('google'), (req, res) => {
|
||||
res.redirect('/plex-pin');
|
||||
});
|
||||
|
||||
router.get('/current_user', (req, res) => {
|
||||
console.log('current user', req.user);
|
||||
res.send(req.user);
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
module.exports = {
|
||||
up: function(queryInterface, Sequelize) {
|
||||
// logic for transforming into the new state
|
||||
return queryInterface.addColumn('Users', 'password', Sequelize.STRING);
|
||||
},
|
||||
|
||||
down: function(queryInterface, Sequelize) {
|
||||
// logic for reverting the changes
|
||||
return queryInterface.removeColumn('Users', 'password');
|
||||
},
|
||||
};
|
||||
@@ -14,6 +14,7 @@ module.exports = (sequelize, DataTypes) => {
|
||||
sonarrUrl: DataTypes.STRING,
|
||||
sonarrApiKey: DataTypes.STRING,
|
||||
admin: DataTypes.BOOLEAN,
|
||||
password: DataTypes.STRING,
|
||||
},
|
||||
{},
|
||||
);
|
||||
|
||||
+3
-3
@@ -85,9 +85,9 @@ export default () => {
|
||||
});
|
||||
};
|
||||
|
||||
process.on('uncaughtException', error => {
|
||||
console.log('Unhandled Exception due to:', error);
|
||||
process.exit(1);
|
||||
process.on('SIGINT', function() {
|
||||
console.log('SIGINT');
|
||||
process.exit();
|
||||
});
|
||||
|
||||
process.on('unhandledRejection', (reason, p) => {
|
||||
|
||||
@@ -7,62 +7,114 @@ import keys from '../../../config';
|
||||
import models from '../../db/models';
|
||||
|
||||
passport.serializeUser((user, done) => {
|
||||
console.log('serial', user);
|
||||
done(null, user.id);
|
||||
});
|
||||
|
||||
passport.deserializeUser((id, done) => {
|
||||
console.log('deserial', id);
|
||||
models.User.findByPk(id).then(user => {
|
||||
done(null, user);
|
||||
});
|
||||
});
|
||||
|
||||
// passport.use(
|
||||
// new LocalStrategy(
|
||||
// {usernameField: 'email', passwordField: 'password'},
|
||||
// async (email, password, done) => {
|
||||
// try {
|
||||
// console.log('Made it to passport', email);
|
||||
// const existingUser = await User.findOne({email: email});
|
||||
// if (existingUser) {
|
||||
// done(null, existingUser);
|
||||
// }
|
||||
// if (!user) {
|
||||
// done(null, false, {message: 'Incorrect username.'});
|
||||
// }
|
||||
// if (!user.validPassword(password)) {
|
||||
// done(null, false, {message: 'Incorrect password.'});
|
||||
// }
|
||||
// const hashedPassword = generateHash(password);
|
||||
// const user = await models.User.create({
|
||||
// email: email,
|
||||
// password: hashedPassword,
|
||||
// });
|
||||
|
||||
// done(null, user);
|
||||
// } catch (error) {
|
||||
// console.log('passport error', error);
|
||||
// done(error);
|
||||
// }
|
||||
// },
|
||||
// ),
|
||||
// );
|
||||
const generateHash = password => {
|
||||
return bCrypt.hashSync(password, bCrypt.genSaltSync(8), null);
|
||||
};
|
||||
|
||||
passport.use(
|
||||
'local-signup',
|
||||
new LocalStrategy(
|
||||
{usernameField: 'email', passwordField: 'password'},
|
||||
function(username, password, done) {
|
||||
User.findOne({email: email}, function(err, user) {
|
||||
if (err) {
|
||||
return done(err);
|
||||
}
|
||||
if (!user) {
|
||||
return done(null, false, {message: 'Incorrect email.'});
|
||||
}
|
||||
if (!user.validPassword(password)) {
|
||||
return done(null, false, {message: 'Incorrect password.'});
|
||||
}
|
||||
return done(null, user);
|
||||
{
|
||||
usernameField: 'email',
|
||||
passwordField: 'password',
|
||||
},
|
||||
|
||||
async function(email, password, done) {
|
||||
console.log('passport - signup', email);
|
||||
const exisitingUser = await models.User.findOne({
|
||||
where: {email: email},
|
||||
returning: true,
|
||||
plain: true,
|
||||
raw: true,
|
||||
});
|
||||
if (exisitingUser) {
|
||||
return done(null, false, {
|
||||
message: 'That email is already taken',
|
||||
});
|
||||
}
|
||||
const userPassword = generateHash(password);
|
||||
|
||||
const data = {
|
||||
email: email,
|
||||
password: userPassword,
|
||||
};
|
||||
|
||||
console.log('user data before save', data);
|
||||
const newUser = models.User.create(data, {
|
||||
returning: true,
|
||||
plain: true,
|
||||
raw: true,
|
||||
}).then(function(newUser, created) {
|
||||
if (!newUser) {
|
||||
return done(null, false);
|
||||
}
|
||||
|
||||
if (newUser) {
|
||||
console.log('new user created', newUser);
|
||||
return done(null, newUser);
|
||||
}
|
||||
});
|
||||
},
|
||||
),
|
||||
);
|
||||
|
||||
//LOCAL SIGNIN
|
||||
passport.use(
|
||||
'local-login',
|
||||
new LocalStrategy(
|
||||
{
|
||||
usernameField: 'email',
|
||||
passwordField: 'password',
|
||||
},
|
||||
|
||||
function(email, password, done) {
|
||||
var isValidPassword = function(userpass, password) {
|
||||
return bCrypt.compareSync(password, userpass);
|
||||
};
|
||||
|
||||
models.User.findOne({
|
||||
where: {
|
||||
email: email,
|
||||
},
|
||||
returning: true,
|
||||
plain: true,
|
||||
raw: true,
|
||||
})
|
||||
.then(function(user) {
|
||||
if (!user) {
|
||||
return done(null, false, {
|
||||
message: 'Email does not exist',
|
||||
});
|
||||
}
|
||||
|
||||
if (!isValidPassword(user.password, password)) {
|
||||
return done(null, false, {
|
||||
message: 'Incorrect password.',
|
||||
});
|
||||
}
|
||||
|
||||
console.log('user sent to serialize', user.id);
|
||||
|
||||
return done(null, user);
|
||||
})
|
||||
.catch(function(err) {
|
||||
console.log('Error:', err);
|
||||
|
||||
return done(null, false, {
|
||||
message: 'Something went wrong with your Signin',
|
||||
});
|
||||
});
|
||||
},
|
||||
),
|
||||
);
|
||||
@@ -96,8 +148,3 @@ passport.use(
|
||||
},
|
||||
),
|
||||
);
|
||||
|
||||
// should export to commonUtils file
|
||||
const generateHash = string => {
|
||||
return bCrypt.hashSync(string, bCrypt.genSaltSync(8), null);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user