tazpanel annotate lib/user.js @ rev 337

settings.cgi: set date manualy
author Pascal Bellard <pascal.bellard@slitaz.org>
date Wed Jan 02 13:35:40 2013 +0100 (2013-01-02)
parents 6f39fe45dc31
children 972b3169b3e4
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 ////
al@293 7 // i18n for this javascript
al@293 8
al@293 9 function i18n(text){
al@293 10 var lang = document.getElementsByTagName("html")[0].getAttribute("lang");
al@293 11 var orig = ["Too short!", "Too long!", "Invalid chars!", "(No Password!)", "(Strong)", "(Medium!)", "(Weak!)", "Do Not Match!"];
al@293 12 var translate = ["es", "fr", "pt", "ru"];
al@293 13 translate['ru'] = ["Слишком короткий!", "Слишком длинный!", "Недопустимые символы!", "(Нет пароля!)", "(Сильный)", "(Средний!)", "(Слабый!)", "Не совпадает!"];
al@293 14 translate['fr'] = [ ];
al@293 15
al@293 16 var output = text;
al@293 17 for (var i=0; i<orig.length; i++) {
al@293 18 if (translate[lang] !== undefined && orig[i] == text) {
al@293 19 var transTry = translate[lang][i];
al@293 20 if (transTry !== undefined && transTry !== '') {
al@293 21 var output = transTry;
al@293 22 }
al@293 23 break
al@293 24 }
al@293 25 }
al@293 26 return(output);
al@293 27 }
al@293 28
al@293 29 ////
domcox@265 30 // Login validation - typical use:
domcox@265 31 // <input id="login1" onkeyup="checkLogin('login1','msg1'); return false;" />
domcox@265 32 // <span id="msg1"></span>
domcox@265 33
domcox@265 34 function checkLogin(user,message){
domcox@265 35 var login = document.getElementById(user);
al@293 36 var msg = document.getElementById(message);
domcox@265 37 var enoughRegex = new RegExp("(?=.{3,}).*", "g");
domcox@265 38 var incharRegex = new RegExp("^[A-Za-z0-9_-]{3,32}$");
al@293 39 // html fragments
al@293 40 var nok='<span class="msg-nok">&#x2716; ';
al@293 41 var s='</span>';
al@293 42
al@293 43 if (login.value == '') {
al@293 44 msg.innerHTML = '';
al@293 45 } else if (false == enoughRegex.test(login.value)) {
al@293 46 msg.innerHTML = nok + i18n('Too short!') + s;
domcox@265 47 return false;
al@293 48 } else if (login.value.length > 32) {
al@293 49 msg.innerHTML = nok + i18n('Too long!') + s;
domcox@265 50 return false;
domcox@265 51 } else if (false == incharRegex.test(login.value)) {
al@293 52 msg.innerHTML = nok + i18n('Invalid chars!') + s;
al@293 53 return false;
domcox@265 54 } else {
al@293 55 msg.innerHTML = '<span class="msg-ok">&#x2714;'+s;
domcox@265 56 }
domcox@265 57 }
domcox@265 58
domcox@265 59 ////
domcox@265 60 // Password validation - typical use:
al@293 61 // <input type="password" id="pass1" onkeyup="checkPwd('pass1','pass2','msg2'); return false;" />
al@293 62 // <input type="password" id="pass2" onkeyup="checkPwd('pass1','pass2','msg2'); return false;" />
domcox@265 63 // <span id="msg2"></span>
domcox@265 64
domcox@265 65 function checkPwd(password,confirm,message){
domcox@265 66 var pwd1 = document.getElementById(password);
domcox@265 67 var pwd2 = document.getElementById(confirm);
al@293 68 var msg = document.getElementById(message);
al@293 69 // html fragments
al@293 70 var nok = '<span class="msg-nok">&#x2716; ';
al@293 71 var okw = '<span class="msg-ok">&#x2714; </span><span class="msg-warn">';
al@293 72 var s = '</span>';
al@293 73
domcox@265 74 if(pwd1.value == pwd2.value){
al@293 75 // passwords match.
domcox@265 76 pwd2.classList.remove('alert');
domcox@265 77 // various checks
domcox@265 78 var enoughRegex = new RegExp("(?=.{3,}).*", "g");
domcox@265 79 var incharRegex = new RegExp("^[A-Za-z0-9!@#$%^&*()_]{3,40}$");
domcox@265 80 var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
domcox@265 81 var mediumRegex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
domcox@265 82 if (pwd1.value.length==0) {
al@293 83 msg.innerHTML = okw + i18n('(No Password!)') + s;
domcox@265 84 } else if (pwd1.value.length > 40) {
al@293 85 msg.innerHTML = nok + i18n('Too long!') + s;
domcox@265 86 return false;
domcox@265 87 } else if (false == enoughRegex.test(pwd1.value)) {
al@293 88 msg.innerHTML = nok + i18n('Too short!') + s;
domcox@265 89 return false;
domcox@265 90 } else if (false == incharRegex.test(pwd1.value)) {
al@293 91 msg.innerHTML = nok + i18n('Invalid chars!') + s;
domcox@265 92 return false;
domcox@265 93 } else if (strongRegex.test(pwd1.value)) {
al@293 94 msg.innerHTML = '<span class="msg-ok">&#x2714; ' + i18n('(Strong)') + s;
domcox@265 95 } else if (mediumRegex.test(pwd1.value)) {
al@293 96 msg.innerHTML = okw + i18n('(Medium!)') + s;
domcox@265 97 } else {
al@293 98 msg.innerHTML = okw + i18n('(Weak!)') + s;
domcox@265 99 }
domcox@265 100 } else {
domcox@265 101 // passwords do not match.
domcox@265 102 pwd2.classList.add('alert');
al@293 103 msg.innerHTML = nok + i18n('Do Not Match!') + s;
domcox@265 104 return false;
domcox@265 105 }
al@293 106 }