From 9c2351bad97d3e873db7d8d31a60e60b460191f2 Mon Sep 17 00:00:00 2001
From: Eliot Berriot <contact@eliotberriot.com>
Date: Fri, 3 May 2019 12:24:08 +0200
Subject: [PATCH] Can now provide default app name, scope and redirect uris via
 query string when creating app

---
 front/src/components/auth/ApplicationForm.vue | 10 ++++++----
 front/src/components/auth/ApplicationNew.vue  |  7 +++++++
 front/src/router/index.js                     |  5 +++++
 3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/front/src/components/auth/ApplicationForm.vue b/front/src/components/auth/ApplicationForm.vue
index 5bd7d3b5..c2eefbfd 100644
--- a/front/src/components/auth/ApplicationForm.vue
+++ b/front/src/components/auth/ApplicationForm.vue
@@ -77,17 +77,19 @@ import TranslationsMixin from "@/components/mixins/Translations"
 export default {
   mixins: [TranslationsMixin],
   props: {
-    app: {type: Object, required: false}
+    app: {type: Object, required: false},
+    defaults: {type: Object, required: false}
   },
   data() {
     let app = this.app || {}
+    let defaults = this.defaults || {}
     return {
       isLoading: false,
       errors: [],
       fields: {
-        name: app.name || '',
-        redirect_uris: app.redirect_uris || 'urn:ietf:wg:oauth:2.0:oob',
-        scopes: app.scopes || 'read'
+        name: app.name || defaults.name || '',
+        redirect_uris: app.redirect_uris || defaults.redirect_uris || 'urn:ietf:wg:oauth:2.0:oob',
+        scopes: app.scopes || defaults.scopes || 'read'
       },
       scopes: [
         {id: "profile", icon: 'user'},
diff --git a/front/src/components/auth/ApplicationNew.vue b/front/src/components/auth/ApplicationNew.vue
index 8bb36826..ba1a575f 100644
--- a/front/src/components/auth/ApplicationNew.vue
+++ b/front/src/components/auth/ApplicationNew.vue
@@ -9,6 +9,7 @@
           <translate translate-context="Content/Applications/Title">Create a new application</translate>
         </h2>
         <application-form
+          :defaults="defaults"
           @created="$router.push({name: 'settings.applications.edit', params: {id: $event.client_id}})" />
       </section>
     </div>
@@ -19,6 +20,7 @@
 import ApplicationForm from "@/components/auth/ApplicationForm"
 
 export default {
+  props: ['name', 'redirect_uris', 'scopes'],
   components: {
     ApplicationForm
   },
@@ -26,6 +28,11 @@ export default {
     return {
       application: null,
       isLoading: false,
+      defaults: {
+        name: this.name,
+        redirect_uris: this.redirect_uris,
+        scopes: this.scopes,
+      }
     }
   },
   computed: {
diff --git a/front/src/router/index.js b/front/src/router/index.js
index 7b97cbe5..182cf61b 100644
--- a/front/src/router/index.js
+++ b/front/src/router/index.js
@@ -104,6 +104,11 @@ export default new Router({
     {
       path: '/settings/applications/new',
       name: 'settings.applications.new',
+      props: (route) => ({
+        scopes: route.query.scopes,
+        name: route.query.name,
+        redirect_uris: route.query.redirect_uris,
+      }),
       component: () =>
         import(/* webpackChunkName: "core" */ "@/components/auth/ApplicationNew"),
     },
-- 
GitLab