419d1f0e7288ccb17790a14c14b45cff0ad90fab
[platal.git] / htdocs / javascript / do_challenge_response.js
1 /***************************************************************************
2 * Copyright (C) 2003-2006 Polytechnique.org *
3 * http://opensource.polytechnique.org/ *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the Free Software *
17 * Foundation, Inc., *
18 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *
19 ***************************************************************************/
20
21 document.write('<script language="javascript" src="javascript/secure_hash.js"></script>');
22
23 function correctUserName() {
24 var u = document.forms.login.username;
25 // login with no space
26 if (u.value.indexOf(' ') < 0) return true;
27 var mots = u.value.split(' ');
28 // jean paul.du pont -> jean-paul.du-pont
29 if (u.value.indexOf('.') > 0) { u.value = mots.join('-'); return true; }
30 // jean dupont -> jean.dupont
31 if (mots.length == 2) { u.value = mots[0]+"."+mots[1]; return true; }
32 // jean dupont 2001 -> jean.dupont.2001
33 if (mots.length == 3 && mots[2] > 1920 && mots[2] < 3000) { u.value = mots.join('.'); return true; }
34 // jean de la vallee -> jean.de-la-vallee
35 if (mots[1].toUpperCase() == 'DE') { u.value = mots[0]+"."+mots.join('-').substr(mots[0].length+1); return true; }
36 // jean paul dupont -> jean-paul.dupont
37 if (mots.length == 3 && mots[0].toUpperCase() == 'JEAN') { u.value = mots[0]+"-"+mots[1]+"."+mots[2]; return true; }
38
39 alert('Ton email ne doit pas contenir de blanc.\nLe format standard est\n\nprenom.nom.promotion\n\nSi ton nom ou ton prenom est composé,\nsépare les mots par des -');
40
41 return false;
42 }
43
44 function doChallengeResponse() {
45
46 if (!correctUserName()) return false;
47
48 var new_pass = hash_encrypt(document.forms.login.password.value);
49 var old_pass = MD5(document.forms.login.password.value);
50
51 str = document.forms.login.username.value + ":" +
52 new_pass + ":" +
53 document.forms.loginsub.challenge.value;
54
55 document.forms.loginsub.response.value = hash_encrypt(str);
56 document.forms.loginsub.xorpass.value = hash_xor(new_pass, old_pass);
57 document.forms.loginsub.username.value = document.forms.login.username.value;
58 document.forms.loginsub.remember.value = document.forms.login.remember.checked;
59 document.forms.loginsub.domain.value = document.forms.login.domain.value;
60 document.forms.login.password.value = "";
61 document.forms.loginsub.submit();
62
63 }