]> git.ipfire.org Git - ipfire.org.git/blame - src/templates/auth/register.html
added email field to form
[ipfire.org.git] / src / templates / auth / register.html
CommitLineData
f32dd17f
MT
1{% extends "../base.html" %}
2
3{% block title %}{{ _("Register") }}{% end block %}
4
5{% block content %}
8ffccddc 6 <!--<div class="row justify-content-center my-5">
f32dd17f 7 <div class="col col-md-6">
6c805af7 8 <h4 class="mb-4">{{ _("Register A New Account") }}</h4>
f32dd17f
MT
9
10 <p class="lead">
11 {{ _("Become a part of our community by registering an account!") }}
12 </p>
13
838a3e09 14 <form id="form-register" action="" method="POST">
f32dd17f
MT
15 {% raw xsrf_form_html() %}
16
17 <input type="hidden" name="next" value="{{ next or "" }}">
18
1f12d610 19 <div class="mb-3">
689effd0 20 <div class="input-group">
8f406639 21 <span class="input-group-text">@</span>
689effd0
MT
22 <input type="text" class="form-control form-control-lg"
23 name="uid" placeholder="{{ _("Username") }}" required autofocus
48e3ea58 24 pattern="[a-z_][a-z0-9_-]{3,31}">
1d4d4ce7 25 </div>
6a79a85e 26 <div id="uid-invalid" class="invalid-feedback invalid-feedback-uid">
3095c017 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") }}
1d4d4ce7 28 </div>
6a79a85e 29 <div id="uid-taken" class="invalid-feedback invalid-feedback-uid">
3095c017 30 {{ _("This username is not available") }}
689effd0 31 </div>
f32dd17f
MT
32 </div>
33
1f12d610
MT
34 <div class="row mb-3">
35 <div class="col-12 col-sm-6">
72cda03d 36 <label class="form-label">{{ _("First Name") }}</label>
6c805af7 37
f32dd17f
MT
38 <input type="text" class="form-control" name="first_name"
39 placeholder="{{ _("First Name") }}" required>
40 </div>
6c805af7 41
1f12d610 42 <div class="col-12 col-sm-6">
72cda03d 43 <label class="form-label">{{ _("Last Name") }}</label>
6c805af7 44
f32dd17f
MT
45 <input type="text" class="form-control" name="last_name"
46 placeholder="{{ _("Last Name") }}" required>
47 </div>
48 </div>
49
1f12d610 50 <div class="mb-3">
f32dd17f
MT
51 <input type="email" class="form-control"
52 name="email" placeholder="{{ _("Email Address") }}" required>
6a79a85e 53 <div id="email-invalid" class="invalid-feedback invalid-feedback-email">
3095c017
MT
54 {{ _("This email address is invalid") }}
55 </div>
6a79a85e 56 <div id="email-blacklisted" class="invalid-feedback invalid-feedback-email">
3095c017 57 {{ _("This email address cannot be used") }}
66181c96 58 </div>
6a79a85e 59 <div id="email-taken" class="invalid-feedback invalid-feedback-email">
3095c017 60 {{ _("This email address is already in use") }}
66181c96 61 </div>
f32dd17f
MT
62 </div>
63
e6b114b8 64 <div class="d-grid">
8ffccddc 65 <button type="submit" class="is-primary" disabled>
e6b114b8
MT
66 {{ _("Register") }}
67 </button>
68 </div>
f32dd17f
MT
69 </form>
70 </div>
8ffccddc
RH
71 </div>-->
72
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>
79 </h1>
80 <h4 class="subtitle is-4">{{ _("Register A New Account") }}</h4>
81
82 <div class="block">
83 <p class="is-size-5">
84 {{ _("Become a part of our community by registering an account!") }}
85 </p>
86 </div>
87
88 <form id="form-register" action="" method="POST">
89 {% raw xsrf_form_html() %}
90
91 <input type="hidden" name="next" value="{{ next or "" }}">
92
93 <div class="block">
94 <div class="field">
95 <div class="field-body">
96 <div class="field">
97 <p class="control has-icons-left">
98 <span class="icon is-small is-left">
99 <i class="fas fa-at"></i>
100 </span>
101 <input class="input" type="text" placeholder="{{ _("Username") }}" required autofocus
102 pattern="[a-z_][a-z0-9_-]{3,31}">
103 </p>
104 </div>
105 </div>
106 </div>
107
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") }}
110 </div>
111 <div id="uid-taken" class="invalid-feedback invalid-feedback-uid">
112 {{ _("This username is not available") }}
113 </div>
114 </div>
115
116 <div class="block">
117 <div class="field">
118 <div class="field-body">
119 <div class="field">
120 <p class="control has-icons-left">
121 <span class="icon is-small is-left">
122 <i class="fas fa-person"></i>
123 </span>
124 <input class="input" type="text" name="first_name" placeholder="{{ _("First Name") }}" required autofocus>
125 </p>
126 <p class="control has-icons-left">
127 <span class="icon is-small is-left">
128 <i class="fas fa-person"></i>
129 </span>
130 <input class="input" type="text" name="last_name" placeholder="{{ _("Last Name") }}" required autofocus>
131 </p>
132 </div>
133 </div>
134 </div>
135 </div>
136
62bf81fb
RH
137 <div class="block">
138 <div class="field">
139 <div class="field-body">
140 <div class="field">
141 <p class="control has-icons-left">
142 <span class="icon is-small is-left">
143 <i class="fas fa-envelope"></i>
144 </span>
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") }}
149 </div>
150 <div id="email-blacklisted" class="invalid-feedback invalid-feedback-email">
151 {{ _("This email address cannot be used") }}
152 </div>
153 <div id="email-taken" class="invalid-feedback invalid-feedback-email">
154 {{ _("This email address is already in use") }}
155 </div>
156 </p>
157 </div>
158 </div>
159 </div>
160 </div>
161
8ffccddc
RH
162 <div class="field">
163 <div class="control">
164 <button class="button is-primary is-medium is-fullwidth">
165 {{ _("Register") }}
166 </button>
167 </div>
168 </div>
169 </form>
170 </div>
171 </div>
172 </div>
173 </div>
174 </section>
f32dd17f 175{% end block %}
689effd0
MT
176
177{% block javascript %}
178 <script>
838a3e09
MT
179 var form = $("#form-register");
180 var submit = form.find(":submit");
181
182 // Store the valid status
183 var valid = {
184 uid: false,
185 email: false,
186 };
187
689effd0 188 var check_uid;
66181c96 189 var check_email;
689effd0 190
838a3e09 191 form.find("input[name=uid]").on("keyup", function(e) {
689effd0
MT
192 if (check_uid)
193 clearTimeout(check_uid);
194
195 var uid = $(this);
196
197 check_uid = setTimeout(function() {
8ffccddc 198 $.get("/api/check/uid", { uid : uid.val() },
689effd0
MT
199 function(data) {
200 // Reset all classes
8ffccddc 201 uid.removeClass("is-success is-danger");
838a3e09 202 valid.uid = false;
689effd0
MT
203
204 // Hide all feedback
6a79a85e 205 $(".invalid-feedback-uid").hide();
689effd0
MT
206
207 switch (data.result) {
208 case "ok":
8ffccddc 209 uid.addClass("is-success");
838a3e09 210 valid.uid = true;
689effd0
MT
211 break;
212
213 case "invalid":
8ffccddc 214 uid.addClass("is-danger");
689effd0
MT
215 $("#uid-invalid").show();
216 break;
217
218 case "taken":
8ffccddc 219 uid.addClass("is-danger");
689effd0
MT
220 $("#uid-taken").show();
221 break;
222 }
838a3e09
MT
223
224 form.trigger("change");
689effd0
MT
225 }
226 );
227 }, 250);
228 });
66181c96 229
838a3e09 230 form.find("input[name=email]").on("keyup", function(e) {
66181c96
MT
231 if (check_email)
232 clearTimeout(check_email);
233
234 var email = $(this);
235
236 check_email = setTimeout(function() {
237 $.get("/api/check/email", { email : email.val() },
238 function(data) {
239 // Reset all classes
8ffccddc 240 email.removeClass("is-success is-danger");
838a3e09 241 valid.email = false;
66181c96
MT
242
243 // Hide all feedback
6a79a85e 244 $(".invalid-feedback-email").hide();
66181c96
MT
245
246 switch (data.result) {
247 case "ok":
8ffccddc 248 email.addClass("is-success");
838a3e09 249 valid.email = true;
66181c96
MT
250 break;
251
252 case "invalid":
8ffccddc 253 email.addClass("is-danger");
66181c96
MT
254 $("#email-invalid").show();
255 break;
256
3095c017 257 case "blacklisted":
8ffccddc 258 email.addClass("is-danger");
3095c017
MT
259 $("#email-blacklisted").show();
260 break;
261
66181c96 262 case "taken":
8ffccddc 263 email.addClass("is-danger");
66181c96
MT
264 $("#email-taken").show();
265 break;
266 }
838a3e09
MT
267
268 form.trigger("change");
66181c96
MT
269 }
270 );
271 }, 250);
272 });
838a3e09
MT
273
274 form.on("change", function() {
275 var disabled = false;
276
277 $.each(valid, function(field, status) {
278 if (!status) {
279 disabled = true;
280 return false;
281 }
282 });
283
284 submit.prop("disabled", disabled);
285 });
689effd0 286 </script>
8ffccddc 287{% end block %}