Verified Commit 12ab86b3 authored by Korko's avatar Korko
Browse files

Fix Recaptcha

parent 7ea1d2a1
......@@ -14197,6 +14197,11 @@
"integrity": "sha512-s7jmZPlm9FeueJg1RwJtnE9KNPtME/7C8uRWSfp9/yEN4M8XcS/d+bddoyVwVnvFyRh9msFo0HWeW0vTL8Qv+w==",
"dev": true
},
"vue-recaptcha": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/vue-recaptcha/-/vue-recaptcha-1.3.0.tgz",
"integrity": "sha512-9Qf1niyHq4QbEUhsvdUkS8BoOyhYwpp8v+imUSj67ffDo9RQ6h8Ekq8EGnw/GKViXCwWalp7EEY/n/fOtU0FyA=="
},
"vue-style-loader": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz",
......
......@@ -53,6 +53,7 @@
},
"dependencies": {
"vue-i18n": "^8.16.0",
"vue-recaptcha": "^1.3.0",
"vuejs-dialog": "^1.4.1"
}
}
......@@ -1225,6 +1225,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _csv_vue__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./csv.vue */ "./resources/js/components/csv.vue");
/* harmony import */ var _ajaxForm_vue__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./ajaxForm.vue */ "./resources/js/components/ajaxForm.vue");
/* harmony import */ var _participant_vue__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./participant.vue */ "./resources/js/components/participant.vue");
/* harmony import */ var vue_recaptcha__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! vue-recaptcha */ "./node_modules/vue-recaptcha/dist/vue-recaptcha.es.js");
......@@ -1255,6 +1256,7 @@ var Modernizr = __webpack_require__(/*! Modernizr */ "./.modernizrrc");
var formatMoment = function formatMoment(amount, unit) {
return moment__WEBPACK_IMPORTED_MODULE_18___default()(window.now).add(amount, unit).format('YYYY-MM-DD');
};
......@@ -1263,7 +1265,8 @@ var formatMoment = function formatMoment(amount, unit) {
components: {
AjaxForm: _ajaxForm_vue__WEBPACK_IMPORTED_MODULE_21__["default"],
Csv: _csv_vue__WEBPACK_IMPORTED_MODULE_20__["default"],
Participant: _participant_vue__WEBPACK_IMPORTED_MODULE_22__["default"]
Participant: _participant_vue__WEBPACK_IMPORTED_MODULE_22__["default"],
VueRecaptcha: vue_recaptcha__WEBPACK_IMPORTED_MODULE_23__["default"]
},
data: function data() {
return {
......@@ -1329,12 +1332,6 @@ var formatMoment = function formatMoment(amount, unit) {
}
},
watch: {
sending: function sending(newVal) {
// If we reset the sending status, reset the captcha
if (!newVal) {
grecaptcha && grecaptcha.reset(); // eslint-disable-line no-undef
}
},
sent: function sent(newVal) {
// If sent is a success, scroll to the message
if (newVal) {
......@@ -2667,8 +2664,8 @@ var render = function() {
[
_c(
_vm.$td("form.mail.content.tip1", {
"open-target": _vm.anchor("target"),
"open-santa": _vm.anchor("santa"),
target: _vm.anchor("target"),
santa: _vm.anchor("santa"),
close: "</a>"
}),
{
......
This diff is collapsed.
......@@ -40,6 +40,9 @@
},
watch: {
sending() {
if (!this.sending) {
this.onCaptchaExpired();
}
this.$emit('change', this.sending);
}
},
......@@ -96,6 +99,9 @@
});
}
},
onCaptchaExpired() {
grecaptcha && grecaptcha.reset(); // eslint-disable-line no-undef
},
onSubmit() {
this.submit();
},
......@@ -116,9 +122,14 @@
<slot v-bind="{ sending, sent, submit, onSubmit, fieldError }" />
</fieldset>
<fieldset v-if="button">
<div class="form-group btn">
<!-- {!! NoCaptcha::display(['data-theme' => 'light']) !!} -->
</div>
<vue-recaptcha
v-if="api"
:sitekey="api"
:loadRecaptchaScript="true"
ref="recaptcha"
@expired="onCaptchaExpired"
size="invisible"
></vue-recaptcha>
<button type="submit" class="btn btn-primary btn-lg">
<span v-if="sent"><span class="fas fa-check-circle" /> {{ buttonSent || $t('common.form.sent') }}</span>
......
......@@ -23,6 +23,7 @@
import Csv from './csv.vue';
import AjaxForm from './ajaxForm.vue';
import Participant from './participant.vue';
import VueRecaptcha from 'vue-recaptcha';
const formatMoment = (amount, unit) => Moment(window.now).add(amount, unit).format('YYYY-MM-DD')
......@@ -30,7 +31,8 @@
components: {
AjaxForm,
Csv,
Participant
Participant,
VueRecaptcha
},
data: function() {
......@@ -99,13 +101,6 @@
},
watch: {
sending(newVal) {
// If we reset the sending status, reset the captcha
if (!newVal) {
grecaptcha && grecaptcha.reset(); // eslint-disable-line no-undef
}
},
sent(newVal) {
// If sent is a success, scroll to the message
if (newVal) {
......@@ -354,7 +349,7 @@
/>
<blockquote class="tips">
<p :is="$td('form.mail.content.tip1', {'open-target': anchor('target'), 'open-santa': anchor('santa'), 'close':'</a>'})" @santa="appendSanta" @target="appendTarget"></p>
<p :is="$td('form.mail.content.tip1', {'target': anchor('target'), 'santa': anchor('santa'), 'close':'</a>'})" @santa="appendSanta" @target="appendTarget"></p>
<p>{{ $t('form.mail.content.tip2') }}</p>
</blockquote>
</div>
......
export default {
csrf: document.querySelector('meta[name="csrf-token"]').getAttribute('content'),
key: window.location.hash.substr(1)
key: window.location.hash.substr(1),
api: window.global.api
};
......@@ -304,7 +304,7 @@ export default {
"content": {
"label": "Contenu du mail",
"placeholder": "ex : Salut {SANTA}, pour la soirée secret santa, ta cible c'est {TARGET}. Pour rappel, le montant du cadeau est de 3€ !",
"tip1": "Utilisez \"{open}-santa{SANTA}{close}\" pour le nom de celui qui recevra le mail et \"{open}-target{TARGET}{close}\" pour le nom de sa cible.",
"tip1": "Utilisez \"{santa}&#123;SANTA&#125;{close}\" pour le nom de celui qui recevra le mail et \"{target}&#123;TARGET&#125;{close}\" pour le nom de sa cible.",
"tip2": "Conseil : Pensez à rappeler la date, le lieu ainsi que le montant du cadeau."
},
"post": "----\nPour écrire à votre Secret Santa, allez sur la page suivante : {link}\nvia SecretSanta.fr"
......
......@@ -101,7 +101,7 @@ Le code source est disponible sur :link',
'content' => [
'label' => 'Contenu du mail',
'placeholder' => 'ex : Salut {SANTA}, pour la soirée secret santa, ta cible c\'est {TARGET}. Pour rappel, le montant du cadeau est de 3€ !',
'tip1' => 'Utilisez ":open-santa{SANTA}:close" pour le nom de celui qui recevra le mail et ":open-target{TARGET}:close" pour le nom de sa cible.',
'tip1' => 'Utilisez ":santa&#123;SANTA&#125;:close" pour le nom de celui qui recevra le mail et ":target&#123;TARGET&#125;:close" pour le nom de sa cible.',
'tip2' => 'Conseil : Pensez à rappeler la date, le lieu ainsi que le montant du cadeau.',
],
'post' => '----
......
......@@ -3,8 +3,6 @@
@section('script')
@parent
{!! NoCaptcha::renderJs(App::getLocale()) !!}
<script type="text/javascript" src="{{ mix('/js/common.js') }}"></script>
<script type="text/javascript" src="{{ mix('/js/dearSanta.js') }}"></script>
@stop
......@@ -3,8 +3,6 @@
@section('script')
@parent
{!! NoCaptcha::renderJs(App::getLocale()) !!}
<script type="text/javascript" src="{{ mix('/js/common.js') }}"></script>
<script type="text/javascript" src="{{ mix('/js/organizer.js') }}"></script>
@stop
......
......@@ -7,7 +7,8 @@
@javascript([
'now' => time(),
'lang' => App::getLocale(),
'alert' => session('message', '')
'alert' => session('message', ''),
'api' => config('captcha.sitekey'),
])
@stop
......@@ -142,6 +143,4 @@
<script type="text/javascript" src="{{ mix('/js/common.js') }}"></script>
<script type="text/javascript" src="{{ mix('/js/randomForm.js') }}"></script>
{!! NoCaptcha::renderJs(App::getLocale()) !!}
@stop
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment