]> git.ipfire.org Git - ipfire.org.git/blame - src/templates/auth/register.html
register.html: Drop all old commented content
[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
RH
6 <section class="section">
7 <div class="container">
8 <div class="columns is-centered">
9 <div class="column is-one-third">
10 <h1 class="title is-1">
11 IPFire<span class="has-text-primary">_</span>
12 </h1>
13 <h4 class="subtitle is-4">{{ _("Register A New Account") }}</h4>
14
15 <div class="block">
16 <p class="is-size-5">
17 {{ _("Become a part of our community by registering an account!") }}
18 </p>
19 </div>
20
21 <form id="form-register" action="" method="POST">
22 {% raw xsrf_form_html() %}
23
24 <input type="hidden" name="next" value="{{ next or "" }}">
25
26 <div class="block">
27 <div class="field">
28 <div class="field-body">
29 <div class="field">
30 <p class="control has-icons-left">
31 <span class="icon is-small is-left">
32 <i class="fas fa-at"></i>
33 </span>
34 <input class="input" type="text" placeholder="{{ _("Username") }}" required autofocus
35 pattern="[a-z_][a-z0-9_-]{3,31}">
36 </p>
37 </div>
38 </div>
39 </div>
40
41 <div id="uid-invalid" class="invalid-feedback invalid-feedback-uid">
42 {{ _("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") }}
43 </div>
44 <div id="uid-taken" class="invalid-feedback invalid-feedback-uid">
45 {{ _("This username is not available") }}
46 </div>
47 </div>
48
49 <div class="block">
50 <div class="field">
51 <div class="field-body">
52 <div class="field">
53 <p class="control has-icons-left">
54 <span class="icon is-small is-left">
55 <i class="fas fa-person"></i>
56 </span>
57 <input class="input" type="text" name="first_name" placeholder="{{ _("First Name") }}" required autofocus>
58 </p>
59 <p class="control has-icons-left">
60 <span class="icon is-small is-left">
61 <i class="fas fa-person"></i>
62 </span>
63 <input class="input" type="text" name="last_name" placeholder="{{ _("Last Name") }}" required autofocus>
64 </p>
65 </div>
66 </div>
67 </div>
68 </div>
69
62bf81fb
RH
70 <div class="block">
71 <div class="field">
72 <div class="field-body">
73 <div class="field">
74 <p class="control has-icons-left">
75 <span class="icon is-small is-left">
76 <i class="fas fa-envelope"></i>
77 </span>
78 <input class="input" type="email"
79 name="email" placeholder="{{ _("Email Address") }}" required>
80 <div id="email-invalid" class="invalid-feedback invalid-feedback-email">
81 {{ _("This email address is invalid") }}
82 </div>
83 <div id="email-blacklisted" class="invalid-feedback invalid-feedback-email">
84 {{ _("This email address cannot be used") }}
85 </div>
86 <div id="email-taken" class="invalid-feedback invalid-feedback-email">
87 {{ _("This email address is already in use") }}
88 </div>
89 </p>
90 </div>
91 </div>
92 </div>
93 </div>
94
8ffccddc
RH
95 <div class="field">
96 <div class="control">
97 <button class="button is-primary is-medium is-fullwidth">
98 {{ _("Register") }}
99 </button>
100 </div>
101 </div>
102 </form>
103 </div>
104 </div>
105 </div>
106 </div>
107 </section>
f32dd17f 108{% end block %}
689effd0
MT
109
110{% block javascript %}
111 <script>
838a3e09
MT
112 var form = $("#form-register");
113 var submit = form.find(":submit");
114
115 // Store the valid status
116 var valid = {
117 uid: false,
118 email: false,
119 };
120
689effd0 121 var check_uid;
66181c96 122 var check_email;
689effd0 123
838a3e09 124 form.find("input[name=uid]").on("keyup", function(e) {
689effd0
MT
125 if (check_uid)
126 clearTimeout(check_uid);
127
128 var uid = $(this);
129
130 check_uid = setTimeout(function() {
8ffccddc 131 $.get("/api/check/uid", { uid : uid.val() },
689effd0
MT
132 function(data) {
133 // Reset all classes
8ffccddc 134 uid.removeClass("is-success is-danger");
838a3e09 135 valid.uid = false;
689effd0
MT
136
137 // Hide all feedback
6a79a85e 138 $(".invalid-feedback-uid").hide();
689effd0
MT
139
140 switch (data.result) {
141 case "ok":
8ffccddc 142 uid.addClass("is-success");
838a3e09 143 valid.uid = true;
689effd0
MT
144 break;
145
146 case "invalid":
8ffccddc 147 uid.addClass("is-danger");
689effd0
MT
148 $("#uid-invalid").show();
149 break;
150
151 case "taken":
8ffccddc 152 uid.addClass("is-danger");
689effd0
MT
153 $("#uid-taken").show();
154 break;
155 }
838a3e09
MT
156
157 form.trigger("change");
689effd0
MT
158 }
159 );
160 }, 250);
161 });
66181c96 162
838a3e09 163 form.find("input[name=email]").on("keyup", function(e) {
66181c96
MT
164 if (check_email)
165 clearTimeout(check_email);
166
167 var email = $(this);
168
169 check_email = setTimeout(function() {
170 $.get("/api/check/email", { email : email.val() },
171 function(data) {
172 // Reset all classes
8ffccddc 173 email.removeClass("is-success is-danger");
838a3e09 174 valid.email = false;
66181c96
MT
175
176 // Hide all feedback
6a79a85e 177 $(".invalid-feedback-email").hide();
66181c96
MT
178
179 switch (data.result) {
180 case "ok":
8ffccddc 181 email.addClass("is-success");
838a3e09 182 valid.email = true;
66181c96
MT
183 break;
184
185 case "invalid":
8ffccddc 186 email.addClass("is-danger");
66181c96
MT
187 $("#email-invalid").show();
188 break;
189
3095c017 190 case "blacklisted":
8ffccddc 191 email.addClass("is-danger");
3095c017
MT
192 $("#email-blacklisted").show();
193 break;
194
66181c96 195 case "taken":
8ffccddc 196 email.addClass("is-danger");
66181c96
MT
197 $("#email-taken").show();
198 break;
199 }
838a3e09
MT
200
201 form.trigger("change");
66181c96
MT
202 }
203 );
204 }, 250);
205 });
838a3e09
MT
206
207 form.on("change", function() {
208 var disabled = false;
209
210 $.each(valid, function(field, status) {
211 if (!status) {
212 disabled = true;
213 return false;
214 }
215 });
216
217 submit.prop("disabled", disabled);
218 });
689effd0 219 </script>
2dadab0a 220{% end block %}