Skip to main content

jwt express

/*requiring node modules starts */

var express = require("express"), router = express.Router();
var app = module.exports = express();
var http = require('http').Server(app);
var io = require("socket.io")(http);
var Session = require('express-session');
var cookieParser = require('cookie-parser');
/*requiring node modules ends */

var jwt    = require('jsonwebtoken'); // used to create, sign, and verify tokens
var bcrypt = require('bcryptjs');

// the session is stored in a cookie, so we use this to parse it
app.use(cookieParser());

var Session = Session({
    secret:'secrettokenhere',
    saveUninitialized: true,
    resave: true
});


io.use(function(socket, next) {
    Session(socket.request, socket.request.res, next);
});


app.use(Session);


// app.use(Session({secret:'davzk#1234', cookie:{maxAge:7200}}));

var sessionInfo = {};

/* requiring config file */
var config =require('./middleware/config.js')(app);

/* requiring config db.js file */
var db = require("./middleware/db.js");

var connection_object= new db();
var connection=connection_object.connection; // getting conncetion object here

var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({
    extended: true
}));
app.use(bodyParser.json());

// var User   = require('./app/models/user'); // get our mongoose model
// get an instance of the router for api routes
var apiRoutes = express.Router();
// route to authenticate a user (POST http://localhost:8080/api/authenticate)
apiRoutes.post('/authenticate', function(req, res) {
    // find the user
    connection.query("SELECT * FROM users WHERE phone = ? OR email = ? LIMIT 1", [req.body.username, req.body.username], function(err, user) {
        if (err) { // throw err;
            res.json({
                status: 0,
                msg: 'Query failed',
            });
        }

        if (!user || !user[0]) {
          res.json({ success: false, message: 'Authentication failed. User not found.' });
        } else if (user) {
            // check if password matches
            if (!bcrypt.compareSync(req.body.password, user[0].password)) {
                res.json({ success: false, message: 'Authentication failed. Wrong password.' });
            } else {
                // if user is found and password is right
                // create a token
                var token = jwt.sign(user[0], app.get('jwt_secret'), {
                    //expiresInMinutes: 1440 // expires in 24 hours
                    expiresIn: 120 //120
                });
                // return the information including token as JSON
                res.json({
                    status: 1,
                    msg: 'Success',
                    token: token
                });
            }
        } // End else check (suser)

    }); // End query
});

function requireLogin(req, res, next) {
    // check header or url parameters or post parameters for token
    var token = req.body.token || req.query.token || req.headers['x-access-token'];

    // decode token
    if (token) {
        // verifies secret and checks exp
        jwt.verify(token, app.get('jwt_secret'), function(err, decoded) {
            if (err) {
                return res.json({ success: false, message: 'Failed to authenticate token.' });
            } else {
                // if everything is good, save to request for use in other routes
                req.decoded = decoded;
                next();
            }
        });
 
    } else {
        // if there is no token
        // return an error (or redirect if in web-route)
        return res.status(403).send({
            success: false,
            message: 'No token provided.'
        });
    }
}

// route middleware to verify a token
/*apiRoutes.use(function(req, res, next) {
    // check header or url parameters or post parameters for token
    var token = req.body.token || req.query.token || req.headers['x-access-token'];

    // decode token
    if (token) {
        // verifies secret and checks exp
        jwt.verify(token, app.get('jwt_secret'), function(err, decoded) {
            if (err) {
                return res.json({ success: false, message: 'Failed to authenticate token.' });
            } else {
                // if everything is good, save to request for use in other routes
                req.decoded = decoded;
                next();
            }
        });
 
    } else {
        // if there is no token
        // return an error
        return res.status(403).send({
            success: false,
            message: 'No token provided.'
        });
    }
});*/
// apiRoutes.use(requireLogin);

// route to show a random message (GET http://localhost:8080/api/)
apiRoutes.get('/', function(req, res) {
  res.json({ message: 'Welcome to the coolest API on earth!' });
});

apiRoutes.get('/users', requireLogin, function(req, res) {
    connection.query("SELECT * FROM users WHERE isVerified = ? ",[1], function(err, rows){
        res.json(rows);
    });
});

// app.use('/', apiRoutes);
require('./middleware/web-routes.js')(app,connection,io,Session,cookieParser,sessionInfo);
app.use('/api', apiRoutes);

require('./middleware/auth-routes.js')(app,connection,io,Session,cookieParser,sessionInfo);

require('./middleware/routes.js')(app,connection,io,Session,cookieParser,sessionInfo);

require('./routes')(app, connection,io,Session,cookieParser,sessionInfo);

require('./middleware/admin-routes.js')(app,connection,io,Session,cookieParser,sessionInfo);

// app.use('/api', apiRoutes);

http.listen(8081,function() {
    console.log("Listening on http://localhost:8081");
});

Comments

Popular posts from this blog

AWS Elasticache Memcached connection

https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/accessing-elasticache.html#access-from-outside-aws http://hourlyapps.blogspot.com/2010/06/examples-of-memcached-commands.html Access memcached https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/GettingStarted.AuthorizeAccess.html Zip include hidden file https://stackoverflow.com/questions/12493206/zip-including-hidden-files phpmemcachedadmin ~ phpMyAdmin or phpPgAdmin ... telnet mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com 11211 stats items stats cachedump 27 100 https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/VPCs.EC.html https://lzone.de/cheat-sheet/memcached VPC ID Security Group ID (sg-...) Cluster: The identifier for the cluster memcached1 Creation Time: The time (UTC) when the cluster was created January 9, 2019 at 11:47:16 AM UTC+7 Configuration Endpoint: The configuration endpoint of the cluster memcached1.ahgofe.cfg.usw1.cache.amazonaws.com:11211 St...

Notes Windows 10 Virtualbox config, PHP Storm Japanese, custom PHP, Apache build, Postgresql

 cmd => Ctrl + Shift + Enter mklink "C:\Users\HauNT\Videos\host3" "C:\Windows\System32\drivers\etc\hosts" https://www.quora.com/How-to-create-a-router-in-php https://serverfault.com/questions/225155/virtualbox-how-to-set-up-networking-so-both-host-and-guest-can-access-internet 1 NAT + 1 host only config https://unix.stackexchange.com/questions/115464/how-to-properly-set-up-2-network-interfaces-in-centos-running-in-virtualbox DEVICE=eth0 TYPE=Ethernet #BOOTPROTO=dhcp BOOTPROTO=none #IPADDR=10.9.11.246 #PREFIX=24 #GATEWAY=10.9.11.1 #IPV4_FAILURE_FATAL=yes #HWADDR=08:00:27:CC:AC:AC ONBOOT=yes NAME="System eth0" [root@localhost www]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 # Advanced Micro Devices, Inc. [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth1 IPADDR=192.168.56.28 <= no eff => auto like DHCP #GATEWAY=192.168.56.1 #BOOTPROTO=dhcp BOOTPROTO=static <= no eff ONBOOT=yes HWADDR=08:00:27:b4:20:10 [root@localhost www]# ...

Rocket.Chat DB schema

_raix_push_notifications avatars.chunks avatars.files instances meteor_accounts_loginServiceConfiguration meteor_oauth_pendingCredentials meteor_oauth_pendingRequestTokens migrations rocketchat__trash rocketchat_cron_history rocketchat_custom_emoji rocketchat_custom_sounds rocketchat_import rocketchat_integration_history rocketchat_integrations rocketchat_livechat_custom_field rocketchat_livechat_department rocketchat_livechat_department_agents rocketchat_livechat_external_message rocketchat_livechat_inquiry rocketchat_livechat_office_hour rocketchat_livechat_page_visited rocketchat_livechat_trigger rocketchat_message rocketchat_oauth_apps rocketchat_oembed_cache rocketchat_permissions rocketchat_raw_imports rocketchat_reports rocketchat_roles rocketchat_room rocketchat_settings rocketchat_smarsh_history rocketchat_statistics rocketchat_subscription rocketchat_uploads system.indexes users usersSessions https://rocket.chat/docs/developer-guides/sc...