Advertisement
rodrigofbm

userModel

Apr 18th, 2018
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const bcrypt = require('bcryptjs');
  2. const jwt = require('jsonwebtoken');
  3. const authSecretHash = require('./auth.json');
  4.  
  5. function Usuario(User){
  6.     this._User = User;
  7. }
  8.  
  9. Usuario.prototype.createUser = async function(res, dadosForm){
  10.     try{
  11.        let user = await new this._User(dadosForm);
  12.  
  13.        if(!user) return res.status(401).send({error: 'error'})
  14.  
  15.        user.save((err, doc) => {
  16.             if(err) {
  17.                 let errorCode = err.code || " ";
  18.                 return res.status(400).send({error: `${err}`, code: errorCode});
  19.             }
  20.  
  21.             doc.password = undefined; //esconder o password do send(doc)
  22.             res.send(doc);
  23.        })
  24.        
  25.     }catch(err){
  26.         res.status(500).send({error: `${err}`})
  27.     }
  28. }
  29.  
  30. Usuario.prototype.createUserInfos = async function(res, userId, dadosForm){
  31.     try{
  32.        let userInfos = await this._User.findByIdAndUpdate({_id: userId}, {$set: { userInfos: dadosForm}});
  33.  
  34.        if(!userInfos) return res.status(401).send({error: 'error'})
  35.  
  36.        const saveUserInfos = await userInfos.save();
  37.  
  38.        if(!saveUserInfos) return res.status(400).send({error: 'Erro ao salvar informações. Verefique os campos'})
  39.        
  40.         res.json(userInfos)
  41.  
  42.     }catch(err){
  43.         res.status(500).send({error: `${err}`})
  44.     }
  45. }
  46.  
  47. Usuario.prototype.getUserInfos = async function(res, userId){
  48.     try{
  49.        let getUserInfos = await this._User.findOne({_id: userId});
  50.  
  51.        if(!getUserInfos) return res.status(401).send({error: 'Usuário não encontrado'})
  52.  
  53.        const saveUserInfos = await getUserInfos.save();
  54.  
  55.        if(!saveUserInfos) return res.status(400).send({error: 'Erro ao consultar informações. Tente novamente'})
  56.        
  57.         res.json(getUserInfos.userInfos)
  58.  
  59.     }catch(err){
  60.         res.status(500).send({error: `${err}`})
  61.     }
  62. }
  63.  
  64. Usuario.prototype.authUser = async function(res, dadosForm){
  65.     try{
  66.         let user = await  this._User.findOne({'email': dadosForm.email}).select('+password');
  67.        
  68.         if(!user) return res.status(404).send({error: 'User not found'});
  69.        
  70.         if(!await bcrypt.compare(dadosForm.password, user.password)){
  71.             return res.status(400).send({error: 'Invalid password'});
  72.         }
  73.  
  74.         const token = jwt.sign({id: user.id}, authSecretHash.secrete, {
  75.             expiresIn: 2592000
  76.         })
  77.  
  78.         user.password =undefined;
  79.         res.send({user, token});
  80.        
  81.     }catch(err){
  82.         res.status(500).send({error: `${err}`})
  83.     }
  84. }
  85.  
  86. module.exports = () =>{
  87.     return Usuario;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement