Skip to content

Commit

Permalink
Added user registration
Browse files Browse the repository at this point in the history
  • Loading branch information
ronalddas committed Apr 22, 2020
1 parent bb476d7 commit 075c007
Show file tree
Hide file tree
Showing 11 changed files with 1,062 additions and 31 deletions.
7 changes: 7 additions & 0 deletions .sequelizerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
const path = require('path');

module.exports = {
'config': path.resolve('config', 'database_sequelize.js'),
'models-path': path.resolve('models', 'sql'),
'migrations-path': path.resolve('migrations','sql')
};
23 changes: 23 additions & 0 deletions config/database_sequelize.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// const fs = require('fs');

module.exports = {
test: {
username: process.env.CI_DB_USERNAME,
password: process.env.CI_DB_PASSWORD,
database: process.env.CI_DB_NAME,
host: '127.0.0.1',
port: 3306,
dialect: 'mysql',
dialectOptions: {
bigNumberStrings: true
}
},
production: {
username: process.env.POSTGRES_USER,
password: process.env.POSTGRES_PASSWORD,
database: process.env.POSTGRES_DB,
host: process.env.POSTGRES_HOST,
port: 5432,
dialect: 'postgres'
}
};
16 changes: 12 additions & 4 deletions config/db.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
module.exports = {
'secret': 'thisissomethingsecrete',
'database': 'mongodb://127.0.0.1:27017/auth'
};
const {Sequelize}=require('sequelize');
const config=require('./index');
const POSTGRES_HOST= config.POSTGRES_HOST;
const POSTGRES_DB=config.POSTGRES_DB;
const POSTGRES_USER=config.POSTGRES_USER;
const POSTGRES_PASSWORD=config.POSTGRES_PASSWORD;
const db=new Sequelize(POSTGRES_DB,POSTGRES_USER,POSTGRES_PASSWORD,{
host:POSTGRES_HOST,
dialect:'postgres',
});
module.exports=db;
//NOT USING THIS!!
6 changes: 5 additions & 1 deletion config/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,9 @@ module.exports = {
NODE_ENV:process.env.NODE_ENV,
ML_BASE_URL:process.env.ML_BASE_URL,
USER_IDS:process.env.USER_IDS,
PASSWORDS:process.env.PASSWORDS
PASSWORDS:process.env.PASSWORDS,
POSTGRES_HOST:process.env.POSTGRES_HOST,
POSTGRES_DB:process.env.POSTGRES_DB,
POSTGRES_USER:process.env.POSTGRES_USER,
POSTGRES_PASSWORD:process.env.POSTGRES_PASSWORD,
};
49 changes: 49 additions & 0 deletions controllers/user.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
const bcrypt = require('bcrypt');
const jwt = require('jsonwebtoken');
const db =require('../models/sql');
const User = db.User;

const createUser = (req, res) => {
// const { errors, isValid } = validateRegisterForm(req.body);
let {
name,
role,
email,
password,
} = req.body;

// check validation
// if(!isValid) {
// return res.status(400).json(errors);
// }

User.findAll({ where: { email } }).then(user => {
if (user.length) {
return res.status(400).json({ email: 'Email already exists!' });
} else {
let newUser = {
name,
role,
email,
password,
};
bcrypt.genSalt(10, (err, salt) => {
bcrypt.hash(newUser.password, salt, (err, hash) => {
if (err) throw err;
newUser.password = hash;
User.create(newUser)
.then(user => {
res.json({ user });
})
.catch(err => {
res.status(500).json({ err });
});
});
});
}
});
};

module.exports={
createUser:createUser
};
10 changes: 7 additions & 3 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ const login = require('./routes/login')
const register = require('./routes/register')
const fileUpload = require('express-fileupload')
const db=require('./config/db');
const models = require('./models/sql')
server.use(bodyParser.json());
server.use(bodyParser.urlencoded({ extended: true }));
server.use(fileUpload())
Expand All @@ -36,9 +37,12 @@ server.use('/api/v1/register', register)
server.use('/test',function (req,res) {
res.json({"result":"Test","current_time":new Date(),"dep":"auto"})
})
db.authenticate().then(
()=>console.log('Database connected.')
).catch(err=>console.log('Database Error:'+err))
// db.authenticate().then(
// ()=>console.log('Database connected.')
// ).catch(err=>console.log('Database Error:'+err))
models.sequelize.sync().then(() => {
console.log('Drop and Resync with {force: true}');
});
http.createServer(server).listen(port, () => {
console.log(`Express server listening on port ${port}`);
})
37 changes: 37 additions & 0 deletions models/sql/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
'use strict';

const fs = require('fs');
const path = require('path');
const Sequelize = require('sequelize');
const basename = path.basename(__filename);
const env = 'production';
const config = require(__dirname + '/../../config/database_sequelize.js')[env];
const db = {};

let sequelize;
// if (config.use_env_variable) {
// sequelize = new Sequelize(process.env[config.use_env_variable], config);
// } else {
sequelize = new Sequelize(config.database, config.username, config.password, config);
// }

fs
.readdirSync(__dirname)
.filter(file => {
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
})
.forEach(file => {
const model = sequelize['import'](path.join(__dirname, file));
db[model.name] = model;
});

Object.keys(db).forEach(modelName => {
if (db[modelName].associate) {
db[modelName].associate(db);
}
});

db.sequelize = sequelize;
db.Sequelize = Sequelize;

module.exports = db;
14 changes: 14 additions & 0 deletions models/sql/user.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module.exports = (sequelize, DataTypes) => {
const User = sequelize.define('User', {
user_id: {type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true},
email: {type: DataTypes.STRING, allowNull: false},
password: {type: DataTypes.STRING, allowNull: false},
name: {type: DataTypes.STRING},
role: {type: DataTypes.STRING},
verified:{type: DataTypes.INTEGER,defaultValue:0} //Can be used to setup email verification
}, {tableName: 'users'});
User.associate = function (models) {
// associations can be defined here
};
return User;
};
Loading

0 comments on commit 075c007

Please sign in to comment.