Base support for CAPTCHA (kocaptcha)
This commit is contained in:
		
							parent
							
								
									4b30ce64c9
								
							
						
					
					
						commit
						9303bd5d36
					
				
					 2 changed files with 23 additions and 1 deletions
				
			
		| 
						 | 
					@ -11,7 +11,8 @@ const registration = {
 | 
				
			||||||
      username: '',
 | 
					      username: '',
 | 
				
			||||||
      password: '',
 | 
					      password: '',
 | 
				
			||||||
      confirm: ''
 | 
					      confirm: ''
 | 
				
			||||||
    }
 | 
					    },
 | 
				
			||||||
 | 
					    captcha: {}
 | 
				
			||||||
  }),
 | 
					  }),
 | 
				
			||||||
  validations: {
 | 
					  validations: {
 | 
				
			||||||
    user: {
 | 
					    user: {
 | 
				
			||||||
| 
						 | 
					@ -29,6 +30,13 @@ const registration = {
 | 
				
			||||||
    if ((!this.registrationOpen && !this.token) || this.signedIn) {
 | 
					    if ((!this.registrationOpen && !this.token) || this.signedIn) {
 | 
				
			||||||
      this.$router.push('/main/all')
 | 
					      this.$router.push('/main/all')
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fetch("/api/pleroma/captcha")
 | 
				
			||||||
 | 
					      .then(resp => resp.json())
 | 
				
			||||||
 | 
					      .then(resp => {
 | 
				
			||||||
 | 
					        // TODO: check for errors
 | 
				
			||||||
 | 
					        this.captcha = resp
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  computed: {
 | 
					  computed: {
 | 
				
			||||||
    token () { return this.$route.params.token },
 | 
					    token () { return this.$route.params.token },
 | 
				
			||||||
| 
						 | 
					@ -45,6 +53,8 @@ const registration = {
 | 
				
			||||||
    async submit () {
 | 
					    async submit () {
 | 
				
			||||||
      this.user.nickname = this.user.username
 | 
					      this.user.nickname = this.user.username
 | 
				
			||||||
      this.user.token = this.token
 | 
					      this.user.token = this.token
 | 
				
			||||||
 | 
					      this.user.captcha_solution = this.captcha.solution;
 | 
				
			||||||
 | 
					      this.user.captcha_token = this.captcha.token;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      this.$v.$touch()
 | 
					      this.$v.$touch()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -75,6 +75,18 @@
 | 
				
			||||||
              </ul>
 | 
					              </ul>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <div class="form-group" id="captcha-group">
 | 
				
			||||||
 | 
					              <template v-if="captcha.type == 'kocaptcha'">
 | 
				
			||||||
 | 
					                <img v-bind:src="captcha.url">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <label class='form--label' for='captcha-label'>CAPTCHA</label>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                <input :disabled="isPending"
 | 
				
			||||||
 | 
					                  v-model='captcha.solution'
 | 
				
			||||||
 | 
					                  class='form-control' id='captcha-answer' type='text'>
 | 
				
			||||||
 | 
					              </template>
 | 
				
			||||||
 | 
					            </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <div class='form-group' v-if='token' >
 | 
					            <div class='form-group' v-if='token' >
 | 
				
			||||||
              <label for='token'>{{$t('registration.token')}}</label>
 | 
					              <label for='token'>{{$t('registration.token')}}</label>
 | 
				
			||||||
              <input disabled='true' v-model='token' class='form-control' id='token' type='text'>
 | 
					              <input disabled='true' v-model='token' class='form-control' id='token' type='text'>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue