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"