CleverStack / cleverstack-cli

CLI for CleverStack
http://youtube.com/watch?v=-4ArURHExhQ
MIT License
196 stars 33 forks source link

Clever Backend with custom token authentication #42

Closed MauritzKruger closed 9 years ago

MauritzKruger commented 9 years ago

Hi Richard,

I'm experiencing issues with my backend, works perfect with my frontend, but now I created a extra controller and service to serve as multi-domain service to supply my help content to requesting domain via an http.get with custom where, example:

$http.get( http://some_ip/help?domain=WIMS, {headers : {<some custom headers with token key>}} 

When executing get function from Chrome DHC, the api provides me with correct feedback, but when executing get from service of web application not built with clever-cli, i get a 204 No Content error, not sending the correct key however sends me the correct 'Not Authenticated' message as it should. Can you by any chance assist with correct solution?

Here is my controller code, left route as generated by generator:

//  Controller
var jwt = require('jsonwebtoken');

module.exports = function( app, Controller, HelpService ) {
    var allowOrigin = '*';

    return Controller.extend(
        /** @Class **/
        {
            autoRouting: [ 'authenticateToken' ],

            service: HelpService,

            authenticateToken: function ( req, res, next ) {
                app.set('tokenSecret', <some_secret>);
                app.set('tokenKey', <some_token_key>);

                var token = (req.body && req.body.access_token) || (req.query && req.query.access_token) || req.headers['x-access-token'];

                if (token) {
                    jwt.verify(token, app.get('tokenSecret'), function(err, decoded) {
                        if (err) {
                            res.send( 401 );
                        } else {
                            if ( decoded.token === app.get('tokenKey') ) {
                                return next();
                            } else {
                                res.send( 401 );
                            }
                        }
                    });
                } else {
                    res.send( 401 );
                }
            }, //tested
        },
        /** @Prototype **/
        {

        });
}

Kind regrards, Mauritz Kruger (member of ITE {Integrity Engineering})