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 @@ 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\n
Cos'è gancio?
\n

Uno 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
Ok, ma cosa vuol dire gancio?
\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 \n\n
Contatti
\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\n
Cos'è gancio?
\n

Uno 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
Ok, ma cosa vuol dire gancio?
\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 \n\n
Contatti
\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 @@ + 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) => {