diff --git a/docs/oauth.md b/docs/oauth.md index 0af605b1..f322fbed 100644 --- a/docs/oauth.md +++ b/docs/oauth.md @@ -25,7 +25,7 @@ POST #### Request parameters | client_name | `string` | A name for your application | -| redirect_uri | `string` | Where the user should be redirected after authorization | +| redirect_uris | `string` | Where the user should be redirected after authorization | | scopes | `string` | Space separated list of scopes. If none is provided, defaults to `write` as it's the only supported scope!| | website | `string` | A URL to the homepage of your app | @@ -33,7 +33,7 @@ POST ```bash curl -X POST \ -d 'client_name=Wordpress Event Manager' \ - -d 'redirect_uri=https://noblogs.org/' \ + -d 'redirect_uris=https://noblogs.org/' \ -d 'website=https://myapp.example' \ http://localhost:13120/api/client ``` @@ -47,7 +47,7 @@ Application, with `client_id` and `client_secret` "scopes" : "write", "website" : "https://myapp.example", "client_secret" : "909029fa12797e6bdfb5baf5e379675dfa4e3ad4", - "redirect_uri" : "https://noblogs.org", + "redirect_uris" : "https://noblogs.org", "client_id" : "0f377e34b2aaf517f7db534f32d26b0dd938fb6d" } ``` diff --git a/layouts/modal.vue b/layouts/modal.vue index 9e15ecd2..21a191b2 100644 --- a/layouts/modal.vue +++ b/layouts/modal.vue @@ -1,7 +1,9 @@ el-container#modal el-header - el-row(:gutter='20') - el-col(:span='12' :offset='6') + .row.p-0.m-0 + .col.p-0 + .col-xl-5.col-lg-6.col-sm-10.col-xs-12.col-md-7.p-0 nuxt + .col.p-0 diff --git a/locales/it.json b/locales/it.json index 93b4dd80..9bc2f63d 100644 --- a/locales/it.json +++ b/locales/it.json @@ -199,5 +199,12 @@ "5": "quinto", "-1": "ultimo" }, - "about": "\n
\n Gancio e' un progetto dell'underscore hacklab e uno dei\n servizi di cisti.org.
\n\nUno strumento di condivisione di eventi per comunità radicali.\n Dentro gancio puoi trovare e inserire eventi.\n Gancio, come tutto cisti.org è uno strumento\n antisessista, antirazzista, antifascista e anticapitalista, riflettici quando\n pubblichi un evento.
\n \n\n Se vieni a Torino e dici: \"ehi, ci diamo un gancio alle 8?\" nessuno si presenterà con i guantoni per fare a mazzate.\n Darsi un gancio vuol dire beccarsi alle ore X in un posto Y.
\n\n \n - a che ora è il gancio in radio per andare al presidio?
\n - non so ma domani non posso venire, ho gia' un gancio per caricare il bar.
\n
\n
\n\n \n Hai scritto una nuova interfaccia per gancio? Vuoi aprire un nuovo nodo di gancio nella tua città?\n C'è qualcosa che vorresti migliorare? Per contribuire i sorgenti sono liberi e disponibili \n qui. Aiuti e suggerimenti sono sempre benvenuti, puoi scriverci\n su underscore chicciola autistici.org
\n " + "about": "\n\n Gancio e' un progetto dell'underscore hacklab e uno dei\n servizi di cisti.org.
\n\nUno strumento di condivisione di eventi per comunità radicali.\n Dentro gancio puoi trovare e inserire eventi.\n Gancio, come tutto cisti.org è uno strumento\n antisessista, antirazzista, antifascista e anticapitalista, riflettici quando\n pubblichi un evento.
\n \n\n Se vieni a Torino e dici: \"ehi, ci diamo un gancio alle 8?\" nessuno si presenterà con i guantoni per fare a mazzate.\n Darsi un gancio vuol dire beccarsi alle ore X in un posto Y.
\n\n \n - a che ora è il gancio in radio per andare al presidio?
\n - non so ma domani non posso venire, ho gia' un gancio per caricare il bar.
\n
\n
\n\n \n Hai scritto una nuova interfaccia per gancio? Vuoi aprire un nuovo nodo di gancio nella tua città?\n C'è qualcosa che vorresti migliorare? Per contribuire i sorgenti sono liberi e disponibili \n qui. Aiuti e suggerimenti sono sempre benvenuti, puoi scriverci\n su underscore chicciola autistici.org
\n ", + "oauth": { + "authorization_request": "L'applicazione esterna{app}
richiede l'autorizzazione a svolgere le sequenti attività su {instance_name}
:",
+ "redirected_to": "Dopo la conferma sarai reindirizzata all'indirizzo {url}
",
+ "scopes": {
+ "event:write": "Pubblicare/modificare i tuoi eventi"
+ }
+ }
}
\ No newline at end of file
diff --git a/pages/Authorize.vue b/pages/Authorize.vue
index c142152d..043d1f8e 100644
--- a/pages/Authorize.vue
+++ b/pages/Authorize.vue
@@ -1,18 +1,21 @@
el-card.mt-5
- h4(slot='header') {{client.name}}
want following permission grants:
+ p(v-html="$t('oauth.authorization_request', { app: client.name, instance_name: settings.title })")
ul
- li(v-for="s in scope.split(' ')") {{s}}
- span(v-if='redirect_uri!=="urn:ietf:wg:oauth:2.0:oob"') 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(href='/')
- el-button.mt-1(plain type='warning') {{$t('common.cancel')}}
+ li(v-for="s in scope.split(' ')") {{$t(`oauth.scopes.${scope}`)}}
+ span(v-html="$t('oauth.redirected_to', {url: $route.query.redirect_uri})")
+ br
+ br
+ a(:href='authorizeURL')
+ el-button.mr-1(plain type='success') {{$t('common.authorize')}}
+ a(href='/')
+ el-button.mt-1(plain type='warning') {{$t('common.cancel')}}
+
diff --git a/pages/Login.vue b/pages/Login.vue
index c99a3669..0bc1d1ff 100644
--- a/pages/Login.vue
+++ b/pages/Login.vue
@@ -66,8 +66,6 @@ export default {
try {
this.loading = true
await this.$auth.loginWith('local', { data: { email: this.email, password: this.password } })
- // const user = await this.$axios.$get('/auth/user')
- // this.$auth.setUser(user)
this.loading = false
Message({ message: this.$t('login.ok'), showClose: true, type: 'success' })
this.close()
diff --git a/server/api/controller/oauth.js b/server/api/controller/oauth.js
index 167f589d..a6f99456 100644
--- a/server/api/controller/oauth.js
+++ b/server/api/controller/oauth.js
@@ -21,7 +21,7 @@ const oauthController = {
async createClient (req, res) {
debug('Create client ', req.body.client_name)
// only write scope is supported
- if (req.body.scopes && req.body.scopes !== 'write') {
+ if (req.body.scopes && req.body.scopes !== 'event:write') {
return res.status(422).json({ error: 'Invalid scopes' })
}
@@ -29,7 +29,7 @@ const oauthController = {
id: await randomString(256),
name: req.body.client_name,
redirectUris: req.body.redirect_uris,
- scopes: req.body.scopes || 'write',
+ scopes: req.body.scopes || 'event:write',
website: req.body.website,
client_secret: await randomString(256)
}
@@ -45,6 +45,20 @@ const oauthController = {
}
},
+ async getClient (req, res) {
+ const client = await OAuthClient.findByPk(req.params.client_id, { raw: true })
+ if (!client) {
+ return res.status(404).send('Not found!')
+ }
+ res.json({
+ client_id: client.id,
+ redirect_uris: client.redirectUris,
+ name: client.name,
+ website: client.website,
+ scopes: client.scopes
+ })
+ },
+
async getClients (req, res) {
const tokens = await OAuthToken.findAll({
include: [{ model: User, where: { id: req.user.id } }, { model: OAuthClient, as: 'client' }],
diff --git a/server/api/index.js b/server/api/index.js
index 6f1be5cc..9909934e 100644
--- a/server/api/index.js
+++ b/server/api/index.js
@@ -95,6 +95,7 @@ api.delete('/resources/:resource_id', isAdmin, resourceController.remove)
api.get('/resources', isAdmin, resourceController.getAll)
api.get('/clients', isAuth, oauthController.getClients)
+api.get('/client/:client_id', isAuth, oauthController.getClient)
api.post('/client', oauthController.createClient)
// api.get('/verify', oauth.oauthServer.authenticate(), (req, res) => {