1. View
1. Tạo file ./src/resources/views/account/account-register.ejs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
<input type="text" name="Gmail" placeholder="Username" required /> <input type="text" name="Phone" placeholder="0xxx.xxx.xxx" required /> <input type="password" name="Password" placeholder="Password" autocomplete="off" required /> <button id="btn_Register">Register</button> <script> let ip_Gmail = document.querySelector('input[name="Gmail"]'); let ip_Phone = document.querySelector('input[name="Phone"]'); let ip_Password = document.querySelector('input[name="Password"]'); let btn_Register = document.getElementById('btn_Register'); btn_Register.onclick = (e) => { e.preventDefault(); if (ip_Gmail.value == '' || ip_Phone.value == '' || ip_Password.value == '') return; let account = { Gmail: ip_Gmail.value + '@gmail.com', Phone: '0' + ip_Phone.value, Password: ip_Password.value, }; fetch('/account/register', { method: 'POST', body: JSON.stringify(account), headers: { 'Content-Type': 'application/json', }, }) .then((response) => response.json()) .then((resp) => { console.log(resp); if (resp.error) alert('Tạo tài khoản thất bại, lỗi hệ thống'); else if (!resp.data) alert('Đăng ký thất bại, tên tài khoản trùng khớp'); else if (resp.data) { alert('Tạo tài khoản thành công'); window.open('/', '_self'); } }) .catch((err) => console.warn(err)); }; </script> |
2. Tạo file ./src/resources/views/account/account-login.ejs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<input type="text" name="Gmail" placeholder="Username" required /> <input type="password" name="Password" placeholder="Password" autocomplete="off" required /> <button id="btn_Login">Login</button> <script> let ip_Gmail = document.querySelector('input[name="Gmail"]'); let ip_Password = document.querySelector('input[name="Password"]'); let btn_Login = document.getElementById('btn_Login'); btn_Login.onclick = (e) => { e.preventDefault(); if (ip_Gmail.value == '' || ip_Password == '') return; let account = { Gmail: ip_Gmail.value + '@gmail.com', Password: ip_Password.value, }; fetch('/account/login', { method: 'POST', body: JSON.stringify(account), headers: { 'Content-Type': 'application/json', }, }) .then((response) => response.json()) .then((resp) => { console.log(resp); if (resp.error) alert('Đăng nhập thất bại, lỗi hệ thống'); else if (!resp.data) alert('Đăng nhập thất bại, sai thông tin'); else if (resp.data){ alert('Đăng nhập thành công'); window.open('/','_self'); } }) .catch((err) => console.warn(err)); }; </script> |
2. Router
- Tạo ./src/routes/accountRouter.ejs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
const express = require('express'); const router = express.Router(); const controller = require('../app/controllers/AccountController'); router.get('/register', (req, res, next)=>{ res.render('account/account-register'); }); router.get('/login', (req, res, next)=>{ res.render('account/account-login'); }); router.post('/register', controller.register); router.post('/login', controller.login) router.get('/logout', controller.logout); module.exports = router; |
3. Controller
- Tạo file ./src/app/controllers/AccountController.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
const mongoDB = require('../../config/database/mongoDB'); class AccountController { register = async (req, res, next) => { try { let newAccount = { Gmail: req.body.Gmail, Phone: req.body.Phone, Password: req.body.Password, Role: 'Manager', createdAt: Date.now(), updatedAt: Date.now(), removedAt: 0, }; let findAccount = await mongoDB.getDB().collection('accounts').findOne({ Gmail: req.body.Gmail }); if (findAccount) { res.json({ data: null }); } else { let response = await mongoDB.getDB().collection('accounts').insertOne(newAccount); console.log('Tạo tài khoản mới thành công: ', response.ops); res.json({ data: response.ops[0] }); } } catch (error) { console.log(error); res.json({ error: error }); } }; login = async (req, res, next) => { try { let query = { Gmail: req.body.Gmail, Password: req.body.Password, }; let account = await mongoDB.getDB().collection('accounts').findOne(query); if (account) { } res.json({ data: account }); } catch (error) { console.log(error); res.json({ error: error }); } }; logout = (req, res, next) => {}; } module.exports = new AccountController(); |