10 // Login to the developer site |
10 // Login to the developer site |
11 |
11 |
12 var loginUrlContent = null; |
12 var loginUrlContent = null; |
13 var loginUrlHttpReq = null; |
13 var loginUrlHttpReq = null; |
14 var loginCallback = null; |
14 var loginCallback = null; |
|
15 var logincompleted=null; |
|
16 |
15 |
17 |
16 var isHideNotifications = true; |
18 var isHideNotifications = true; |
17 function login(callback){ |
19 function login(callback){ |
|
20 debuglog.debug("Starting login"); |
18 if ( forumUsername == null || forumPassword == null ) { |
21 if ( forumUsername == null || forumPassword == null ) { |
19 loginInitiated = true; |
22 loginInitiated = true; |
20 loginInitiatedCallback = callback; |
23 loginInitiatedCallback = callback; |
21 promptForPassword(); |
24 promptForPassword(); |
22 return; |
25 return; |
23 } |
26 } |
24 loginCallback = callback; |
27 loginCallback = callback; |
25 loginInitiated = false; |
28 loginInitiated = false; |
26 loginInitiatedCallback = null; |
29 loginInitiatedCallback = null; |
|
30 //sflogout(); |
27 uiManager.showNotification(-1, "wait", "Please wait...", -1); |
31 uiManager.showNotification(-1, "wait", "Please wait...", -1); |
28 |
32 |
29 var parameters = symbianOrgLoginUsernameField + "=" + forumUsername |
33 var parameters = symbianOrgLoginUsernameField + "=" + forumUsername |
30 + "&" + symbianOrgLoginPasswordField + "=" + forumPassword |
34 + "&" + symbianOrgLoginPasswordField + "=" + forumPassword |
31 + "&submit=Login&image_submit.x=0&image_submit.y=0&image_submit=submit" |
35 + "&submit=Login&image_submit.x=0&image_submit.y=0&image_submit=submit" |
32 + "&referrer="+symbianOrgBaseUrl; |
36 + "&referrer="+symbianOrgBaseUrl; |
33 loginUrlHttpReq = new Ajax(); |
37 loginUrlHttpReq = new Ajax(); |
34 loginUrlHttpReq.onreadystatechange = loginComplete; |
38 loginUrlHttpReq.onreadystatechange = loginComplete; |
|
39 |
35 |
40 |
36 // initiate the request |
41 // initiate the request |
37 loginUrlHttpReq.open('POST', symbianOrgLoginUrl +"?referer="+symbianOrgBaseUrl, true); |
42 loginUrlHttpReq.open('POST', symbianOrgLoginUrl +"?referer="+symbianOrgBaseUrl, true); |
38 loginUrlHttpReq.setRequestHeader("Referer", symbianOrgBaseUrl); |
43 loginUrlHttpReq.setRequestHeader("Referer", symbianOrgBaseUrl); |
39 loginUrlHttpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); |
44 loginUrlHttpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); |
40 loginUrlHttpReq.setRequestHeader("Content-length", parameters.length); |
45 loginUrlHttpReq.setRequestHeader("Content-length", parameters.length); |
41 loginUrlHttpReq.setRequestHeader("Connection", "close"); |
46 loginUrlHttpReq.setRequestHeader("Connection", "close"); |
42 loginUrlHttpReq.send(parameters); |
47 loginUrlHttpReq.send(parameters); |
43 } |
48 } |
44 |
49 |
|
50 function loginfailed(myerror){ |
|
51 debuglog.debug("login failed with error " + myerror); |
|
52 uiManager.showNotification(2000, "warning", "Login failed "+ myerror); |
|
53 isHideNotifications=false; |
|
54 //promptForPassword(); |
|
55 |
|
56 } |
45 function loginComplete(){ |
57 function loginComplete(){ |
|
58 debuglog.debug("login completed called"); |
46 if ( loginUrlHttpReq == null ) { |
59 if ( loginUrlHttpReq == null ) { |
47 return; |
60 return; |
48 } |
61 } |
49 // complete request? |
62 // complete request? |
50 var readyState = loginUrlHttpReq.readyState; |
63 var readyState = loginUrlHttpReq.readyState; |
52 var responseStatus = null; |
65 var responseStatus = null; |
53 try { |
66 try { |
54 responseStatus = loginUrlHttpReq.status; |
67 responseStatus = loginUrlHttpReq.status; |
55 } catch (noStatusException) {} |
68 } catch (noStatusException) {} |
56 if (readyState == 4) { |
69 if (readyState == 4) { |
57 |
70 debuglog.debug("ready state found"); |
58 if (responseStatus < 300) { |
71 if (responseStatus < 300) { |
59 |
72 |
60 var content = loginUrlHttpReq.responseText; |
73 var content = loginUrlHttpReq.responseText; |
|
74 if (content.indexOf("<title>Symbian developer community - log in</title>")!=-1) { |
|
75 loginfailed("- Bad Credentials"); |
|
76 return; |
|
77 } |
|
78 |
61 if (content.indexOf("LoginWelcome") == -1) { |
79 if (content.indexOf("LoginWelcome") == -1) { |
62 uiManager.showNotification(3000, "warning", "Login failed."); |
80 loginfailed(null); |
63 promptForPassword(); |
81 return; |
64 } |
82 } |
65 else { |
83 else { |
66 if (loginCallback != null) { |
84 if (loginCallback != null) { |
67 loginCallback.call(); |
85 loginCallback.call(); |
68 } |
86 } |
70 var vbCookieGet = new Ajax(); |
88 var vbCookieGet = new Ajax(); |
71 var vburl = symbianOrgBaseUrl + "/forum/"; |
89 var vburl = symbianOrgBaseUrl + "/forum/"; |
72 vbCookieGet.onreadystatechange = forumCookieHarvestComplete; |
90 vbCookieGet.onreadystatechange = forumCookieHarvestComplete; |
73 vbCookieGet.open('GET', vburl, true); |
91 vbCookieGet.open('GET', vburl, true); |
74 vbCookieGet.send(null); |
92 vbCookieGet.send(null); |
75 } |
93 } |
76 } else if (responseStatus < 400) { |
94 } else if (responseStatus < 400) { |
77 // do nothing, this must be a redirect |
95 // do nothing, this must be a redirect |
78 } else { |
96 } else { |
79 uiManager.hideNotification(); |
97 loginfailed("- HTTP error " + responseStatus); |
80 uiManager.showNotification(3000, "warning", "Login failed."); |
|
81 promptForPassword(); |
|
82 } |
98 } |
83 } |
99 } |
84 } |
100 } |
85 |
101 |
86 function forumCookieHarvestComplete () { |
102 function forumCookieHarvestComplete () { |
87 if (isHideNotifications) { |
103 if (isHideNotifications) { |
88 uiManager.hideNotification(); |
104 uiManager.hideNotification(); |
89 } |
105 } |
90 isHideNotifications = true; |
106 isHideNotifications = true; |
|
107 logincompleted=true; |
|
108 debuglog.debug("cookie harvested"); |
91 } |
109 } |
|
110 |