From 1a5ee95ee4e7b739158bc7571b01b32b1af792ad Mon Sep 17 00:00:00 2001
From: Shpuld Shpuldson <shpuld@gmail.com>
Date: Tue, 20 Jun 2017 10:37:51 +0300
Subject: [PATCH] Add a config.json option for enabling registration, don't
 link and redirect away from register page when it's disabled.

---
 src/components/login_form/login_form.js     | 3 ++-
 src/components/login_form/login_form.vue    | 2 +-
 src/components/registration/registration.js | 5 +++++
 src/main.js                                 | 3 ++-
 static/config.json                          | 3 ++-
 5 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/src/components/login_form/login_form.js b/src/components/login_form/login_form.js
index 1a6f6015..a117b76f 100644
--- a/src/components/login_form/login_form.js
+++ b/src/components/login_form/login_form.js
@@ -4,7 +4,8 @@ const LoginForm = {
     authError: false
   }),
   computed: {
-    loggingIn () { return this.$store.state.users.loggingIn }
+    loggingIn () { return this.$store.state.users.loggingIn },
+    registrationOpen () { return this.$store.state.config.registrationOpen }
   },
   methods: {
     submit () {
diff --git a/src/components/login_form/login_form.vue b/src/components/login_form/login_form.vue
index 585af6f6..d6291148 100644
--- a/src/components/login_form/login_form.vue
+++ b/src/components/login_form/login_form.vue
@@ -16,7 +16,7 @@
         </div>
         <div class='form-group'>
           <div class='login-bottom'>
-            <div><router-link :to="{name: 'registration'}" class='register'>Register</router-link></div>
+            <div><router-link :to="{name: 'registration'}" v-if='registrationOpen' class='register'>Register</router-link></div>
             <button :disabled="loggingIn" type='submit' class='btn btn-default base05 base01-background'>Log in</button>
           </div>
         </div>
diff --git a/src/components/registration/registration.js b/src/components/registration/registration.js
index 9e99197c..771b3b27 100644
--- a/src/components/registration/registration.js
+++ b/src/components/registration/registration.js
@@ -4,6 +4,11 @@ const registration = {
     error: false,
     registering: false
   }),
+  created () {
+    if (!this.$store.state.config.registrationOpen || !!this.$store.state.users.currentUser) {
+      this.$router.push('/main/all')
+    }
+  },
   computed: {
     termsofservice () { return this.$store.state.config.tos }
   },
diff --git a/src/main.js b/src/main.js
index 52b820c2..4b7891ed 100644
--- a/src/main.js
+++ b/src/main.js
@@ -86,11 +86,12 @@ new Vue({
 
 window.fetch('/static/config.json')
   .then((res) => res.json())
-  .then(({name, theme, background, logo, tos}) => {
+  .then(({name, theme, background, logo, registrationOpen}) => {
     store.dispatch('setOption', { name: 'name', value: name })
     store.dispatch('setOption', { name: 'theme', value: theme })
     store.dispatch('setOption', { name: 'background', value: background })
     store.dispatch('setOption', { name: 'logo', value: logo })
+    store.dispatch('setOption', { name: 'registrationOpen', value: registrationOpen })
   })
 
 window.fetch('/static/terms-of-service.html')
diff --git a/static/config.json b/static/config.json
index 3b6d56c4..195ee046 100644
--- a/static/config.json
+++ b/static/config.json
@@ -2,5 +2,6 @@
   "name": "Pleroma FE",
   "theme": "base16-pleroma-dark.css",
   "background": "/static/bg.jpg",
-  "logo": "/static/logo.png"
+  "logo": "/static/logo.png",
+  "registrationOpen": false
 }