Skip to content
Snippets Groups Projects
appController.js 2.32 KiB
Newer Older
import UserModel from '../model/User.model.js';
import bcrypt from 'bcrypt';

/** POST: http://localhost:8080/api/register
 * @param : {
  "username" : "example123",
  "password" : "admin123",
  "email": "example@gmail.com",
  "profile": ""
}
*/
export async function register(req,res){

  try {
      const { username, password, profile, email } = req.body;        

      // Checking existing Username
      const existUsername = new Promise((resolve, reject) => {
          UserModel.findOne({ username }, function(err, user){
              if(err) reject(new Error(err))
              if(user) reject({ error : "Please use unique username"});

              resolve();
          })
      });

      // Checking existing Email
      const existEmail = new Promise((resolve, reject) => {
          UserModel.findOne({ email }, function(err, email){
              if(err) reject(new Error(err))
              if(email) reject({ error : "Please use unique Email"});

              resolve();
          })
      });


      Promise.all([existUsername, existEmail])
          .then(() => {
              if(password){
                  bcrypt.hash(password, 10)
                      .then( hashedPassword => {
                          
                          const user = new UserModel({
                              username,
                              password: hashedPassword,
                              profile: profile || '',
                              email
                          });

                          // return save result as a response
                          user.save()
                              .then(result => res.status(201).send({ msg: "User Registered Successfully"}))
                              .catch(error => res.status(500).send({error}))

                      }).catch(error => {
                          return res.status(500).send({
                              error : "Enable to hashed password"
                          })
                      })
              }
          }).catch(error => {
              return res.status(500).send({ error })
          })
  } catch (error) {
      return res.status(500).send(error);
  }
}

/** POST: http://localhost:8080/api/login 
 * @param: {
  "username" : "example123",
  "password" : "admin123"
}
*/
export async function login(req,res){
    res.json('login route')