Skip to content

Commit

Permalink
create friends table
Browse files Browse the repository at this point in the history
  • Loading branch information
pphuongdut committed Jul 9, 2020
1 parent e50d51d commit ea1e0af
Show file tree
Hide file tree
Showing 17 changed files with 230 additions and 102 deletions.
52 changes: 25 additions & 27 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -1,28 +1,26 @@
{
"env": {
"es6": true,
"node": true
},
"extends": [
"airbnb-base"
],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parser": "babel-eslint",
"parserOptions": {
"ecmaVersion": 2018,
"sourceType": "module"
},
"rules": {
"linebreak-style": 0,
"indent": 0,
"consistent-return": 0,
"no-underscore-dangle": 0,
"no-tabs": 0,
"dot-notation": 0,
"default-case": 0,
"class-methods-use-this": 0
}
}
"env": {
"es6": true,
"node": true
},
"extends": ["airbnb-base"],
"globals": {
"Atomics": "readonly",
"SharedArrayBuffer": "readonly"
},
"parser": "babel-eslint",
"parserOptions": {
"ecmaVersion": 2018,
"sourceType": "module"
},
"rules": {
"linebreak-style": 0,
"indent": 0,
"consistent-return": 0,
"no-underscore-dangle": 0,
"no-tabs": 0,
"dot-notation": 0,
"default-case": 0,
"class-methods-use-this": 0
}
}
50 changes: 50 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@
"build": "babel ./src --out-dir dist --copy-files"
},
"dependencies": {
"connect-flash": "^0.1.1",
"cookie-parser": "^1.4.5",
"debug": "~2.6.9",
"dotenv": "^8.2.0",
"express": "~4.16.1",
"express-session": "^1.17.1",
"express-validator": "^6.5.0",
"firebase": "^7.15.0",
"firebase-admin": "^8.12.1",
Expand Down
59 changes: 30 additions & 29 deletions src/app/Auth/Controllers/AuthController.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import firebase from '../../../database/firebase';
import firebase from '../../../config/firebase';
import BaseController from '../../../infrastructure/Controllers/BaseController';
import Service from '../Services/AuthService';
import knex from '../../../database/connection';
Expand All @@ -10,19 +10,23 @@ class AuthController extends BaseController {
}

viewRegisterByEmail(req, res) {
return res.render('app/auth/register-email');
return res.render('app/auth/register-email', { msg: req.flash('msg') });
}

viewLogin(req, res) {
return res.render('app/login');
return res.render('app/login', { msg: req.flash('msg') });
}

viewConversation(req, res) {
return res.render('app/conversation/index');
}

viewRegisterByPhoneNumber(req, res) {
return res.render('app/auth/register-phone-number');
return res.render('app/auth/register-phone-number', { msg: req.flash('msg') });
}

viewVerifyPhoneNumber(req, res) {
return res.render('/app/auth/verified-phone-number', { msg: req.flash('msg') });
}

async registerByEmail(req, res) {
Expand All @@ -33,18 +37,19 @@ class AuthController extends BaseController {
await firebase
.auth()
.createUserWithEmailAndPassword(email, password);
console.log('register successfull');
console.log('sent');
knex('users').insert({
firstName,
lastName,
email,
password,
});
const user = firebase.auth().currentUser;
user.sendEmailVerification();
firebase.auth().signOut();
res.redirect('/login');
res.render('app/auth/register-verify');
} catch (error) {
res.json(error);
req.flash('msg', error.message);
return res.redirect('/register-email');
}
}

Expand All @@ -54,7 +59,7 @@ async registerByPhoneNumber(req, res) {
} = req.body;
firebase.auth().signInWithPhoneNumber(phoneNumber)
.catch((error) => {
res.json(error);
req.flash('msg', error.message);
});
await knex('users').insert({
firstName,
Expand All @@ -68,48 +73,44 @@ async registerByPhoneNumber(req, res) {
async verifyPhoneNumber(req, res) {
const { codeVerify } = req.body;
firebase.auth.ConfirmationResult.confirm(codeVerify)
.then((result) => {
// User signed in successfully.
const { user } = result;
// ...
.then(() => {
const credential = firebase.auth.PhoneAuthProvider.credential(
codeVerify,
);
firebase.auth().signInWithCredential(credential);
res.redirect('/');
})
.catch((error) => {
res.json(error);
req.flash('msg', error.message);
res.redirect('/login');
});
const credential = firebase.auth.PhoneAuthProvider.credential(
codeVerify,
);
firebase.auth().signInWithCredential(credential);
}

async signInWithEmail(req, res) {
const { email, password } = req.body;
try {
await firebase.auth().signInWithEmailAndPassword(email, password);
} catch (error) {
return res.status(400).json(error.message);
}
const user = firebase.auth().currentUser;
try {
const user = firebase.auth().currentUser;
if (user.emailVerified) {
res.redirect('/');
} else {
user.sendEmailVerification();
res.render('/app/auth/conversation/email-verified');
firebase.auth().signOut();
req.flash('msg', 'Please verify your email to login !');
res.redirect('/login');
}
} catch (e) {
res.status(400).json(e.message);
} catch (error) {
req.flash('msg', error.message);
return res.redirect('/login');
}
}

async signInWithPhoneNumber(req, res) {
res.redirect('/');
res.redirect('/verify-phone-number');
}

signOut(req, res) {
try {
firebase.auth().signOut();
console.log('out');
res.redirect('/login');
} catch (error) {
res.json(error.message);
Expand Down
5 changes: 1 addition & 4 deletions src/app/Auth/Middleware/AuthMiddleware.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import firebase from '../../../database/firebase';
import firebase from '../../../config/firebase';
import BaseController from '../../../infrastructure/Controllers/BaseController';
import Service from '../Services/AuthService';

Expand All @@ -10,7 +10,6 @@ class AuthController extends BaseController {

isLogin(req, res, next) {
const user = firebase.auth().currentUser;
console.log(firebase.auth().currentUser);
if (user) {
next();
} else {
Expand All @@ -21,10 +20,8 @@ class AuthController extends BaseController {
isNotLogin(req, res, next) {
const user = firebase.auth().currentUser;
if (user == null) {
console.log(1);
next();
} else {
console.log(1);
return res.redirect('/conversations');
}
}
Expand Down
4 changes: 1 addition & 3 deletions src/app/Auth/Routes/routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,6 @@ const middleware = new MiddleWare();
router.get('/login', middleware.isNotLogin, controller.viewLogin);

router.post('/login', controller.callMethod('signInWithEmail'));
router.route('/login-phone-number')
.get(controller.viewRegisterByPhoneNumber)
.post(controller.signInWithPhoneNumber);
router.post('/signout', controller.signOut);
router.get('/register', middleware.isNotLogin, (req, res) => res.render('app/auth/register'));

Expand All @@ -29,5 +26,6 @@ router.get(
);
router.post('/register-phone-number', controller.registerByPhoneNumber);
router.post('/verify-phone-number', controller.verifyPhoneNumber);
router.get('/verify-phone-number', controller.viewVerifyPhoneNumber);
router.get('/reset-password', (req, res) => res.render('app/view-reset-password'));
export default router;
File renamed without changes.
10 changes: 10 additions & 0 deletions src/config/routes.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import methodOverride from 'method-override';
import flash from 'connect-flash';
import session from 'express-session';
import routes from '../routes/index';

export default function (app) {
Expand Down Expand Up @@ -31,5 +33,13 @@ export default function (app) {
next();
});

app.use(session({
cookie: { maxAge: 60000 },
secret: 'woot',
resave: false,
saveUninitialized: false,
}));

app.use(flash());
app.use(routes);
}
4 changes: 3 additions & 1 deletion src/database/migrations/20190921085115_create_users.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ exports.up = (knex) => knex.schema.createTable('users', (table) => {
table.string('email');
table.string('phoneNumber');
table.string('password');
table.string('city');
table.timestamp('birthday');
table.integer('sex').defaultTo(0);
table.string('adress');
table.text('describe');
table.timestamp('createdAt').defaultTo(knex.fn.now());
table.timestamp('updatedAt').defaultTo(knex.fn.now());
Expand Down
18 changes: 18 additions & 0 deletions src/database/migrations/20200703173330_friends.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@

exports.up = (knex) => knex.schema.createTable('friends', (table) => {
table.increments('id');
table.foreign('userId').references('users.id');
table.integer('userId');
table.foreign('friendId').references('users.id');
table.integer('friendId');
table.foreign('receiver').references('users.id');
table.integer('receiver');
table.integer('status').notNullable();
// ( 0 đã gửi lời mời
// 1 đã xác nhận kết bạn
// 2 đã chặn
// 3 không còn là bạn bè )
table.timestamp('updatedAt').defaultTo(knex.fn.now());
});

exports.down = (knex) => knex.schema.dropTable('friends');
Loading

0 comments on commit ea1e0af

Please sign in to comment.