Advertisement
Guest User

Untitled

a guest
Mar 26th, 2016
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.70 KB | None | 0 0
  1. // app/routes.js
  2. module.exports = function(app, passport) {
  3.  
  4. // 首頁 ===============================
  5. app.get('/', function(req, res) {
  6. res.render('index.ejs'); // 載入 index.ejs file
  7. });
  8.  
  9. // 登入頁
  10. app.get('/login', function(req, res) {
  11. res.render('login.ejs', { message: req.flash('loginMessage') });
  12. });
  13.  
  14. // 處理登入
  15. app.post('/login', passport.authenticate('local-login', {
  16. successRedirect : '/profile', // 成功則導入profile
  17. failureRedirect : '/login', // 失敗則返回登入頁
  18. failureFlash : true // 允許 flash 訊息
  19. }));
  20. // FACEBOOK 登入路由 =====================
  21. app.get('/auth/facebook', passport.authenticate('facebook'));
  22.  
  23. // 處理登入後的callback url
  24. app.get('/auth/facebook/callback',
  25. passport.authenticate('facebook', {
  26. successRedirect : '/profile',
  27. failureRedirect : '/'
  28. }));
  29.  
  30. // 登出用
  31. app.get('/logout', function(req, res) {
  32. req.logout();
  33. res.redirect('/');
  34. });
  35.  
  36. // 帳號綁定/聯結其他社群帳號 =============
  37.  
  38. // 綁定本地帳戶 --------------------------------
  39. app.get('/connect/local', isLoggedIn, function(req, res) {
  40. res.render('connect-local.ejs', { message: req.flash('loginMessage') });
  41. });
  42. app.post('/connect/local', isLoggedIn, passport.authenticate('local-connect', {
  43. successRedirect : '/profile', // redirect to the secure profile section
  44. failureRedirect : '/connect/local', // redirect back to the signup page if there is an error
  45. failureFlash : true // allow flash messages
  46. }));
  47.  
  48. // facebook 綁定-------------------------------
  49.  
  50.  
  51. app.get('/connect/facebook', passport.authorize('facebook', { scope : 'email' }));
  52.  
  53.  
  54. app.get('/connect/facebook/callback',
  55. passport.authorize('facebook', {
  56. successRedirect : '/profile',
  57. failureRedirect : '/'
  58. }));
  59.  
  60. // 註冊表單
  61. app.get('/signup', function(req, res) {
  62. res.render('signup.ejs', { message: req.flash('signupMessage') });
  63. });
  64.  
  65. // 處理註冊
  66. app.post('/signup', passport.authenticate('local-signup', {
  67. successRedirect : '/profile', // redirect to the secure profile section
  68. failureRedirect : '/signup', // redirect back to the signup page if there is an error
  69. failureFlash : true // allow flash messages
  70. }));
  71.  
  72. // PROFILE =====================
  73. // 需要權限才能造訪的頁面我們就用 isLoggedIn function 來處理
  74. app.get('/profile', isLoggedIn, function(req, res) {
  75. res.render('profile.ejs', {
  76. user : req.user
  77. });
  78. });
  79. // 帳號解除綁定 =============================================================
  80. // 社群帳號, 只移除token以方便日後要重新綁定
  81. // 本地帳號則會移除email & password
  82.  
  83. // 本地帳號 -----------------------------------
  84. app.get('/unlink/local', function(req, res) {
  85. var user = req.user;
  86. user.local.email = undefined;
  87. user.local.password = undefined;
  88. user.save(function(err) {
  89. res.redirect('/profile');
  90. });
  91. });
  92.  
  93. // facebook -------------------------------
  94. app.get('/unlink/facebook', function(req, res) {
  95. var user = req.user;
  96. user.facebook.token = undefined;
  97. user.save(function(err) {
  98. res.redirect('/profile');
  99. });
  100. });
  101.  
  102.  
  103. // 登出 ==============================
  104. app.get('/logout', function(req, res) {
  105. req.logout();
  106. res.redirect('/');
  107. });
  108. };
  109.  
  110. // 處理權限
  111. function isLoggedIn(req, res, next) {
  112. if (req.isAuthenticated())
  113. return next();
  114. res.redirect('/');
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement