From a766e886f529a3f602ebacf70d7944678c027414 Mon Sep 17 00:00:00 2001
From: Roger Braun <roger@rogerbraun.net>
Date: Sat, 15 Apr 2017 18:12:23 +0200
Subject: Add a registration form.

---
 src/components/login_form/login_form.vue | 3 +++
 1 file changed, 3 insertions(+)

(limited to 'src/components/login_form/login_form.vue')

diff --git a/src/components/login_form/login_form.vue b/src/components/login_form/login_form.vue
index b2fa5341..bf3f24e7 100644
--- a/src/components/login_form/login_form.vue
+++ b/src/components/login_form/login_form.vue
@@ -20,6 +20,9 @@
         <div v-if="authError" class='form-group'>
           <div class='error base05'>{{authError}}</div>
         </div>
+        <div class='form-group'>
+          <router-link :to="{name: 'registration'}">Register new account</router-link>
+        </div>
       </form>
     </div>
   </div>
-- 
cgit v1.2.3-70-g09d2


From 143aa3b990c0e0fac98c4a097d68e9f7518f1940 Mon Sep 17 00:00:00 2001
From: Shpuld Shpuldson <shpuld@gmail.com>
Date: Fri, 21 Apr 2017 18:52:42 +0300
Subject: Started captcha and better avatar control, improved login form to fit
 register link better.

---
 src/components/login_form/login_form.vue     | 22 +++++++++++----
 src/components/registration/registration.vue | 14 +++++++++-
 src/components/settings/settings.js          | 20 +++++++++++---
 src/components/settings/settings.vue         | 40 ++++++++++++++++++++++++++--
 4 files changed, 84 insertions(+), 12 deletions(-)

(limited to 'src/components/login_form/login_form.vue')

diff --git a/src/components/login_form/login_form.vue b/src/components/login_form/login_form.vue
index bf3f24e7..585af6f6 100644
--- a/src/components/login_form/login_form.vue
+++ b/src/components/login_form/login_form.vue
@@ -15,14 +15,14 @@
           <input :disabled="loggingIn" v-model='user.password' class='form-control' id='password' type='password'>
         </div>
         <div class='form-group'>
-          <button :disabled="loggingIn" type='submit' class='btn btn-default base05 base01-background'>Submit</button>
+          <div class='login-bottom'>
+            <div><router-link :to="{name: 'registration'}" class='register'>Register</router-link></div>
+            <button :disabled="loggingIn" type='submit' class='btn btn-default base05 base01-background'>Log in</button>
+          </div>
         </div>
         <div v-if="authError" class='form-group'>
           <div class='error base05'>{{authError}}</div>
         </div>
-        <div class='form-group'>
-          <router-link :to="{name: 'registration'}">Register new account</router-link>
-        </div>
       </form>
     </div>
   </div>
@@ -42,8 +42,8 @@
   }
 
   .btn {
-    margin-top: 1.0em;
     min-height: 28px;
+    width: 10em;
   }
 
   .error {
@@ -53,6 +53,18 @@
     min-height: 28px;
     line-height: 28px;
   }
+
+  .register {
+    flex: 1 1;
+  }
+
+  .login-bottom {
+    margin-top: 1.0em;
+    display: flex;
+    flex-direction: row;
+    align-items: center;
+    justify-content: space-between;
+  }
 }
 
 </style>
diff --git a/src/components/registration/registration.vue b/src/components/registration/registration.vue
index 5267f0e1..f010d8ab 100644
--- a/src/components/registration/registration.vue
+++ b/src/components/registration/registration.vue
@@ -31,6 +31,13 @@
               <label for='password_confirmation'>Password confirmation</label>
               <input :disabled="registering" v-model='user.confirm' class='form-control' id='password_confirmation' type='password'>
             </div>
+            <!--
+            <div class='form-group'>
+              <label for='captcha'>Captcha</label>
+              <img src='/qvittersimplesecurity/captcha.jpg' alt='captcha' class='captcha'>
+              <input :disabled="registering" v-model='user.captcha' placeholder='Enter captcha' type='test' class='form-control' id='captcha'>
+            </div>
+            -->
             <div class='form-group'>
               <button :disabled="registering" type='submit' class='btn btn-default base05 base01-background'>Submit</button>
             </div>
@@ -63,7 +70,7 @@
   }
 
   .terms-of-service {
-    flex: 0 1 55%;
+    flex: 0 1 50%;
     margin: 0.8em;
   }
 
@@ -99,6 +106,11 @@
     padding: 0.1em 0.2em 0.2em 0.2em;
   }
 
+  .captcha {
+    max-width: 350px;
+    margin-bottom: 0.4em;
+  }
+
   .btn {
     //align-self: flex-start;
     //width: 10em;
diff --git a/src/components/settings/settings.js b/src/components/settings/settings.js
index 883e5caa..e4ea56f6 100644
--- a/src/components/settings/settings.js
+++ b/src/components/settings/settings.js
@@ -7,7 +7,8 @@ const settings = {
       hideAttachmentsLocal: this.$store.state.config.hideAttachments,
       hideAttachmentsInConvLocal: this.$store.state.config.hideAttachmentsInConv,
       hideNsfwLocal: this.$store.state.config.hideNsfw,
-      muteWordsString: this.$store.state.config.muteWords.join('\n')
+      muteWordsString: this.$store.state.config.muteWords.join('\n'),
+      previewfile: null
     }
   },
   components: {
@@ -25,15 +26,26 @@ const settings = {
       const reader = new FileReader()
       reader.onload = ({target}) => {
         const img = target.result
-
-        this.$store.state.api.backendInteractor.updateAvatar({params: {img}}).then((user) => {
+        this.previewfile = img
+        /*this.$store.state.api.backendInteractor.updateAvatar({params: {img}}).then((user) => {
           if (!user.error) {
             this.$store.commit('addNewUsers', [user])
             this.$store.commit('setCurrentUser', user)
           }
-        })
+        })*/
       }
       reader.readAsDataURL(file)
+    },
+    submitAvatar () {
+      if (!this.previewfile)
+        return
+      const img = this.previewfile
+      this.$store.state.api.backendInteractor.updateAvatar({params: {img}}).then((user) => {
+        if (!user.error) {
+          this.$store.commit('addNewUsers', [user])
+          this.$store.commit('setCurrentUser', user)
+        }
+      })
     }
   },
   watch: {
diff --git a/src/components/settings/settings.vue b/src/components/settings/settings.vue
index 7ceac828..bdc0f351 100644
--- a/src/components/settings/settings.vue
+++ b/src/components/settings/settings.vue
@@ -8,12 +8,17 @@
         <h2>Theme</h2>
         <style-switcher></style-switcher>
       </div>
-      <div class="setting-item">
+      <div class="setting-item" v-if="user">
         <h2>Avatar</h2>
-        <img :src="user.profile_image_url_original"></img>
+        <p>Your current avatar:</p>
+        <img :src="user.profile_image_url_original" class="old-avatar"></img>
+        <p>Set new avatar:</p>
+        <img class="new-avatar" v-bind:src="previewfile">
+        </img>
         <div>
           <input name="avatar-upload" id="avatar-upload" type="file" @change="uploadAvatar" ></input>
         </div>
+        <button class="btn btn-default base05 base01-background" v-if="previewfile" @click="submitAvatar">Submit</button>
       </div>
       <div class="setting-item">
         <h2>Filtering</h2>
@@ -51,6 +56,37 @@
      width: 100%;
      height: 100px;
    }
+
+   .old-avatar {
+     width: 128px;
+     border-radius: 5px;
+   }
+
+   .new-avatar {
+     max-width: 100%;
+     border-radius: 5px;
+   }
+
+   .btn {
+     margin-top: 1em;
+     min-height: 28px;
+     width: 10em;
+   }
+
+   .cropper {
+     //position: absolute;
+     cursor: move;
+     width: 128px;
+     height: 128px;
+     border:1px solid #fff;
+     background-color: #000000;
+     .sub {
+       width: 100%;
+       height: 100%;
+       margin: -1px -1px -1px -1px ;
+       border:1px dashed #000;
+     }
+   }
  }
  .setting-list {
    list-style-type: none;
-- 
cgit v1.2.3-70-g09d2


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: 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(-)

(limited to 'src/components/login_form/login_form.vue')

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
 }
-- 
cgit v1.2.3-70-g09d2

