Guest User

Untitled

a guest
Oct 8th, 2018
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1. // This function implements anonymous creation logic.
  2.  
  3. function loadOrCreateAnonymousProfile(req, res, next) {
  4. var sess = req.session,
  5. auth = sess && sess.auth;
  6. if (!auth || !auth.userId) {
  7. dbCounter('anonymousUsers', function(err, counter) {
  8. if (err) {
  9. console.log('Error getting anonymous users counter', err);
  10. next();
  11. return;
  12. }
  13.  
  14. User.create({
  15. login: "User " + counter,
  16. is_anonymous: true
  17. }, function (err, user) {
  18. if (err) {
  19. console.log("Error creating anonymous", err);
  20. } else {
  21. var _auth = sess.auth || (sess.auth = {});
  22. _auth.userId = user.id;
  23. _auth.loggedIn = true;
  24. }
  25.  
  26. next();
  27. });
  28. });
  29. } else {
  30. next();
  31. }
  32. }
  33.  
  34.  
  35. // The rest is usual setup.
  36.  
  37.  
  38.  
  39.  
  40. // Counters.
  41. var CounterSchema = new Schema({
  42. next: Number
  43. });
  44. CounterSchema.statics.findAndModify = function (query, sort, doc, options, callback) {
  45. return this.collection.findAndModify(query, sort, doc, options, callback);
  46. };
  47. var Counter = mongoose.model('Counter', CounterSchema);
  48. function dbCounter(name, cb) {
  49. var ret = Counter.findAndModify({_id:name}, [], {$inc : {next:1}}, {"new":true, upsert:true}, function(err, data) {
  50. if (err) {
  51. cb(err);
  52. } else {
  53. cb(null, data.next);
  54. }
  55.  
  56. });
  57. }
  58.  
  59. // User.
  60. var UserSchema = new Schema({
  61. is_anonymous: {'type': Boolean, 'default': false}
  62. });
  63. var User;
  64.  
  65. UserSchema.plugin(mongooseAuth, {
  66. everymodule: {
  67. everyauth: {
  68. User: function () {
  69. return User;
  70. }
  71. }
  72. },
  73. password: {
  74. everyauth: {
  75. getLoginPath: '/signin',
  76. postLoginPath: '/signin',
  77. loginView: 'signin.jade',
  78. getRegisterPath: '/signup',
  79. postRegisterPath: '/signup',
  80. registerView: 'signup.jade',
  81. loginSuccessRedirect: '/',
  82. registerSuccessRedirect: '/'
  83. }
  84. }
  85. });
  86. mongoose.model('User', UserSchema);
  87. User = mongoose.model('User');
  88.  
  89.  
  90.  
  91. // Express server create.
  92. var app = exports.app = express.createServer();
  93.  
  94. // Express server configure.
  95. app.configure(function() {
  96. app.use(express.cookieParser('secret'))
  97. .use(express.session({
  98. secret: 'secret',
  99. cookie: {maxAge: 60000 * 60 * 24 * 30}, // Month
  100. store: new mongoStore({db: mongoose.connection.db})
  101. }))
  102. .use(express.bodyParser())
  103. .use(loadOrCreateAnonymousProfile) // Should be placed before auth middleware.
  104. .use(mongooseAuth.middleware()); // Anonymous user loaded here.
  105. });
Add Comment
Please, Sign In to add comment