Skip to content

Commit

Permalink
add auth middleware
Browse files Browse the repository at this point in the history
  • Loading branch information
pphuongdut committed Jun 28, 2020
1 parent 35c6c75 commit e50d51d
Show file tree
Hide file tree
Showing 7 changed files with 132 additions and 66 deletions.
124 changes: 73 additions & 51 deletions src/app/Auth/Controllers/AuthController.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@ class AuthController extends BaseController {
return res.render('app/auth/register-email');
}

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

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

Expand All @@ -23,75 +27,93 @@ class AuthController extends BaseController {

async registerByEmail(req, res) {
const {
email, password, firstName, lastName,
} = req.body;
// const user = { email, password };
// console.log(user);
// console.log(email.emailVerified);
email, password, firstName, lastName,
} = req.body;
try {
// if (email.emailVerified !== undefined) {
firebase.auth().createUserWithEmailAndPassword(email, password);
console.log('register successfull');
// } else {
// firebase.auth().currentUser.sendEmailVerification(email);
// console.log('Sent verify email');
// }
} catch (e) {
return res.json(e.message);
}
await firebase
.auth()
.createUserWithEmailAndPassword(email, password);
console.log('register successfull');
console.log('sent');
knex('users').insert({
firstName,
lastName,
email,
password,
});
firebase.auth().signOut();
res.redirect('/login');
} catch (error) {
res.json(error);
}
}

async registerByPhoneNumber(req, res) {
const {
phoneNumber, password, firstName, lastName,
} = req.body;
firebase.auth().signInWithPhoneNumber(phoneNumber)
.catch((error) => {
res.json(error);
});
await knex('users').insert({
firstName,
lastName,
email,
phoneNumber,
password,
});
return res.redirect('/login');
return res.redirect('/verify-phone-number');
}

async verifyPhoneNumber(req, res) {
const { codeVerify } = req.body;
firebase.auth.ConfirmationResult.confirm(codeVerify)
.then((result) => {
// User signed in successfully.
const { user } = result;
// ...
})
.catch((error) => {
res.json(error);
});
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) {
// if (error.code === 'auth/wrong-password') {
// return res.status(400).json({ message: 'Wrong password' });
// }
// return res.status(400).json(error.message);
// }
// return res.redirect('/');
try {
await firebase.auth().signInWithEmailAndPassword(email, password);
} catch (error) {
return res.status(400).json(error.message);
}
const user = firebase.auth().currentUser;
try {
try {
if (user.emailVerified) {
firebase
.auth()
.signInWithEmailAndPassword(email, password);
res.redirect('/');
} else {
user.sendEmailVerification();
user.sendEmailVerification();
res.render('/app/auth/conversation/email-verified');
}
return res.redirect('/');
} catch (e) {
console.log(e);
}
}

async registerByPhoneNumber(req, res) {
const {
phoneNumber, password, firstName, lastName,
} = req.body;
firebase.auth().languageCode = 'it';
firebase.auth().useDeviceLanguage();

await knex('users').insert({
firstName,
lastName,
phoneNumber,
password,
});
return res.redirect('/login');
res.status(400).json(e.message);
}
}

async signInWithPhoneNumber(req, res) {
res.redirect('/');
}

signOut(req, res) {
try {
firebase.auth().signOut();
console.log('out');
res.redirect('/login');
} catch (error) {
res.json(error.message);
}
}
}
export default AuthController;
18 changes: 15 additions & 3 deletions src/app/Auth/Middleware/AuthMiddleware.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,24 @@ class AuthController extends BaseController {
this.service = Service.getService();
}

isLogin(req, res) {
isLogin(req, res, next) {
const user = firebase.auth().currentUser;
console.log(firebase.auth().currentUser);
if (user) {
res.redirect('/conversations');
next();
} else {
return res.redirect('/login');
return res.redirect('/login');
}
}

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
26 changes: 18 additions & 8 deletions src/app/Auth/Routes/routes.js
Original file line number Diff line number Diff line change
@@ -1,23 +1,33 @@
import express from 'express';
import Controller from '../Controllers/AuthController';

import MiddleWare from '../Middleware/AuthMiddleware';

const router = express.Router();
const controller = new Controller();

router.get('/login', (req, res) => res.render('app/login'));
const middleware = new MiddleWare();
router.get('/login', middleware.isNotLogin, controller.viewLogin);

router.post('/login', controller.callMethod('signInWithEmail'));
router.route('/login-phone-number')
.get((req, res) => res.render('app/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'));

router.get('/register', (req, res) => res.render('app/auth/register'));

router.get('/register-email', controller.callMethod('viewRegisterByEmail'));
router.get(
'/register-email',
middleware.isNotLogin,
controller.callMethod('viewRegisterByEmail'),
);
router.post('/register-email', controller.callMethod('registerByEmail'));

router.get('/register-phone-number', controller.viewRegisterByPhoneNumber);
router.get(
'/register-phone-number',
middleware.isNotLogin,
controller.viewRegisterByPhoneNumber,
);
router.post('/register-phone-number', controller.registerByPhoneNumber);

router.post('/verify-phone-number', controller.verifyPhoneNumber);
router.get('/reset-password', (req, res) => res.render('app/view-reset-password'));
export default router;
14 changes: 14 additions & 0 deletions src/resources/views/app/auth/verified-phone-number.pug
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
extends ../../layouts/sign

block content
h5 Verified phone number

form(action='/verify-phone-number' method='POST')
.form-group.input-group-lg
input.form-control(type='number' placeholder='code' name='codeVerify' required='')
.form-group.input-group-lg
#recaptcha-container
button#btnRegisterEmail.btn.btn-primary.btn-lg.btn-block Verified
hr
p.text-muted Already have an account?
a.btn.btn-outline-light.btn-sm(href='/login') Sign in!
7 changes: 7 additions & 0 deletions src/resources/views/app/conversation/emai-verified.pug
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
extends ../../layouts/sign

block content
h5 Verifiy your email to use this account !
a.btn.btn-outline-light.btn-sm(href='https://mail.google.com/')
hr
a.btn.btn-outline-light.btn-sm(href='/login') Sign in now !
2 changes: 1 addition & 1 deletion src/resources/views/components/navigation.pug
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,5 @@ nav.navigation
a(href='#' data-toggle='modal' data-target='#settingModal')
i.ti-settings
li
a(href='/login')
a(href='/signout' )
i.ti-power-off
7 changes: 4 additions & 3 deletions src/routes/index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import express from 'express';
import authRouter from '../app/Auth/Routes/routes';

import Controller from '../app/Auth/Controllers/AuthController';
import MiddleWare from '../app/Auth/Middleware/AuthMiddleware';

Expand All @@ -9,8 +10,8 @@ const router = express.Router();

router.use(authRouter);

router.get('/', middleWare.isLogin);

router.get('/conversations', controller.view);
router.get('/', (req, res) => { res.redirect('/conversations'); });
router.get('/signout', controller.signOut);
router.get('/conversations', middleWare.isLogin, controller.viewConversation);

export default router;

0 comments on commit e50d51d

Please sign in to comment.