Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // app/routes.js
- module.exports = function(app, passport) {
- // 首頁 ===============================
- app.get('/', function(req, res) {
- res.render('index.ejs'); // 載入 index.ejs file
- });
- // 登入頁
- app.get('/login', function(req, res) {
- res.render('login.ejs', { message: req.flash('loginMessage') });
- });
- // 處理登入
- app.post('/login', passport.authenticate('local-login', {
- successRedirect : '/profile', // 成功則導入profile
- failureRedirect : '/login', // 失敗則返回登入頁
- failureFlash : true // 允許 flash 訊息
- }));
- // FACEBOOK 登入路由 =====================
- app.get('/auth/facebook', passport.authenticate('facebook'));
- // 處理登入後的callback url
- app.get('/auth/facebook/callback',
- passport.authenticate('facebook', {
- successRedirect : '/profile',
- failureRedirect : '/'
- }));
- // 登出用
- app.get('/logout', function(req, res) {
- req.logout();
- res.redirect('/');
- });
- // 帳號綁定/聯結其他社群帳號 =============
- // 綁定本地帳戶 --------------------------------
- app.get('/connect/local', isLoggedIn, function(req, res) {
- res.render('connect-local.ejs', { message: req.flash('loginMessage') });
- });
- app.post('/connect/local', isLoggedIn, passport.authenticate('local-connect', {
- successRedirect : '/profile', // redirect to the secure profile section
- failureRedirect : '/connect/local', // redirect back to the signup page if there is an error
- failureFlash : true // allow flash messages
- }));
- // facebook 綁定-------------------------------
- app.get('/connect/facebook', passport.authorize('facebook', { scope : 'email' }));
- app.get('/connect/facebook/callback',
- passport.authorize('facebook', {
- successRedirect : '/profile',
- failureRedirect : '/'
- }));
- // 註冊表單
- app.get('/signup', function(req, res) {
- res.render('signup.ejs', { message: req.flash('signupMessage') });
- });
- // 處理註冊
- app.post('/signup', passport.authenticate('local-signup', {
- successRedirect : '/profile', // redirect to the secure profile section
- failureRedirect : '/signup', // redirect back to the signup page if there is an error
- failureFlash : true // allow flash messages
- }));
- // PROFILE =====================
- // 需要權限才能造訪的頁面我們就用 isLoggedIn function 來處理
- app.get('/profile', isLoggedIn, function(req, res) {
- res.render('profile.ejs', {
- user : req.user
- });
- });
- // 帳號解除綁定 =============================================================
- // 社群帳號, 只移除token以方便日後要重新綁定
- // 本地帳號則會移除email & password
- // 本地帳號 -----------------------------------
- app.get('/unlink/local', function(req, res) {
- var user = req.user;
- user.local.email = undefined;
- user.local.password = undefined;
- user.save(function(err) {
- res.redirect('/profile');
- });
- });
- // facebook -------------------------------
- app.get('/unlink/facebook', function(req, res) {
- var user = req.user;
- user.facebook.token = undefined;
- user.save(function(err) {
- res.redirect('/profile');
- });
- });
- // 登出 ==============================
- app.get('/logout', function(req, res) {
- req.logout();
- res.redirect('/');
- });
- };
- // 處理權限
- function isLoggedIn(req, res, next) {
- if (req.isAuthenticated())
- return next();
- res.redirect('/');
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement