diff --git a/data/locale/messages.en.yml b/data/locale/messages.en.yml
index 9ff0d74..14d899d 100644
--- a/data/locale/messages.en.yml
+++ b/data/locale/messages.en.yml
@@ -11,12 +11,32 @@ sign.up.flash.already_in_use_email_and_username: "%username%/%email% is already
sign.up.flash.already_in_use_email: "%email% is already in use."
sign.up.flash.already_in_use_username: "%username% is already in use."
sign.up.form.button: Sign up
-sign.up.form.username: Username:
-sign.up.form.username.placeholder: username
+sign.up.form.username: Nickname:
+sign.up.form.username.placeholder: nickname
sign.up.form.email: Email (only used for one time email verification, not persisted further):
sign.up.form.email.placeholder: xyz@domain.tld
sign.up.form.password: Password:
sign.up.form.password.placeholder: Password:
+sign.up.form.legalmodal.open: I've read the privacy policy and I agree to it.
+sign.up.form.legalmodal.header: Privacy Policy
+sign.up.form.legalmodal.text: |
+
"),this.$body.append(this.$elm),e=function(o,t){t.elm.remove()},this.showSpinner(),t.trigger(o.modal.AJAX_SEND),o.get(n).done(function(i){if(o.modal.isActive()){t.trigger(o.modal.AJAX_SUCCESS);var s=l();s.$elm.empty().append(i).on(o.modal.CLOSE,e),s.hideSpinner(),s.open(),t.trigger(o.modal.AJAX_COMPLETE)}}).fail(function(){t.trigger(o.modal.AJAX_FAIL);var i=l();i.hideSpinner(),s.pop(),t.trigger(o.modal.AJAX_COMPLETE)});else this.$elm=t,this.anchor=t,this.$body.append(this.$elm),this.open()},o.modal.prototype={constructor:o.modal,open:function(){var t=this;this.block(),this.anchor.blur(),this.options.doFade?setTimeout(function(){t.show()},this.options.fadeDuration*this.options.fadeDelay):this.show(),o(i).off("keydown.modal").on("keydown.modal",function(o){var t=l();27===o.which&&t.options.escapeClose&&t.close()}),this.options.clickClose&&this.$blocker.click(function(t){t.target===this&&o.modal.close()})},close:function(){s.pop(),this.unblock(),this.hide(),o.modal.isActive()||o(i).off("keydown.modal")},block:function(){this.$elm.trigger(o.modal.BEFORE_BLOCK,[this._ctx()]),this.$body.css("overflow","hidden"),this.$blocker=o('
').appendTo(this.$body),n(),this.options.doFade&&this.$blocker.css("opacity",0).animate({opacity:1},this.options.fadeDuration),this.$elm.trigger(o.modal.BLOCK,[this._ctx()])},unblock:function(t){!t&&this.options.doFade?this.$blocker.fadeOut(this.options.fadeDuration,this.unblock.bind(this,!0)):(this.$blocker.children().appendTo(this.$body),this.$blocker.remove(),this.$blocker=null,n(),o.modal.isActive()||this.$body.css("overflow",""))},show:function(){this.$elm.trigger(o.modal.BEFORE_OPEN,[this._ctx()]),this.options.showClose&&(this.closeButton=o('
'+this.options.closeText+" "),this.$elm.append(this.closeButton)),this.$elm.addClass(this.options.modalClass).appendTo(this.$blocker),this.options.doFade?this.$elm.css({opacity:0,display:"inline-block"}).animate({opacity:1},this.options.fadeDuration):this.$elm.css("display","inline-block"),this.$elm.trigger(o.modal.OPEN,[this._ctx()])},hide:function(){this.$elm.trigger(o.modal.BEFORE_CLOSE,[this._ctx()]),this.closeButton&&this.closeButton.remove();var t=this;this.options.doFade?this.$elm.fadeOut(this.options.fadeDuration,function(){t.$elm.trigger(o.modal.AFTER_CLOSE,[t._ctx()])}):this.$elm.hide(0,function(){t.$elm.trigger(o.modal.AFTER_CLOSE,[t._ctx()])}),this.$elm.trigger(o.modal.CLOSE,[this._ctx()])},showSpinner:function(){this.options.showSpinner&&(this.spinner=this.spinner||o('
').append(this.options.spinnerHtml),this.$body.append(this.spinner),this.spinner.show())},hideSpinner:function(){this.spinner&&this.spinner.remove()},_ctx:function(){return{elm:this.$elm,$elm:this.$elm,$blocker:this.$blocker,options:this.options}}},o.modal.close=function(t){if(o.modal.isActive()){t&&t.preventDefault();var i=l();return i.close(),i.$elm}},o.modal.isActive=function(){return s.length>0},o.modal.getCurrent=l,o.modal.defaults={closeExisting:!0,escapeClose:!0,clickClose:!0,closeText:"Close",closeClass:"",modalClass:"modal",blockerClass:"jquery-modal",spinnerHtml:'
',showSpinner:!0,showClose:!0,fadeDuration:null,fadeDelay:1},o.modal.BEFORE_BLOCK="modal:before-block",o.modal.BLOCK="modal:block",o.modal.BEFORE_OPEN="modal:before-open",o.modal.OPEN="modal:open",o.modal.BEFORE_CLOSE="modal:before-close",o.modal.CLOSE="modal:close",o.modal.AFTER_CLOSE="modal:after-close",o.modal.AJAX_SEND="modal:ajax:send",o.modal.AJAX_SUCCESS="modal:ajax:success",o.modal.AJAX_FAIL="modal:ajax:fail",o.modal.AJAX_COMPLETE="modal:ajax:complete",o.fn.modal=function(t){return 1===this.length&&new o.modal(this,t),this},o(i).on("click.modal",'a[rel~="modal:close"]',o.modal.close),o(i).on("click.modal",'a[rel~="modal:open"]',function(t){t.preventDefault(),o(this).modal()})});
\ No newline at end of file
diff --git a/src/Control/Actions/SignUpAction.php b/src/Control/Actions/SignUpAction.php
index 5a9a29e..45377b0 100644
--- a/src/Control/Actions/SignUpAction.php
+++ b/src/Control/Actions/SignUpAction.php
@@ -42,6 +42,7 @@ final class SignUpAction
'username' => 'required|alpha_numeric|max_len,64|min_len,3',
'email' => 'required|valid_email|max_len,64|min_len,5',
'password' => 'required|max_len,255|min_len,8',
+ 'legal' => 'required|boolean'
]);
if (!$validator->run($body)) {
$validator->addErrorsToFlashMessage($this->flash);
diff --git a/src/View/base.twig b/src/View/base.twig
index df49661..7cd8e8f 100644
--- a/src/View/base.twig
+++ b/src/View/base.twig
@@ -10,9 +10,11 @@
+
+
diff --git a/src/View/signup.twig b/src/View/signup.twig
index e24a6af..e4d33a3 100644
--- a/src/View/signup.twig
+++ b/src/View/signup.twig
@@ -12,7 +12,20 @@
{% trans %}sign.up.form.password{% endtrans %}
+
+
+
+
+
{% trans %}sign.up.form.legalmodal.open{% endtrans %}
+
+
+
+
+
{% trans %}sign.up.form.legalmodal.header{% endtrans %}
+
{{ 'sign.up.form.legalmodal.text'|trans|raw }}
+
+
{% endblock %}
\ No newline at end of file