1 {% extends
"../base.html" %}
3 {% block title %}{{ _(
"Register") }}{% end block %}
6 <!--<div class="row justify-content-center my-5">
7 <div class="col col-md-6">
8 <h4 class="mb-4">{{ _("Register A New Account") }}</h4>
11 {{ _("Become a part of our community by registering an account!") }}
14 <form id="form-register" action="" method="POST">
15 {% raw xsrf_form_html() %}
17 <input type="hidden" name="next" value="{{ next or "" }}">
20 <div class="input-group">
21 <span class="input-group-text">@</span>
22 <input type="text" class="form-control form-control-lg"
23 name="uid" placeholder="{{ _("Username") }}" required autofocus
24 pattern="[a-z_][a-z0-9_-]{3,31}">
26 <div id="uid-invalid" class="invalid-feedback invalid-feedback-uid">
27 {{ _("Please choose a username in UNIX format with at least four characters, starting with a lowercase letter, followed by only lowercase letters, digits, dash and underscore") }}
29 <div id="uid-taken" class="invalid-feedback invalid-feedback-uid">
30 {{ _("This username is not available") }}
34 <div class="row mb-3">
35 <div class="col-12 col-sm-6">
36 <label class="form-label">{{ _("First Name") }}</label>
38 <input type="text" class="form-control" name="first_name"
39 placeholder="{{ _("First Name") }}" required>
42 <div class="col-12 col-sm-6">
43 <label class="form-label">{{ _("Last Name") }}</label>
45 <input type="text" class="form-control" name="last_name"
46 placeholder="{{ _("Last Name") }}" required>
51 <input type="email" class="form-control"
52 name="email" placeholder="{{ _("Email Address") }}" required>
53 <div id="email-invalid" class="invalid-feedback invalid-feedback-email">
54 {{ _("This email address is invalid") }}
56 <div id="email-blacklisted" class="invalid-feedback invalid-feedback-email">
57 {{ _("This email address cannot be used") }}
59 <div id="email-taken" class="invalid-feedback invalid-feedback-email">
60 {{ _("This email address is already in use") }}
65 <button type="submit" class="is-primary" disabled>
73 <section class=
"section">
74 <div class=
"container">
75 <div class=
"columns is-centered">
76 <div class=
"column is-one-third">
77 <h1 class=
"title is-1">
78 IPFire
<span class=
"has-text-primary">_
</span>
80 <h4 class=
"subtitle is-4">{{ _(
"Register A New Account") }}
</h4>
84 {{ _(
"Become a part of our community by registering an account!") }}
88 <form id=
"form-register" action=
"" method=
"POST">
89 {% raw xsrf_form_html() %}
91 <input type=
"hidden" name=
"next" value=
"{{ next or "" }}">
95 <div class=
"field-body">
97 <p class=
"control has-icons-left">
98 <span class=
"icon is-small is-left">
99 <i class=
"fas fa-at"></i>
101 <input class=
"input" type=
"text" placeholder=
"{{ _("Username
") }}" required autofocus
102 pattern=
"[a-z_][a-z0-9_-]{3,31}">
108 <div id=
"uid-invalid" class=
"invalid-feedback invalid-feedback-uid">
109 {{ _(
"Please choose a username in UNIX format with at least four characters, starting with a lowercase letter, followed by only lowercase letters, digits, dash and underscore") }}
111 <div id=
"uid-taken" class=
"invalid-feedback invalid-feedback-uid">
112 {{ _(
"This username is not available") }}
118 <div class=
"field-body">
120 <p class=
"control has-icons-left">
121 <span class=
"icon is-small is-left">
122 <i class=
"fas fa-person"></i>
124 <input class=
"input" type=
"text" name=
"first_name" placeholder=
"{{ _("First Name
") }}" required autofocus
>
126 <p class=
"control has-icons-left">
127 <span class=
"icon is-small is-left">
128 <i class=
"fas fa-person"></i>
130 <input class=
"input" type=
"text" name=
"last_name" placeholder=
"{{ _("Last Name
") }}" required autofocus
>
139 <div class=
"field-body">
141 <p class=
"control has-icons-left">
142 <span class=
"icon is-small is-left">
143 <i class=
"fas fa-envelope"></i>
145 <input class=
"input" type=
"email"
146 name=
"email" placeholder=
"{{ _("Email Address
") }}" required
>
147 <div id=
"email-invalid" class=
"invalid-feedback invalid-feedback-email">
148 {{ _(
"This email address is invalid") }}
150 <div id=
"email-blacklisted" class=
"invalid-feedback invalid-feedback-email">
151 {{ _(
"This email address cannot be used") }}
153 <div id=
"email-taken" class=
"invalid-feedback invalid-feedback-email">
154 {{ _(
"This email address is already in use") }}
163 <div class=
"control">
164 <button class=
"button is-primary is-medium is-fullwidth">
177 {% block javascript %}
179 var form = $(
"#form-register");
180 var submit = form.find(
":submit");
182 // Store the valid status
191 form.find(
"input[name=uid]").on(
"keyup", function(e) {
193 clearTimeout(check_uid);
197 check_uid = setTimeout(function() {
198 $.get(
"/api/check/uid", { uid : uid.val() },
201 uid.removeClass(
"is-success is-danger");
205 $(
".invalid-feedback-uid").hide();
207 switch (data.result) {
209 uid.addClass(
"is-success");
214 uid.addClass(
"is-danger");
215 $(
"#uid-invalid").show();
219 uid.addClass(
"is-danger");
220 $(
"#uid-taken").show();
224 form.trigger(
"change");
230 form.find(
"input[name=email]").on(
"keyup", function(e) {
232 clearTimeout(check_email);
236 check_email = setTimeout(function() {
237 $.get(
"/api/check/email", { email : email.val() },
240 email.removeClass(
"is-success is-danger");
244 $(
".invalid-feedback-email").hide();
246 switch (data.result) {
248 email.addClass(
"is-success");
253 email.addClass(
"is-danger");
254 $(
"#email-invalid").show();
258 email.addClass(
"is-danger");
259 $(
"#email-blacklisted").show();
263 email.addClass(
"is-danger");
264 $(
"#email-taken").show();
268 form.trigger(
"change");
274 form.on(
"change", function() {
275 var disabled = false;
277 $.each(valid, function(field, status) {
284 submit.prop(
"disabled", disabled);