Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module.exports = function (app, models, password, fs, emailServer) {
- app.post('/users', function (req, res) {
- models.User.findOne({$or: [{
- email: req.body.email
- }, {
- phone: req.body.phone
- }]}, function (err, user) {
- if (err) throw err;
- if (user) {
- res.status(400);
- user.email === req.body.email ? res.send('Email already taken.') : res.send('Phone already taken.');
- } else {
- password(req.body.password).hash(function (err, password) {
- if (err) throw err;
- function capitalizeName (name) {
- return name
- .toLowerCase()
- .split(' ')
- .map(function (word) {
- return word[0].toUpperCase() + word.substr(1);
- })
- .join(' ')
- };
- models.User.create({
- name: capitalizeName(req.body.name),
- email: req.body.email,
- phone: req.body.phone,
- password: password,
- photo: 'images/user-default.png'
- }, function (err, user) {
- if (err) throw err;
- res.json(user);
- });
- });
- };
- });
- });
- app.post('/users/login', function (req, res) {
- models.User.findOne({
- email: req.body.email
- }, function (err, user) {
- if (err) throw err;
- if (user) {
- password(req.body.password).verifyAgainst(user.password, function (err, verified) {
- if (err) throw err;
- if (verified) {
- res.json(user);
- } else {
- res.status(400);
- res.send('Invalid login.');
- };
- });
- } else {
- res.status(400);
- res.send('Invalid login.');
- };
- });
- });
- app.put('/users/photo', function (req, res) {
- var fileName = req.body.id + new Date().getTime() + '.png';
- fs.writeFile('public/photos/' + fileName, req.body.photo, 'base64', function (err) {
- if (err) throw err;
- models.User.findOneAndUpdate({
- _id: req.body.id
- }, {$set: {
- photo: 'https://api.liffy.com.br/photos/' + fileName
- }}, {new: true}, function (err, user) {
- if (err) throw err;
- res.json(user);
- });
- });
- });
- app.put('/users/remove-photo', function (req, res) {
- models.User.findOneAndUpdate({
- _id: req.body.id
- }, {$set: {
- photo: 'images/user-default.png'
- }}, {new: true}, function (err, user) {
- if (err) throw err;
- res.json(user);
- });
- });
- app.put('/users/password', function (req, res) {
- models.User.findOne({
- _id: req.body.id
- }, function (err, user) {
- if (err) throw err;
- password(req.body.password).verifyAgainst(user.password, function (err, verified) {
- if (err) throw err;
- if (verified) {
- password(req.body.newPassword).hash(function (err, password) {
- if (err) throw err;
- models.User.findOneAndUpdate({
- _id: req.body.id
- }, {$set: {
- password: password,
- }}, {new: true}, function (err, user) {
- if (err) throw err;
- res.json(user);
- });
- });
- } else {
- res.status(400);
- res.send('Invalid password.');
- };
- });
- });
- });
- app.put('/users/email', function (req, res) {
- models.User.findOne({
- email: req.body.email
- }, function (err, user) {
- if (err) throw err;
- if (user) {
- res.status(400);
- res.send('Email already taken.');
- } else {
- models.User.findOne({
- _id: req.body.id
- }, function (err, user) {
- if (err) throw err;
- password(req.body.password).verifyAgainst(user.password, function (err, verified) {
- if (err) throw err;
- if (verified) {
- models.User.findOneAndUpdate({
- _id: req.body.id
- }, {$set: {
- email: req.body.email,
- }}, {new: true}, function (err, user) {
- if (err) throw err;
- res.json(user);
- });
- } else {
- res.status(400);
- res.send('Invalid password.');
- };
- });
- });
- };
- });
- });
- app.get('/users/:id/travels', function (req, res) {
- models.Travel.find({
- user: req.params.id,
- showToUser: true,
- done: true
- })
- .populate('driver')
- .exec(function (err, travels) {
- if (err) throw err;
- res.json(travels);
- });
- });
- app.delete('/users/travels/:id', function (req, res) {
- models.Travel.findOneAndUpdate({
- _id: req.params.id
- }, {$set: {
- showToUser: false
- }}, function (err, travel) {
- if (err) throw err;
- models.Travel.find({
- user: travel.user,
- showToUser: true,
- done: true
- })
- .populate('driver')
- .exec(function (err, travels) {
- if (err) throw err;
- res.json(travels);
- });
- });
- });
- app.post('/users/recover-password', function (req, res) {
- models.User.findOne({
- email: req.body.email
- }, function (err, user) {
- if (err) throw err;
- var _code = (Math.floor(Math.random() * (9 - 1)) + 1).toString();
- if (user) {
- for (i = 0; i < 3; i++) {
- var _randomNumber = Math.floor(Math.random() * (9 - 1)) + 1;
- var _code = _code + _randomNumber.toString();
- };
- emailServer.send({
- text: 'Utilize ' + _code + ' para recuperar a sua senha no Liffy.',
- from: 'Liffy <liffyapp@gmail.com>',
- to: user.email + '<' + user.email + '>',
- subject: 'Seu código Liffy'
- }, function (err, details) {
- if (err) throw err;
- res.json({
- id: user._id,
- code: _code
- });
- });
- } else {
- res.status(400);
- res.send('Invalid email.');
- };
- });
- });
- app.put('/users/set-new-password', function (req, res) {
- password(req.body.password).hash(function (err, password) {
- if (err) throw err;
- models.User.findOneAndUpdate({
- _id: req.body.id
- }, {$set: {
- password: password
- }}, {new: true}, function (err, user) {
- if (err) throw err;
- res.json(user);
- });
- });
- });
- app.get('/users/:id', function (req, res) {
- models.User.findOne({
- _id: req.params.id
- }, function (err, user) {
- if (err) throw err;
- res.json(user);
- });
- });
- app.post('/users/fb-login', function (req, res) {
- models.User.findOne({
- email: req.body.email
- }, function (err, user) {
- if (err) throw err;
- if (user) {
- res.json(user);
- } else {
- res.end();
- };
- });
- });
- app.post('/users/fb-sign', function (req, res) {
- models.User.findOne({
- phone: req.body.phone
- }, function (err, user) {
- if (err) throw err;
- if (user) {
- res.status(400);
- res.send('Phone already taken');
- } else {
- req.body.photo.silhouette ? _photo = 'images/user-default.png' : _photo = req.body.photo.url;
- models.User.create({
- name: req.body.name,
- email: req.body.email,
- phone: req.body.phone,
- photo: _photo
- }, function (err, user) {
- if (err) throw err;
- res.json(user);
- });
- };
- });
- });
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement