示例#1
0
function make(app,express) {
  var everyauth = require('everyauth-express3')
    , routes = require('./mycloud/routes')
    , fs = require('fs');

  var db = require('./mycloud/lib/db.js');  
  var dir_info = require('./mycloud/lib/dir_info.js');

  var usersByLogin = {
    'admin': {
        id: 1,
      name: 'Admin',
        login: '******',
      email: '*****@*****.**',
        password: '******',
      maxSize: '10M'
    },
    'torsten': {
        id: 2,
      name: 'Torsten Hein',
        login: '******',
      email: '*****@*****.**',
        password: '******',
      maxSize: '1GB'
    }
  };

  everyauth
    .password
      .loginWith('login') // login, email or phone
      .getLoginPath('/login')
      .postLoginPath('/login')
      //.loginView('login')
      .loginLocals( function (req, res, done) {
        setTimeout( function () {
          done(null, {
            title: 'Login'
          });
        }, 200);
      })
      .authenticate( function (login, password) {
        var errors = [];
        if (!login) errors.push('Missing login');
        if (!password) errors.push('Missing password');
      if (errors.length) return errors;
        var user = usersByLogin[login];
      if (!user) return ['Login failed'];
        if (user.password !== password) return ['Login failed'];
      return user;
      })
    .respondToLoginSucceed( function (res, user) {
      if (user) { // Then the login was successful
          return res.json({ status: 'ok' }, 200);
        }
      })
      .respondToLoginFail( function (req, res, errors, login) {
      if (!errors || !errors.length) return;
      console.log('login failed ' + JSON.stringify(errors));
        return res.json({ status: 'fail', errors: errors }, 200);
      })
      .getRegisterPath('/register')
      .postRegisterPath('/register')
      .registerView('register.jade')
      .registerLocals( function (req, res, done) {
        setTimeout( function () {
          done(null, {
            title: 'Async Register'
          });
        }, 200);
      })
      .extractExtraRegistrationParams( function (req) {
        return {
            email: req.body.email
        };
      })
      .validateRegistration( function (newUserAttrs, errors) {
        var login = newUserAttrs.login;
        if (usersByLogin[login]) errors.push('Login already taken');
        return errors;
      })
      .registerUser( function (newUserAttrs) {
        var login = newUserAttrs[this.loginKey()];
        return usersByLogin[login] = newUserAttrs;
      });
      //.loginSuccessRedirect('/files');
      //.registerSuccessRedirect('/');

  everyauth.everymodule.findUserById( function (userId, callback) {
    for (login in usersByLogin) {
      if (usersByLogin[login].id == userId) {
      // FUNZT!!! console.log(JSON.stringify(usersByLogin[login]) + ' found by id ' + userId);
      return callback(null, usersByLogin[login]);
    }
    }
    
    console.log('user not found by id ' + userId);
    callback(['user not found'], null);
    //User.findById(userId, callback);
    // callback has the signature, function (err, user) {...}
  });

  var authRequired = function(req, res, next) {
    if (req.loggedIn) {
      return next();
    }
    if (req.headers['user-agent'])
      res.redirect('/');
    else 
      res.json( { status: 'fail', message: 'authorization required'}, 401 );
  };

  // Configuration
  var serverConfig = require('./mycloud/serverConfig.js');

  app.configure(function(){
    app.use(express.bodyParser({uploadDir:'./uploads'}));
    app.use(express.methodOverride());
    app.use(everyauth.middleware(app));
  });

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

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

  app.get('/dir*', authRequired, routes.listDirEntries);
  app.post('/dir*', authRequired, routes.createDirectory);
  app.put('/dir*', authRequired, routes.renameDirectory);
  app.del('/dir*', authRequired, routes.deleteDirectory);
  app.get('/file*', authRequired, routes.downloadFile);
  app.post('/file*', authRequired, routes.formUploadData);
  app.put('/file*', authRequired, routes.renameFile);
  app.del('/file*', authRequired, routes.deleteFile);

  app.get('/list', authRequired, routes.filelist);

  dir_info.syncDBWithFS(serverConfig.data.dbName, serverConfig.data.basepath,  function(err, data) {
   if (err) console.log(err);
   serverConfig.data.files = data;
 });

  
}
示例#2
0
	}
	connection.query(q, function(err, rows, fields) {
		if (err) throw err;
		callback(rows, fields);
		if (connection != null) {
			connection.end();
			connection = null;
		}
	});
}

everyauth.everymodule.findUserById(function(userId, callback) {
	console.log(userId);
	dbQuery("select * from users where id='"+userId+"'", function(rows, fields) {
		//if (rows.length == 1) {
			console.log(rows[0]);
			callback(false, rows[0]);
		//}
	});
});

var login = function(username, password, res) {
	console.log(username + ", " + password);
	dbQuery("select * from users where username='******' AND password='******'", function(rows, fields) {
		if (rows.length == 1) {
			res.render("login", {title: "home", userinfo: rows[0]});
		}
		else {
			res.write("invalid username or password");
			res.end();
		}