diff --git a/components/Form.vue b/components/Form.vue
index 6ee1a80..b319901 100644
--- a/components/Form.vue
+++ b/components/Form.vue
@@ -14,10 +14,14 @@
:message="{ [hasErrorName.msg]: hasErrorName.invalid }"
label="Name"
>
-
+
-
+
@@ -35,11 +39,6 @@
import { mapGetters, mapActions } from 'vuex'
export default {
- data() {
- return {
- nameErrorMessage: ''
- }
- },
computed: {
...mapGetters('user', ['isLoggedIn', 'hasErrorName']),
userName: {
@@ -60,7 +59,11 @@ export default {
}
},
methods: {
- ...mapActions('user', ['makeTweet', 'logInVia', 'logOut'])
+ ...mapActions('user', ['makeTweet', 'logInVia', 'logOut']),
+ restrictSymbols(name) {
+ const regExpression = new RegExp('[^0-9a-zA-Z\\x20]', 'g')
+ this[name] = this[name].replace(regExpression, '')
+ }
}
}
diff --git a/pages/authorize-contribution.vue b/pages/authorize-contribution.vue
index 2f2fb17..6448073 100644
--- a/pages/authorize-contribution.vue
+++ b/pages/authorize-contribution.vue
@@ -66,7 +66,7 @@ export default {
if (!this.token) {
window.location.replace(window.location.origin)
} else {
- await this.check()
+ await this.getContributionIndex()
}
setTimeout(() => {
this.$root.$emit('disableLoading')
@@ -103,12 +103,12 @@ export default {
this.status.type = 'is-danger'
}
},
- async check() {
+ async getContributionIndex() {
const body = {
token: this.token
}
try {
- const response = await fetch('/api/check_contribution', {
+ const response = await fetch('/api/get_contribution_index', {
method: 'POST',
headers: {
Accept: 'application/json',
diff --git a/server/controllers/authorize.js b/server/controllers/authorize.js
index 5992aaf..003086a 100644
--- a/server/controllers/authorize.js
+++ b/server/controllers/authorize.js
@@ -61,6 +61,11 @@ function validateRefferer(req, res, next) {
next()
}
+function restrictSymbols(value) {
+ const regExpression = new RegExp('[^0-9a-zA-Z\\x20]', 'g')
+ return value.replace(regExpression, '')
+}
+
router.get('/connect/:provider', validateProvider, validateRefferer, (req, res) => {
const { provider } = req.params
const referrer = new URL(req.get('Referrer'))
@@ -138,6 +143,7 @@ router.get('/user_data/', (req, res) => {
github.get('https://api.github.com/user', req.session.accessToken, function(error, data) {
if (!error) {
userData = JSON.parse(data)
+ userData.name = restrictSymbols(userData.name)
userData.handle = userData.login
userData.socialType = 'github'
req.session.handle = userData.login
@@ -153,6 +159,7 @@ router.get('/user_data/', (req, res) => {
function(error, data) {
if (!error) {
userData = JSON.parse(data)
+ userData.name = restrictSymbols(userData.name)
userData.handle = userData.screen_name
userData.socialType = 'twitter'
req.session.handle = userData.screen_name
diff --git a/server/controllers/contribute.js b/server/controllers/contribute.js
index ac2f66d..99870e8 100644
--- a/server/controllers/contribute.js
+++ b/server/controllers/contribute.js
@@ -136,7 +136,7 @@ router.post('/authorize_contribution', async (req, res) => {
handle: req.session.handle,
socialType: req.session.socialType
},
- { where: { token: req.body.token }, returning: true }
+ { individualHooks: true, where: { token: req.body.token }, returning: true }
)
} catch (e) {
console.error('updateError', e)
@@ -146,7 +146,7 @@ router.post('/authorize_contribution', async (req, res) => {
res.send('OK')
})
-router.post('/check_contribution', async (req, res) => {
+router.post('/get_contribution_index', async (req, res) => {
if (!req.body || !req.body.token) {
res.status(404).send('Wrong request params')
}
diff --git a/server/models/contribution.js b/server/models/contribution.js
index 2415ca3..839ee5b 100644
--- a/server/models/contribution.js
+++ b/server/models/contribution.js
@@ -1,11 +1,16 @@
'use strict'
+function isValidName(value, minLength = 4) {
+ const regExpression = new RegExp(`^[0-9a-zA-Z\\x20]{${minLength},35}$`)
+ return regExpression.test(value)
+}
+
const validate = (contribution, options) => {
const { name, company, socialType } = contribution.dataValues
- if (socialType !== 'anonymous' && (name.length < 4 || name.length > 35)) {
+ if (socialType !== 'anonymous' && !isValidName(name)) {
throw new Error('Wrong name')
}
- if (company && company.length > 35) {
+ if (company && !isValidName(company, 0)) {
throw new Error('Wrong company')
}
}