diff --git a/CHANGELOG b/CHANGELOG
index 0e352ab1..37fce3f7 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,8 @@
All notable changes to this project will be documented in this file.
+unreleased
+- oauth server implementation
+
### 1.17.14
[locale] add catalan
[fix] fedi outbox
diff --git a/layouts/modal.vue b/layouts/modal.vue
new file mode 100644
index 00000000..f72dd127
--- /dev/null
+++ b/layouts/modal.vue
@@ -0,0 +1,12 @@
+
+ el-container
+ el-header
+ el-row(:gutter='20')
+ el-col(:span='12' :offset='6')
+ el-card.mt-5
+ h4(slot='header') {{$route.name}}
+ nuxt
+
+
diff --git a/locales/it.json b/locales/it.json
index a9cdfabe..ae80cd0a 100644
--- a/locales/it.json
+++ b/locales/it.json
@@ -67,7 +67,8 @@
"follow": "Segui",
"n_resources": "nessuna risorsa|una risorsa|{n} risorse",
"resources": "Risorse",
- "moderation": "Moderazione"
+ "moderation": "Moderazione",
+ "authorize": "Autorizza"
},
"login": {
"description": "Entrando puoi pubblicare nuovi eventi.",
diff --git a/package.json b/package.json
index 8efbe610..52d7235a 100644
--- a/package.json
+++ b/package.json
@@ -5,9 +5,9 @@
"author": "lesion",
"scripts": {
"dev:nuxt": "cross-env NODE_ENV=development nuxt dev",
- "dev": "cross-env DEBUG=*,-babel,-follow-redirects,-send,-body-parser:*,-express:*,-connect:*,-sequelize:* NODE_ENV=development node server/index.js",
+ "dev": "cross-env DEBUG=*,-babel*,-follow-redirects,-send,-body-parser:*,-express:*,-connect:*,-sequelize:* NODE_ENV=development node server/index.js",
"build": "nuxt build",
- "start": "cross-env DEBUG=*,-babel,-follow-redirects,-send,-body-parser:*,-express:*,-connect:*,-sequelize:* NODE_ENV=production node server/cli.js",
+ "start": "cross-env DEBUG=*,-babel*,-follow-redirects,-send,-body-parser:*,-express:*,-connect:*,-sequelize:* NODE_ENV=production node server/cli.js",
"lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
"doc": "cd docs && bundle exec jekyll b",
"doc:dev": "cd docs && bundle exec jekyll s --drafts",
@@ -50,26 +50,27 @@
],
"dependencies": {
"@nuxtjs/auth": "^4.8.4",
- "@nuxtjs/axios": "^5.8.0",
+ "@nuxtjs/axios": "^5.9.0",
"accept-language": "^3.0.18",
"axios": "^0.19.0",
"bcryptjs": "^2.4.3",
"body-parser": "^1.18.3",
"bootstrap": "^4.4.1",
"config": "^3.2.4",
- "consola": "^2.11.0",
+ "consola": "^2.11.1",
"cookie-parser": "^1.4.4",
"cors": "^2.8.5",
"cross-env": "^6.0.0",
- "dayjs": "^1.8.17",
+ "dayjs": "^1.8.18",
"element-ui": "^2.13.0",
- "email-templates": "^6.0.6",
+ "email-templates": "^6.1.1",
"express": "^4.17.1",
"express-jwt": "^5.3.1",
"express-middleware-log": "^1.2.0",
+ "express-oauth-server": "^2.0.0",
"http-signature": "^1.3.1",
"ics": "^2.16.0",
- "inquirer": "^7.0.0",
+ "inquirer": "^7.0.1",
"jsonwebtoken": "^8.5.1",
"less": "^3.10.3",
"lodash": "^4.17.14",
@@ -78,20 +79,20 @@
"morgan": "^1.9.1",
"multer": "^1.4.2",
"node-fetch": "^2.6.0",
- "nuxt": "^2.10.2",
+ "nuxt": "^2.11.0",
"nuxt-express-module": "^0.0.11",
- "pg": "^7.14.0",
+ "pg": "^7.15.1",
"sanitize-html": "^1.20.1",
"sass-loader": "^8.0.0",
- "sequelize": "^5.21.2",
+ "sequelize": "^5.21.3",
"sequelize-cli": "^5.5.1",
"sharp": "^0.23.4",
"sqlite3": "^4.1.1",
"url": "^0.11.0",
- "v-calendar": "^1.0.0-beta.16",
+ "v-calendar": "^1.0.0-beta.23",
"vue-awesome": "^4.0.0",
"vue-clipboard2": "^0.3.1",
- "vue-i18n": "^8.15.1",
+ "vue-i18n": "^8.15.3",
"yargs": "^15.0.2"
},
"devDependencies": {
@@ -100,18 +101,18 @@
"eslint": "^6.7.2",
"eslint-config-prettier": "^6.7.0",
"eslint-config-standard": ">=14.1.0",
- "eslint-loader": "^3.0.0",
- "eslint-plugin-import": ">=2.17.3",
+ "eslint-loader": "^3.0.3",
+ "eslint-plugin-import": ">=2.19.1",
"eslint-plugin-jest": ">=23.1.1",
"eslint-plugin-node": ">=10.0.0",
"eslint-plugin-nuxt": ">=0.5.0",
- "eslint-plugin-prettier": "^3.1.1",
+ "eslint-plugin-prettier": "^3.1.2",
"eslint-plugin-promise": ">=4.0.1",
"eslint-plugin-standard": ">=4.0.1",
"eslint-plugin-vue": "^6.0.1",
"jsdoc": "^3.6.3",
"less-loader": "^5.0.0",
- "nodemon": "^2.0.1",
+ "nodemon": "^2.0.2",
"prettier": "^1.19.1",
"pug-plain-loader": "^1.0.0",
"webpack-cli": "^3.3.10"
diff --git a/pages/Authorize.vue b/pages/Authorize.vue
new file mode 100644
index 00000000..746c950c
--- /dev/null
+++ b/pages/Authorize.vue
@@ -0,0 +1,52 @@
+
+ //- el-card.mt-5
+ //- div(slot='header')
+ //- h4 App authorization
+ div(v-if='client')
+ h5 {{$auth.user.email}}
+ p External application {{client.name}} want following permission grants:
+ ul
+ li(v-for="scope in $route.query.scope.split(' ')") {{scope}}
+ span You will be redirected to {{$route.query.redirect_uri}}
+ el-row.mt-3(justify='center')
+ el-col(:span='12' :offset='6' style='text-align: center')
+ a(:href='authorizeURL')
+ el-button.mr-1(plain type='success') {{$t('common.authorize')}}
+ a(to='/')
+ el-button.mt-1(plain type='warning') {{$t('common.cancel')}}
+
+
+
diff --git a/pages/add/_edit.vue b/pages/add/_edit.vue
index 61d23b28..a3039681 100644
--- a/pages/add/_edit.vue
+++ b/pages/add/_edit.vue
@@ -31,11 +31,13 @@
el-tab-pane
span(slot='label') {{$t('common.where')}}
p(v-html="$t('event.where_description')")
-
+ span {{event.place.name}}
el-select.mb-3(v-model='event.place.name'
+ @keypress.tab='testBlur'
@change='placeChoosed'
filterable allow-create
default-first-option
+ @blur='testBlur'
)
el-option(v-for='place in places' :label='place.name' :value='place.name' :key='place.id')
div {{$t("common.address")}}
@@ -92,6 +94,8 @@
//- MEDIA / FLYER / POSTER
el-tab-pane
span(slot='label') {{$t('common.media')}}
+ div.mb-2 {{$t('event.media_description')}}
+ img(:src='mediaUrl' @load='imageLoaded')
el-upload.text-center(
action=''
:limit="1"
@@ -100,12 +104,10 @@
accept='image/*'
:on-remove='cleanFile'
:on-change='uploadedFile'
- :multiple='false'
- :file-list="fileList"
- )
+ :multiple='false')
i.el-icon-upload
- div.el-upload__text {{$t('event.media_description')}}
- el-button.float-right(@click='done' :disabled='!couldProceed') {{edit?$t('common.edit'):$t('common.send')}}
+ el-input(v-model='mediaUrl' @blur='checkMediaUrl')
+ el-button.mt-2.float-right(@click='done' :disabled='!couldProceed') {{edit?$t('common.edit'):$t('common.send')}}