rev |
line source |
domcox@265
|
1 /*
|
domcox@265
|
2 Login and password validation
|
domcox@265
|
3 Copyright (C) 2012 SliTaz GNU/linux - GNU gpl v3
|
domcox@265
|
4 */
|
domcox@265
|
5
|
domcox@265
|
6 ////
|
domcox@265
|
7 // Login validation - typical use:
|
domcox@265
|
8 // <input id="login1" onkeyup="checkLogin('login1','msg1'); return false;" />
|
domcox@265
|
9 // <span id="msg1"></span>
|
domcox@265
|
10
|
domcox@265
|
11 function checkLogin(user,message){
|
domcox@265
|
12 var login = document.getElementById(user);
|
domcox@265
|
13 var msg = document.getElementById(message);
|
domcox@265
|
14 var enoughRegex = new RegExp("(?=.{3,}).*", "g");
|
domcox@265
|
15 var incharRegex = new RegExp("^[A-Za-z0-9_-]{3,32}$");
|
domcox@265
|
16 if (false == enoughRegex.test(login.value)) {
|
domcox@265
|
17 msg.innerHTML ="<span class=\"msg-nok\">✖ Too short</span>";
|
domcox@265
|
18 return false;
|
domcox@265
|
19 } else if (login.value > 32) {
|
domcox@265
|
20 msg.innerHTML ="<span class=\"msg-nok\">✖ Too long</span>";
|
domcox@265
|
21 return false;
|
domcox@265
|
22 } else if (false == incharRegex.test(login.value)) {
|
domcox@265
|
23 msg.innerHTML ="<span class=\"msg-nok\">✖ Invalid chars</span>";
|
domcox@265
|
24 return false;
|
domcox@265
|
25 } else {
|
domcox@265
|
26 msg.innerHTML = "<span class=\"msg-ok\">✔</span";
|
domcox@265
|
27 }
|
domcox@265
|
28 }
|
domcox@265
|
29
|
domcox@265
|
30 ////
|
domcox@265
|
31 // Password validation - typical use:
|
domcox@265
|
32 // <input type="password" id="pass1" onkeyup="checkLogin('pass1','pass2','msg2'); return false;" />
|
domcox@265
|
33 // <input type="password" id="pass2" onkeyup="checkLogin('pass1','pass2','msg2'); return false;" />
|
domcox@265
|
34 // <span id="msg2"></span>
|
domcox@265
|
35
|
domcox@265
|
36 function checkPwd(password,confirm,message){
|
domcox@265
|
37 var pwd1 = document.getElementById(password);
|
domcox@265
|
38 var pwd2 = document.getElementById(confirm);
|
domcox@265
|
39 var msg = document.getElementById(message);
|
domcox@265
|
40 if(pwd1.value == pwd2.value){
|
domcox@265
|
41 // passwords match.
|
domcox@265
|
42 pwd2.classList.remove('alert');
|
domcox@265
|
43 // various checks
|
domcox@265
|
44 var enoughRegex = new RegExp("(?=.{3,}).*", "g");
|
domcox@265
|
45 var incharRegex = new RegExp("^[A-Za-z0-9!@#$%^&*()_]{3,40}$");
|
domcox@265
|
46 var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
|
domcox@265
|
47 var mediumRegex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
|
domcox@265
|
48 if (pwd1.value.length==0) {
|
domcox@265
|
49 msg.innerHTML = "<span class=\"msg-ok\">✔ </span><span class=\"msg-warn\">(No Password!)</span>";
|
domcox@265
|
50 } else if (pwd1.value.length > 40) {
|
domcox@265
|
51 msg.innerHTML ="<span class=\"msg-nok\">✖ Too long!</span>";
|
domcox@265
|
52 return false;
|
domcox@265
|
53 } else if (false == enoughRegex.test(pwd1.value)) {
|
domcox@265
|
54 msg.innerHTML ="<span class=\"msg-nok\">✖ Too short!</span>";
|
domcox@265
|
55 return false;
|
domcox@265
|
56 } else if (false == incharRegex.test(pwd1.value)) {
|
domcox@265
|
57 msg.innerHTML ="<span class=\"msg-nok\">✖ Invalid chars!</span>";
|
domcox@265
|
58 return false;
|
domcox@265
|
59 } else if (strongRegex.test(pwd1.value)) {
|
domcox@265
|
60 msg.innerHTML = "<span class=\"msg-ok\">✔ (Strong)</span>";
|
domcox@265
|
61 } else if (mediumRegex.test(pwd1.value)) {
|
domcox@265
|
62 msg.innerHTML = "<span class=\"msg-ok\">✔ </span><span class=\"msg-warn\">(Medium!)</span>";
|
domcox@265
|
63 } else {
|
domcox@265
|
64 msg.innerHTML = "<span class=\"msg-ok\">✔ </span><span class=\"msg-warn\">(Weak!)</span>";
|
domcox@265
|
65 }
|
domcox@265
|
66 } else {
|
domcox@265
|
67 // passwords do not match.
|
domcox@265
|
68 pwd2.classList.add('alert');
|
domcox@265
|
69 msg.innerHTML = "<span class=\"msg-nok\">✖ Do Not Match!</span>"
|
domcox@265
|
70 return false;
|
domcox@265
|
71 }
|
domcox@265
|
72 } |