index.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. var passport = require('passport');
  2. var GitHubStrategy = require('passport-github').Strategy;
  3. var LocalStrategy = require('passport-local').Strategy;
  4. var r = require('../db');
  5. passport.serializeUser(function (user, done) {
  6. console.log(user, 555);
  7. return done(null, user.id);
  8. });
  9. passport.deserializeUser(function (id, done) {
  10. console.log(id, 444);
  11. r
  12. .table('users')
  13. .get(id)
  14. .run(r.conn)
  15. .then(function (user) {
  16. done(null, user);
  17. });
  18. });
  19. var loginCallbackHandler = function (objectMapper, type) {
  20. return function (accessToken, refreshToken, profile, done) {
  21. if (accessToken !== null) {
  22. r
  23. .table('users')
  24. .getAll(profile.username, { index: 'login' })
  25. .filter({ type: type })
  26. .run(r.conn)
  27. .then(function (cursor) {
  28. return cursor.toArray()
  29. .then(function (users) {
  30. if (users.length > 0) {
  31. return done(null, users[0]);
  32. }
  33. return r.table('users')
  34. .insert(objectMapper(profile))
  35. .run(r.conn)
  36. .then(function (response) {
  37. return r.table('users')
  38. .get(response.generated_keys[0])
  39. .run(r.conn);
  40. })
  41. .then(function (newUser) {
  42. done(null, newUser);
  43. });
  44. });
  45. })
  46. .catch(function (err) {
  47. console.log('Error Getting User', err);
  48. });
  49. }
  50. };
  51. };
  52. var callbackURL = 'http://127.0.0.1:3000/auth/login/callback';
  53. // Github
  54. passport.use(new GitHubStrategy({
  55. clientID: "c5516f218aa8682ac67d",
  56. clientSecret: "5a3ee482ab2eb4ade56ab6ea01fd7544dd9a9be9",
  57. callbackURL: callbackURL + '/github'
  58. },
  59. loginCallbackHandler(function (profile) {
  60. return {
  61. 'login': profile.username,
  62. 'name': profile.displayName || null,
  63. 'url': profile.profileUrl,
  64. 'avatarUrl': profile._json.avatar_url,
  65. 'type': 'github'
  66. };
  67. }, 'github')
  68. ));
  69. // Local
  70. passport.use(new LocalStrategy(
  71. function(username, password, done) {
  72. /*User.findOne({ username: username }, function (err, user) {
  73. if (err) { return done(err); }
  74. if (!user) {
  75. return done(null, false, { message: 'Incorrect username.' });
  76. }
  77. if (!user.validPassword(password)) {
  78. return done(null, false, { message: 'Incorrect password.' });
  79. }
  80. return done(null, user);
  81. });*/
  82. //TODO Check password
  83. // This is checking if passord is valid and all
  84. console.log(username, password);
  85. return done(null, {id: "potatoe", login: "Kris", name: "Kristian", url: "no", avatarUrl: "no", type: "local"});
  86. }
  87. ));
  88. passport.checkIfLoggedIn = function (req, res, next) {
  89. console.log(req.user, 666);
  90. if (req.user) {
  91. return next();
  92. }
  93. return res.status(401).send('You\'re not logged in');
  94. };
  95. module.exports = passport;