Commit d360cefc0b6a3e9f0dafd540fc86345560adb9b6

Authored by TUM.Apichat
1 parent 21a1ff19
Exists in master

move save google token file to db

app/controllers/home.controller.js
@@ -110,7 +110,7 @@ function events(req, res) { @@ -110,7 +110,7 @@ function events(req, res) {
110 } else { 110 } else {
111 // console.info(response) 111 // console.info(response)
112 res.jsonp(ggToKendo(response)) 112 res.jsonp(ggToKendo(response))
113 - res.end 113 + res.end()
114 } 114 }
115 }) 115 })
116 } 116 }
@@ -166,7 +166,7 @@ function oauth2callback(req, res) { @@ -166,7 +166,7 @@ function oauth2callback(req, res) {
166 res.send(err) 166 res.send(err)
167 res.end() 167 res.end()
168 } else { 168 } else {
169 - res.redirect('/home') 169 + res.redirect('http://localhost:8000/calendar')
170 } 170 }
171 }) 171 })
172 } 172 }
app/lib/index.js
1 'use strict'; 1 'use strict';
2 2
3 const google = require('googleapis'); 3 const google = require('googleapis');
  4 +const plus = google.plus('v1');
4 const googleAuth = require('google-auth-library'); 5 const googleAuth = require('google-auth-library');
5 const calendar = google.calendar('v3'); 6 const calendar = google.calendar('v3');
6 const fs = require('fs'); 7 const fs = require('fs');
@@ -8,11 +9,15 @@ const path = require('path'); @@ -8,11 +9,15 @@ const path = require('path');
8 const yamlConfig = require('node-yaml-config'); 9 const yamlConfig = require('node-yaml-config');
9 const config = yamlConfig.load(path.join(__dirname, '/../../config/config.yml')); 10 const config = yamlConfig.load(path.join(__dirname, '/../../config/config.yml'));
10 const moment = require('moment') 11 const moment = require('moment')
  12 +const Promise = require('bluebird')
  13 +const Mongoose = Promise.promisifyAll(require('mongoose'));
  14 +const Token = Mongoose.model('Token');
  15 +
11 const CALENDAR_ID = config.ggapi.calendarID 16 const CALENDAR_ID = config.ggapi.calendarID
12 const REDIRECTURL = config.ggapi.redirectUrl 17 const REDIRECTURL = config.ggapi.redirectUrl
13 18
14 19
15 -const SCOPES = ['https://www.googleapis.com/auth/calendar']; 20 +const SCOPES = ['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/userinfo.email'];
16 const TOKEN_DIR = (process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE) + '/.credentials/'; 21 const TOKEN_DIR = (process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE) + '/.credentials/';
17 const TOKEN_PATH = TOKEN_DIR + 'calendar-nodejs-quickstart.json'; 22 const TOKEN_PATH = TOKEN_DIR + 'calendar-nodejs-quickstart.json';
18 23
@@ -24,8 +29,6 @@ function hasTimezone(timezone) { @@ -24,8 +29,6 @@ function hasTimezone(timezone) {
24 } 29 }
25 } 30 }
26 31
27 -  
28 -  
29 function getNewToken(oauth2Client, callback) { 32 function getNewToken(oauth2Client, callback) {
30 var authUrl = oauth2Client.generateAuthUrl({ 33 var authUrl = oauth2Client.generateAuthUrl({
31 access_type: 'offline', 34 access_type: 'offline',
@@ -47,16 +50,32 @@ function setNewToken(code) { @@ -47,16 +50,32 @@ function setNewToken(code) {
47 }) 50 })
48 } 51 }
49 52
50 -function storeToken(token) { 53 +function storeToken(token, emails) {
  54 + var tokendb;
  55 + token.email = emails[0].value
51 try { 56 try {
52 - fs.mkdirSync(TOKEN_DIR); 57 + // ** new
  58 + tokendb = new Token(token);
  59 + // -- old
  60 + // fs.mkdirSync(TOKEN_DIR);
53 } catch (err) { 61 } catch (err) {
54 - if (err.code != 'EEXIST') {  
55 - throw err;  
56 - } 62 + throw err;
57 } 63 }
58 - fs.writeFile(TOKEN_PATH, JSON.stringify(token));  
59 - console.log('Token stored to ' + TOKEN_PATH); 64 + // ** new
  65 + Promise.try(function () { })
  66 + .then(function () {
  67 + tokendb.save(function (err, result) {
  68 + if (err) {
  69 + console.error(err)
  70 + } else {
  71 + console.log(result);
  72 + }
  73 + });
  74 + });
  75 +
  76 + // -- old
  77 + // fs.writeFile(TOKEN_PATH, JSON.stringify(token));
  78 + // console.log('Token stored to ' + TOKEN_PATH);
60 } 79 }
61 80
62 module.exports = { 81 module.exports = {
@@ -71,15 +90,28 @@ module.exports = { @@ -71,15 +90,28 @@ module.exports = {
71 var redirectUrl = credentials.installed.redirect_uris[1]; 90 var redirectUrl = credentials.installed.redirect_uris[1];
72 var auth = new googleAuth(); 91 var auth = new googleAuth();
73 var oauth2Client = new auth.OAuth2(clientId, clientSecret, REDIRECTURL); 92 var oauth2Client = new auth.OAuth2(clientId, clientSecret, REDIRECTURL);
  93 + var setToken = {} // set token from callback
  94 + Token.findOne({ email: 'tzbattleboy@gmail.com' }, function (err, token) {
74 95
75 - fs.readFile(TOKEN_PATH, (err, token) => {  
76 if (err) { 96 if (err) {
77 return callback(null, null, getNewToken(oauth2Client, callback)); 97 return callback(null, null, getNewToken(oauth2Client, callback));
78 - } else {  
79 - oauth2Client.credentials = JSON.parse(token); 98 + } else if (token) {
  99 + setToken = {
  100 + access_token: token.access_token,
  101 + refresh_token: token.refresh_token,
  102 + token_type: token.token_type,
  103 + expiry_date: token.expiry_date
  104 + }
  105 + // console.log(setToken)
  106 + oauth2Client.credentials = setToken;
80 return callback(null, oauth2Client); 107 return callback(null, oauth2Client);
  108 + } else {
  109 + return callback(null, null, getNewToken(oauth2Client, callback));
81 } 110 }
82 }); 111 });
  112 + // fs.readFile(TOKEN_PATH, (err, token) => {
  113 +
  114 + // });
83 }); 115 });
84 116
85 }, 117 },
@@ -103,7 +135,16 @@ module.exports = { @@ -103,7 +135,16 @@ module.exports = {
103 return; 135 return;
104 } else { 136 } else {
105 oauth2Client.credentials = token; 137 oauth2Client.credentials = token;
106 - storeToken(token); 138 + var params = { userId: 'me', fields: 'emails', auth: oauth2Client };
  139 +
  140 + plus.people.get(params, function (err, response) {
  141 + if (err) {
  142 + consol.error(err)
  143 + } else {
  144 + storeToken(token, response.emails);
  145 + }
  146 + });
  147 +
107 return callback(null, oauth2Client); 148 return callback(null, oauth2Client);
108 } 149 }
109 150
app/models/tokens.model.js 0 → 100644
@@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
  1 +var mongoose = require('mongoose')
  2 +var Schema = mongoose.Schema
  3 +
  4 +var TokenSchema = new Schema({
  5 + email: String,
  6 + access_token: String,
  7 + expiry_date: Number,
  8 + refresh_token: String,
  9 + token_type: String
  10 +})
  11 +
  12 +mongoose.model('Token', TokenSchema)
0 \ No newline at end of file 13 \ No newline at end of file
config/config.yml
@@ -4,12 +4,12 @@ localhost: @@ -4,12 +4,12 @@ localhost:
4 server: 4 server:
5 url: 'localhost' 5 url: 'localhost'
6 urlto: 'localhost' 6 urlto: 'localhost'
7 - port: 3001 7 + port: 3030
8 portto: 4001 8 portto: 4001
9 database: 9 database:
10 host: 'localhost' 10 host: 'localhost'
11 port: 27017 11 port: 27017
12 - name: 'ss7' 12 + name: 'calendar'
13 options: 13 options:
14 user: 14 user:
15 pass: 15 pass:
@@ -17,4 +17,4 @@ localhost: @@ -17,4 +17,4 @@ localhost:
17 apitimeout: 3000 #millisecond 17 apitimeout: 3000 #millisecond
18 ggapi: 18 ggapi:
19 calendarID: 'rvmbg3kg7uqninf7n3au1ku4mc@group.calendar.google.com' 19 calendarID: 'rvmbg3kg7uqninf7n3au1ku4mc@group.calendar.google.com'
20 - redirectUrl: 'http://localhost:3001/oauth2callback'  
21 \ No newline at end of file 20 \ No newline at end of file
  21 + redirectUrl: 'http://localhost:3030/oauth2callback'
22 \ No newline at end of file 22 \ No newline at end of file
config/mongoose.js 0 → 100644
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
  1 +var mongoose = require('mongoose')
  2 +var yaml_config = require('node-yaml-config')
  3 +var config = yaml_config.load(__dirname + '/config.yml')
  4 +var url = config.server.url
  5 +var port = config.server.port
  6 +var dbhost = config.database.host
  7 +var dbport = config.database.port
  8 +var dbuser = config.database.options.user
  9 +var dbpass = config.database.options.pass
  10 +var dbname = config.database.name
  11 +
  12 +module.exports = function () {
  13 + // mongoose.connect('mongodb://username:password@host:port/database?options...')
  14 + var db
  15 + if (dbuser && dbpass) {
  16 + db = mongoose.connect('mongodb://' + dbuser + ':' + dbpass + '@' + dbhost + ':' + dbport + '/' + dbname)
  17 + } else {
  18 + db = mongoose.connect('mongodb://' + dbhost + ':' + dbport + '/' + dbname)
  19 + }
  20 +
  21 + require('../app/models/tokens.model')
  22 + return db
  23 +}
0 \ No newline at end of file 24 \ No newline at end of file
@@ -16,7 +16,8 @@ @@ -16,7 +16,8 @@
16 "moment-timezone": "^0.5.5", 16 "moment-timezone": "^0.5.5",
17 "node-yaml-config": "0.0.4", 17 "node-yaml-config": "0.0.4",
18 "scribe-js": "^2.0.4", 18 "scribe-js": "^2.0.4",
19 - "unirest": "^0.5.0" 19 + "unirest": "^0.5.0",
  20 + "mongoose": "^4.6.6"
20 }, 21 },
21 "devDependencies": { 22 "devDependencies": {
22 "bower": "^1.7.7", 23 "bower": "^1.7.7",
@@ -4,7 +4,8 @@ var yaml_config = require('node-yaml-config') @@ -4,7 +4,8 @@ var yaml_config = require('node-yaml-config')
4 var busboyBodyParser = require('busboy-body-parser') 4 var busboyBodyParser = require('busboy-body-parser')
5 var scribe = require('scribe-js')() 5 var scribe = require('scribe-js')()
6 var Async = require('async') 6 var Async = require('async')
7 - 7 +var mongoose = require('./config/mongoose')
  8 +var db = mongoose()
8 var console = process.console 9 var console = process.console
9 var app = express() 10 var app = express()
10 var router = express.Router() 11 var router = express.Router()
@@ -41,6 +42,6 @@ app.use('/logs', scribe.webPanel()) @@ -41,6 +42,6 @@ app.use('/logs', scribe.webPanel())
41 app.use(busboyBodyParser()) 42 app.use(busboyBodyParser())
42 43
43 app.listen(port) 44 app.listen(port)
44 - // console.log('Server is running at http://'+url+':'+port+''); 45 +// console.log('Server is running at http://'+url+':'+port+'');
45 46
46 console.tag('START').time().file().log('Server is running at http://' + url + ':' + port) 47 console.tag('START').time().file().log('Server is running at http://' + url + ':' + port)
47 \ No newline at end of file 48 \ No newline at end of file