Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const express = require('express');
- const fs = require('fs');
- const bcrypt = require('bcrypt');
- const jwt = require('jsonwebtoken');
- const validator = require('validator');
- const striptags = require('striptags');
- const nodemailer = require('nodemailer');
- const randomstring = require("randomstring");
- const date = require('date-and-time');
- const config = require('../config.json');
- const conn = require('../includes/db');
- const router = express.Router();
- const saltRounds = 10;
- const transporter = nodemailer.createTransport({
- host: config.MAIL_HOST,
- port: config.MAIL_PORT,
- secure: config.MAIL_SECURE,
- auth: {
- user: config.MAIL_USER,
- pass: config.MAIL_PASS
- },
- tls: {
- rejectUnauthorized: false
- }
- });
- // Login
- router.post('/login', function (req, res) {
- if (req.body.email && req.body.password) {
- var email = striptags(req.body.email.trim());
- var password = req.body.password.trim();
- if (email && password) {
- conn.query("SELECT * FROM users WHERE email = ?", [email], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else if (result.length == 1) {
- var json = JSON.parse(JSON.stringify(result))[0];
- if (bcrypt.compareSync(password, json.password)) {
- if (json.active == 1) {
- jwt.sign({ json }, config.secret, { expiresIn: '30min' }, (err, token) => {
- res.json({
- token
- });
- });
- }
- else res.status(401).json({ message: 'Ez a fiók nincs aktiválva!' });
- }
- else res.status(401).json({ message: 'Hibás email címet vagy jelszót írtál be!' });
- }
- else res.status(401).json({ message: 'Hibás email címet vagy jelszót írtál be!' });
- });
- }
- else res.status(500).json({ message: "Nem töltöttél ki minden mezőt!" });
- }
- else res.status(500).json({ message: "Rendszerhiba történt! Kérlek vedd fel velünk a kapcsolatot." });
- });
- // Register
- router.post('/register', function (req, res) {
- if (req.body.lastname && req.body.firstname && req.body.email && req.body.password && req.body.passwordAgain) {
- var lastname = striptags(req.body.lastname.trim());
- var firstname = striptags(req.body.firstname.trim());
- var email = striptags(req.body.email.trim());
- var password = req.body.password.trim();
- var passwordAgain = req.body.passwordAgain.trim();
- if (lastname && firstname && email && password && passwordAgain) {
- if (validator.isLength(lastname, 3, 20) && validator.isLength(firstname, 3, 20)) {
- if (validator.isLength(email, 6, 40) && validator.isEmail(email)) {
- if (validator.isLength(password, 8, 32)) {
- if (password == passwordAgain) {
- conn.query("SELECT * FROM users WHERE email = ?", [email], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else if (result.length == 0) {
- var salt = bcrypt.genSaltSync(saltRounds);
- var hash = bcrypt.hashSync(password, salt);
- var now = new Date();
- conn.query("INSERT INTO users (email, password, active, credit, admin, regdate) VALUES (?, ?, 0, 0, 0, ?)", [email, hash, date.format(now, 'YYYY-MM-DD HH:mm:ss')], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- var userId = result.insertId;
- conn.query("INSERT INTO users_personal_info (user_id, lastname, firstname) VALUES (?, ?, ?)", [userId, lastname, firstname], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- var token = randomstring.generate(30);
- conn.query("INSERT INTO users_activate (user_id, token) VALUES (?, ?)", [userId, token], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- fs.readFile('./templates/auth/register.html', 'utf8', function read(err, data) {
- if (err) {
- res.status(500).json({ message: 'Nem lehetett elküldeni az emailt! Kérlek vedd fel velünk a kapcsolatot.' });
- } else {
- var template = data.replace('{token}', token);
- var mailOptions = {
- from: 'info@srkhost.eu',
- to: email,
- subject: 'Fiók Aktiválás - SRKHOST',
- html: template
- };
- transporter.sendMail(mailOptions, function (error, info) {
- if (error) {
- res.status(500).json({ message: 'Nem lehetett elküldeni az emailt! Kérlek vedd fel velünk a kapcsolatot.' });
- } else {
- res.json({ message: "Sikeres regisztráció! Emailben elküldük az aktiváló linket." });
- }
- });
- }
- });
- }
- });
- }
- });
- }
- });
- }
- else res.status(500).json({ message: "Ezzel az email címmel már regisztráltak!" });
- });
- }
- else res.status(500).json({ message: "Nem egyeznek meg a jelszavak!" });
- }
- else res.status(500).json({ message: "A jelszónak 8 és 32 karakter között kell lennie!" });
- }
- else res.status(500).json({ message: "Nem megfelelő email cím!" });
- }
- else res.status(500).json({ message: "A vezetéknév és a keresztnév minimum 3 karakteres, maximum 20 karakteres lehet!" });
- }
- else res.status(500).json({ message: "Nem töltöttél ki minden mezőt!" });
- }
- else res.status(500).json({ message: "Rendszerhiba történt! Kérlek vedd fel velünk a kapcsolatot." });
- });
- // Activate
- router.post('/activate', function (req, res) {
- if (req.body.token) {
- var token = req.body.token.trim();
- conn.query("SELECT * FROM users_activate WHERE token = ?", [token], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else if (result.length == 1) {
- var json = JSON.parse(JSON.stringify(result))[0];
- conn.query("UPDATE users SET active = 1 WHERE id = ?", [json.user_id], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- conn.query("DELETE FROM users_activate WHERE token = ?", [token], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- res.json({ message: "Sikeres fiók aktiválás! Most már beléphetsz." });
- }
- });
- }
- });
- }
- else res.status(500).json({ message: "Nem található aktivációs token!" });
- });
- }
- else res.status(500).json({ message: "Rendszerhiba történt! Kérlek vedd fel velünk a kapcsolatot." });
- });
- // Forgot Password
- router.post('/forgot-password', function (req, res) {
- if (req.body.email) {
- var email = striptags(req.body.email.trim());
- if (email) {
- if (validator.isLength(email, 6, 40) && validator.isEmail(email)) {
- conn.query('SELECT * FROM users WHERE email = ?', [email], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- if (result.length == 1) {
- var user = JSON.parse(JSON.stringify(result))[0];
- conn.query("SELECT * FROM users_forgot_password WHERE user_id = ? AND used = 0", [user.id], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- if (result.length > 0) {
- var forgot_password = JSON.parse(JSON.stringify(result))[0];
- conn.query("UPDATE users_forgot_password SET used = 1 WHERE id = ?", [forgot_password.id], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- });
- }
- }
- });
- var token = randomstring.generate(40);
- var now = new Date();
- conn.query("INSERT INTO users_forgot_password (user_id, token, used, creadate) VALUES (?, ?, 0, ?)", [user.id, token, date.format(now, 'YYYY-MM-DD HH:mm:ss')], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- fs.readFile('./templates/auth/forgotPassword.html', 'utf8', function read(err, data) {
- if (err) {
- res.status(500).json({ message: 'Nem lehetett elküldeni az emailt! Kérlek vedd fel velünk a kapcsolatot.' });
- } else {
- var template = data.replace('{token}', token);
- var mailOptions = {
- from: 'info@srkhost.eu',
- to: user.email,
- subject: 'Jelszó változtatás - SRKHOST',
- html: template
- };
- transporter.sendMail(mailOptions, function (error, info) {
- if (error) {
- res.status(500).json({ message: 'Nem lehetett elküldeni az emailt! Kérlek vedd fel velünk a kapcsolatot.' });
- } else {
- res.json({ message: "Sikeres jelszó kérés! Emailben elküldtük az új jelszó beállító linket." });
- }
- });
- }
- });
- }
- });
- }
- else res.status(500).json({ message: 'Nem található email cím!' });
- }
- });
- }
- else res.status(500).json({ message: "Nem megfelelő email cím!" });
- }
- else res.status(500).json({ message: "Nem töltöttél ki minden mezőt!" });
- }
- else res.status(500).json({ message: "Rendszerhiba történt! Kérlek vedd fel velünk a kapcsolatot." });
- });
- // New password
- router.post('/new-password', function (req, res) {
- if (req.body.token && req.body.password && req.body.passwordAgain) {
- var token = req.body.token.trim();
- var password = req.body.password.trim();
- var passwordAgain = req.body.passwordAgain.trim();
- if (token && password && passwordAgain) {
- if (validator.isLength(password, 8, 32)) {
- if (password == passwordAgain) {
- conn.query("SELECT * FROM users_forgot_password WHERE token = ? AND used = 0", [token], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- if (result.length == 1) {
- var forgot_password = JSON.parse(JSON.stringify(result))[0];
- var salt = bcrypt.genSaltSync(saltRounds);
- var hash = bcrypt.hashSync(password, salt);
- conn.query("UPDATE users SET password = ? WHERE id = ?", [hash, forgot_password.user_id], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- conn.query("UPDATE users_forgot_password SET used = 1 WHERE id = ?", [forgot_password.id], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- fs.readFile('./templates/auth/newPassword.html', 'utf8', function read(err, data) {
- if (err) {
- res.status(500).json({ message: 'Nem lehetett elküldeni az emailt! Kérlek vedd fel velünk a kapcsolatot.' });
- } else {
- conn.query("SELECT * FROM users WHERE id = ?", [forgot_password.user_id], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'Nem lehetett elküldeni az emailt! Kérlek vedd fel velünk a kapcsolatot.' });
- }
- else {
- var user = JSON.parse(JSON.stringify(result))[0];
- var mailOptions = {
- from: 'info@srkhost.eu',
- to: user.email,
- subject: 'Jelszavad megváltozott - SRKHOST',
- html: data
- };
- transporter.sendMail(mailOptions, function (error, info) {
- if (error) {
- res.status(500).json({ message: 'Nem lehetett elküldeni az emailt! Kérlek vedd fel velünk a kapcsolatot.' });
- } else {
- res.json({ message: "Sikeres jelszó kérés! Emailben elküldtük az új jelszó beállító linket." });
- }
- });
- }
- });
- }
- });
- }
- });
- }
- });
- }
- else res.status(500).json({ message: "Nem található token!" });
- }
- });
- }
- else res.status(500).json({ message: "Nem egyeznek meg a jelszavak!" });
- }
- else res.status(500).json({ message: "A jelszónak 8 és 32 karakter között kell lennie!" });
- }
- else res.status(500).json({ message: "Nem töltöttél ki minden mezőt!" });
- }
- else res.status(500).json({ message: "Rendszerhiba történt! Kérlek vedd fel velünk a kapcsolatot." });
- });
- // Change password
- router.post('/change-password', function (req, res) {
- if (req.body.oldPass && req.body.newPass && req.body.newPassAgain) {
- var oldPass = req.body.oldPass.trim();
- var newPass = req.body.newPass.trim();
- var newPassAgain = req.body.newPassAgain.trim();
- if (oldPass && newPass && newPassAgain) {
- conn.query("SELECT * FROM users WHERE id = ?", [req.user.json.id], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- var user = JSON.parse(JSON.stringify(result))[0];
- if (bcrypt.compareSync(oldPass, user.password)) {
- if (validator.isLength(newPass, 8, 32) && validator.isLength(newPassAgain, 8, 32)) {
- if (newPass == newPassAgain) {
- var salt = bcrypt.genSaltSync(saltRounds);
- var hash = bcrypt.hashSync(newPass, salt);
- conn.query("UPDATE users SET password = ? WHERE id = ?", [hash, req.user.json.id], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- res.json({ message: "Sikeres jelszó változtatás!" });
- }
- });
- }
- else res.status(500).json({ message: "Nem egyeznek meg a jelszavak!" });
- }
- else res.status(500).json({ message: "Az új jelszónak 8 és 32 karakter között kell lennie!" });
- }
- else res.status(500).json({ message: "Nem megfelelő régi jelszó!" });
- }
- });
- }
- else res.status(500).json({ message: "Nem töltöttél ki minden mezőt!" });
- }
- else res.status(500).json({ message: "Rendszerhiba történt! Kérlek vedd fel velünk a kapcsolatot." });
- });
- // Update User Data
- router.post('/update-user', function (req, res) {
- if (req.body.user) {
- var lastname = striptags(req.body.user.lastname).trim();
- var firstname = striptags(req.body.user.firstname).trim();
- var address1 = striptags(req.body.user.address1).trim();
- var address2 = striptags(req.body.user.address2).trim();
- var country = striptags(req.body.user.country).trim();
- var county = striptags(req.body.user.county).trim();
- var state = striptags(req.body.user.state).trim();
- var post_code = req.body.user.post_code;
- var phone_number = striptags(req.body.user.phone_number).trim();
- var company = striptags(req.body.user.company).trim();
- if (lastname && firstname && country) {
- if (validator.isLength(lastname, 3, 20) && validator.isLength(firstname, 3, 20)) {
- conn.query("UPDATE users_personal_info SET lastname = ?, firstname = ?, address1 = ?, address2 = ?, country = ?, county = ?, state = ?, post_code = ?, phone_number = ?, company = ?",
- [lastname, firstname, address1, address2, country, county, state, post_code, phone_number, company], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- res.json({ message: "Sikeres adat szerkesztés!" });
- }
- });
- }
- else res.status(500).json({ message: "A vezetéknév és a keresztnév minimum 3 karakteres, maximum 20 karakteres lehet!" });
- }
- else res.status(500).json({ message: "Nem töltöttél ki minden mezőt!" });
- }
- else res.status(500).json({ message: "Rendszerhiba történt! Kérlek vedd fel velünk a kapcsolatot." });
- });
- // Check Token
- router.get('/checktoken', function (req, res) {
- res.json({ message: 'Megfelelő token!' });
- });
- // User Data
- router.get('/info', function (req, res) {
- conn.query('SELECT * FROM users WHERE id = ?', [req.user.json.id], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- var user = JSON.parse(JSON.stringify(result))[0];
- conn.query('SELECT * FROM users_personal_info WHERE user_id = ?', [user.id], function (err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- var userData = JSON.parse(JSON.stringify(result))[0];
- res.json({
- "id": user.id,
- "email": user.email,
- "credit": user.credit,
- "admin": user.admin,
- "lastname": userData.lastname,
- "firstname": userData.firstname,
- "address1": userData.address1,
- "address2": userData.address2,
- "country": userData.country,
- "county": userData.county,
- "state": userData.state,
- "post_code": userData.post_code,
- "phone_number": userData.phone_number,
- "company": userData.company
- });
- }
- })
- }
- });
- });
- // Is Admin
- router.get('/isAdmin', function (req, res) {
- conn.query("SELECT id, admin FROM users WHERE id = ?", [req.user.json.id], function(err, result) {
- if (err) {
- res.status(500).json({ message: 'MySQL Hiba' });
- }
- else {
- var user = JSON.parse(JSON.stringify(result))[0];
- if(user.admin == 1) {
- res.json({ message: "A felhasználó admin!" });
- }
- else res.status(500).json({ message: "A felhasználó nem admin!" });
- }
- });
- });
- // Logout
- router.post('/logout', function (req, res) {
- res.json({ message: 'Sikeres kilépés!' });
- });
- module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement