UNPKG

2.81 kBJavaScriptView Raw
1var express = require('express');
2var passport = require('passport');
3var Strategy = require('passport-github').Strategy;
4var github = require('octonode');
5var path = require('path');
6var fs = require('fs-extra');
7var session = require('express-session');
8var bodyParser = require('body-parser')
9var methodOverride = require('method-override');
10
11var app = express();
12var configFile = require(path.join(process.cwd(),'.config.book.json'));
13var callbackURL_ = path.join(configFile.heroku_url, 'github/auth/return');
14const oauth_file = require(path.join(process.cwd(),'.oauth.github.json'));
15const GitHubApi = require("github");
16
17var engines = require('consolidate');
18
19var organizacion;
20
21app.set('views', __dirname + '/_book');
22app.engine('html', engines.mustache);
23app.set('view engine', 'html');
24console.log("Callback URL IS: " + callbackURL_);
25
26passport.serializeUser(function(user, done) {
27 done(null, user);
28});
29
30passport.deserializeUser(function(obj, done) {
31 done(null, obj);
32});
33
34
35app.use(bodyParser.urlencoded({ extended: true }));
36app.use(bodyParser.json());
37app.use(methodOverride());
38app.use(passport.initialize());
39app.use(passport.session());
40
41passport.use(new Strategy({
42 clientID: oauth_file.clientID,
43 clientSecret: oauth_file.clientSecret,
44 callbackURL: oauth_file.callbackURL,
45 scope: ['user','repo']
46},
47function(accessToken, refreshToken, profile, done) {
48 profile.token = accessToken;
49 done(null,profile)
50}));
51
52
53
54
55var port = Number(process.env.PORT || 5000);
56
57app.listen(port, function() {
58 console.log('Your files will be served through this web server in port ' + port);
59});
60
61
62app.get('/',
63 passport.authenticate('github', { scope: [ 'user:email' ] }),
64 function(req, res) {
65});
66
67
68app.get("/github/auth/return",
69 passport.authenticate('github', { failureRedirect: '/fail' }),
70 function(req, res) {
71 organizacion = require('./.config.book.json').organization;
72 var client = github.client(req.user.token);
73
74 var ghorg = client.org(organizacion);
75
76 console.log("USERNAME: " + req.user.username);
77
78 client.get(`/users/${req.user.username}/orgs`, {}, function (err, status, body, headers) {
79 if (body.length == 0) res.redirect('/fail');
80 var founded = false;
81 console.log("ORGSSSSS")
82 body.forEach((org,inx) => {
83 console.log(org);
84 if (org.login == organizacion) {
85 founded = true;
86 res.redirect('/content');
87 }
88 else if (inx + 1 == body.length && !founded) {
89 res.redirect('/fail');
90 }
91 });
92 });
93
94});
95
96app.get("/content", (req, res) => {
97 res.render('index')
98});
99
100
101app.get('/fail', (req, res) => {
102 res.send("<h1 style='color:red;'>FAILED AUTHENTICATION. You are not part of the organization " + organizacion + "</h1>");
103});
104
105app.use(express.static(__dirname + '/_book'));