diff --git a/passport/app.js b/passport/app.js new file mode 100644 index 0000000..9d52f83 --- /dev/null +++ b/passport/app.js @@ -0,0 +1,8 @@ +'use strict'; +module.exports = app => { + app.passport.verify(async (ctx, user) => { + user.photo = user.photo || 'https://zos.alipayobjects.com/rmsportal/JFKAMfmPehWfhBPdCjrw.svg'; + user.displayName = user.displayName || user.name; + return user; + }); +}; diff --git a/passport/app/controller/home.js b/passport/app/controller/home.js index cfca6af..94e8f60 100644 --- a/passport/app/controller/home.js +++ b/passport/app/controller/home.js @@ -23,13 +23,23 @@ class HomeController extends Controller {
Login with Weibo | Github | - Bitbucket | Twitter + Bitbucket | Twitter | + Local
Home | User `; } } + + async local() { + const { ctx } = this; + if (ctx.isAuthenticated()) { + ctx.body = ctx.user; + } else { + await ctx.render('login.html'); + } + } } module.exports = HomeController; diff --git a/passport/app/router.js b/passport/app/router.js index e7f242f..6b4c3ec 100644 --- a/passport/app/router.js +++ b/passport/app/router.js @@ -3,11 +3,14 @@ module.exports = app => { app.router.get('/', 'home.render'); app.router.get('/user', 'home.render'); + app.router.get('/login', 'home.local'); app.passport.mount('weibo'); app.passport.mount('github'); app.passport.mount('bitbucket'); app.passport.mount('twitter'); + const localStrategy = app.passport.authenticate('local'); + app.router.post('/passport/local', localStrategy); app.router.get('/logout', 'user.logout'); }; diff --git a/passport/app/view/login.html b/passport/app/view/login.html new file mode 100644 index 0000000..d40bbf4 --- /dev/null +++ b/passport/app/view/login.html @@ -0,0 +1,27 @@ + + + + + + + egg-passport-local login page + + + +

egg-passport-local login page

+
+
+ + +
+
+ + +
+
+ +
+
+ + + \ No newline at end of file diff --git a/passport/config/config.default.js b/passport/config/config.default.js index 7dc8168..8d72b33 100644 --- a/passport/config/config.default.js +++ b/passport/config/config.default.js @@ -1,5 +1,7 @@ 'use strict'; +exports.keys = 'egg-examples'; + // secure keys on https://github.com/eggjs/egg/wiki#secure-env-for-travis-ci exports.passportWeibo = { key: 'a', @@ -20,3 +22,7 @@ exports.passportTwitter = { key: 'g', secret: 'h', }; + +exports.view = { + defaultViewEngine: 'nunjucks', +}; diff --git a/passport/config/plugin.js b/passport/config/plugin.js index 1ed71bb..ad55aba 100644 --- a/passport/config/plugin.js +++ b/passport/config/plugin.js @@ -24,3 +24,13 @@ exports.passportBitbucket = { enable: true, package: 'egg-passport-bitbucket', }; + +exports.passportLocal = { + enable: true, + package: 'egg-passport-local', +}; + +exports.nunjucks = { + enable: true, + package: 'egg-view-nunjucks', +}; \ No newline at end of file diff --git a/passport/package.json b/passport/package.json index 7baaa87..f0d1e85 100644 --- a/passport/package.json +++ b/passport/package.json @@ -5,8 +5,10 @@ "egg-passport": "^1.0.0", "egg-passport-bitbucket": "^1.0.0", "egg-passport-github": "^1.0.0", + "egg-passport-local": "^1.1.0", "egg-passport-twitter": "^1.0.0", - "egg-passport-weibo": "^1.0.0" + "egg-passport-weibo": "^1.0.0", + "egg-view-nunjucks": "^2.1.4" }, "devDependencies": { "egg-bin": "^4.3.5"