From 640443dc2dfed7f3361705023686d43618f3bb2e Mon Sep 17 00:00:00 2001 From: Alexey Date: Fri, 7 Feb 2020 12:21:53 +0300 Subject: [PATCH] updates --- pages/authorize-contribution.vue | 9 ++++++++- pages/make-contribution.vue | 4 ++++ server/controllers/{sessions.js => authorize.js} | 2 +- server/controllers/{contributions.js => contribute.js} | 6 +++++- server/index.js | 4 ++-- server/models/contribution.js | 1 - 6 files changed, 20 insertions(+), 6 deletions(-) rename server/controllers/{sessions.js => authorize.js} (95%) rename server/controllers/{contributions.js => contribute.js} (95%) diff --git a/pages/authorize-contribution.vue b/pages/authorize-contribution.vue index 7f85b5a..72befc5 100644 --- a/pages/authorize-contribution.vue +++ b/pages/authorize-contribution.vue @@ -4,7 +4,7 @@ Hello, @{{ userHandle }}

- Lorem ipsum dolor sit amet, consectetur? + Do you want to authorize your contribution #{{ contributionIndex }}? Please sign in.

@@ -25,6 +25,11 @@ export default { components: { Form }, + data() { + return { + contributionIndex: 1 + } + }, computed: { ...mapGetters('user', ['isLoggedIn', 'hasErrorName']), userHandle: { @@ -35,6 +40,8 @@ export default { }, async mounted() { await this.getUserData() + // TODO. parse href to take token (it's supposed to be after #) + // then you need to store it in localstorage OR pass to server (to `/connect`) so after the authorization redirect server can put it in url }, methods: { ...mapActions('user', ['getUserData']) diff --git a/pages/make-contribution.vue b/pages/make-contribution.vue index 1d034fd..3a13986 100644 --- a/pages/make-contribution.vue +++ b/pages/make-contribution.vue @@ -131,7 +131,11 @@ export default { } }, async mounted() { + this.loading = true + this.status.msg = 'Loading...' + this.status.type = '' await this.getUserData() + this.loading = false }, methods: { ...mapActions('user', ['makeTweet', 'logOut', 'getUserData']), diff --git a/server/controllers/sessions.js b/server/controllers/authorize.js similarity index 95% rename from server/controllers/sessions.js rename to server/controllers/authorize.js index 2ccf3c0..f53481e 100644 --- a/server/controllers/sessions.js +++ b/server/controllers/authorize.js @@ -9,7 +9,7 @@ const consumer = new oauth.OAuth( process.env.TWITTER_CONSUMER_KEY, process.env.TWITTER_CONSUMER_SECRET, '1.0A', - process.env.TWITTER_CALLBACK_URL, + process.env.TWITTER_CALLBACK_URL || 'http://localhost:3000/api/twitter_callback', 'HMAC-SHA1' ) diff --git a/server/controllers/contributions.js b/server/controllers/contribute.js similarity index 95% rename from server/controllers/contributions.js rename to server/controllers/contribute.js index 77b74d7..e44ea68 100644 --- a/server/controllers/contributions.js +++ b/server/controllers/contribute.js @@ -2,6 +2,7 @@ const fs = require('fs').promises const path = require('path') const util = require('util') const exec = util.promisify(require('child_process').exec) +const crypto = require('crypto') const aws = require('aws-sdk') const express = require('express') const { Mutex } = require('async-mutex') @@ -72,13 +73,16 @@ router.post('/response', upload.single('response'), async (req, res) => { let name = null let company = null let handle = null + let token = null if (socialType !== 'anonymous' && req.body) { name = req.body.name || null company = req.body.company || null handle = req.session.handle || null + } else { + token = crypto.randomBytes(32).toString('hex') } - await Contribution.create({ name, company, handle, socialType }) + await Contribution.create({ name, company, handle, socialType, token }) console.log('Contribution is correct, uploading to storage') if (process.env.DISABLE_S3 !== 'true') { diff --git a/server/index.js b/server/index.js index 703e558..83de525 100644 --- a/server/index.js +++ b/server/index.js @@ -7,8 +7,8 @@ const morgan = require('morgan') const session = require('express-session') const { Nuxt, Builder } = require('nuxt') const config = require('../nuxt.config.js') -const sessionsController = require('./controllers/sessions') -const contributionController = require('./controllers/contributions') +const sessionsController = require('./controllers/authorize') +const contributionController = require('./controllers/contribute') const models = require('./models') const app = express() diff --git a/server/models/contribution.js b/server/models/contribution.js index 7214f61..7f11508 100644 --- a/server/models/contribution.js +++ b/server/models/contribution.js @@ -13,7 +13,6 @@ module.exports = (sequelize, DataTypes) => { { hooks: { beforeCreate: (contribution, options) => { - console.log('contribution', contribution.dataValues) const { name, company, socialType } = contribution.dataValues if (socialType !== 'anonymous' && (name.length < 4 || name.length > 35)) { throw new Error('Wrong name')