Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

everyauth is not defined

I am new to nodejs, everyauth,etc. I am having some trouble with everyauth. In my view, if I access everyauth object, I get an error 'everyauth is not defined'. However the oauth flow itself works fine with everyauth. Here are the details,

entry point - app.js

var express = require('express');
var everyauth = require('everyauth');
everyauth.debug = true;
var app = express();


everyauth['37signals']
  .appId('e6e76726501abf1b5627fe854b384ef8d62d7a55')
  .appSecret('7c6891f46cb19aaf1831785968630ed4a1b3c342')
  .findOrCreateUser( function (sess, accessToken, accessSecret, _37signalsUser) {
  //code to handle find or create
}
  .redirectPath('/');

app.configure(function(){
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.cookieParser());
  app.use(express.session({ secret: 'foobar' }));
  app.use(express.bodyParser());
  app.use(everyauth.middleware());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(__dirname + '/public'));
  everyauth.helpExpress(app);
});




app.configure('development', function(){
  console.log('inside development configure');
  app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
});

app.configure('production', function(){
  app.use(express.errorHandler()); 
});

app.get('/', function (req, res) {
  console.log('everyauthloggedin='+ everyauth.loggedIn); // everyauth.loggedIn is undefined
    res.render('home');
});

home.jade

if(!everyauth.loggedIn) // get everyauth is not defined
    h2 Not authenicated 
else
    h2 Authenicated
    p= JSON.stringify(everyauth['37signals'].user)  

node modules installed,

[email protected]:\dev\misc\hge\highrise
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └─┬ [email protected]
│ │   ├── [email protected]
│ │   └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│   └── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └─┬ [email protected]
│   └── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ └── [email protected]
├── [email protected]
├─┬ [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │   └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ └── [email protected]
└─┬ [email protected]
  └── [email protected]

Edit - Adding the example which I followed,

From everyauth site

In the main app file - https://github.com/bnoguchi/everyauth/blob/master/example/server.js, render the view using..

app.get('/', function (req, res) {
  res.render('home');
});

In the view file,access the everyauth object - https://github.com/bnoguchi/everyauth/blob/master/example/views/home.jade

- if (!everyauth.loggedIn)
  h2 Not Authenticated

The everyauth object is not passed to the view here, unless I am missing something.

like image 791
user1566788 Avatar asked Aug 27 '12 02:08

user1566788


1 Answers

This is an old question, but I was having the same problem and was very frustrated to see that another dev had the exactly same problem and the only answers where completely off

It took me a couple of hours to do a line-by-line comparisson of my code and the examples, but finally got it right:

you have:

app.configure(function(){
    //...
    app.use(everyauth.middleware());
    //...
}

but shoud be

app.configure(function(){
    //...
    app.use(everyauth.middleware(app));
    //...
}

and that's it. now everyauth is defined on the jade views and all works as expected.

like image 169
David Lay Avatar answered Sep 22 '22 00:09

David Lay