See ChangeLog
Monotone-Parent: 5016da15e7302739b395754fe5a9d170409343ae Monotone-Revision: f6a0b62965278336b461dac36045bfae5fc07f0a Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2010-08-12T17:56:18maint-2.0.2
parent
a6df60d4d8
commit
89d3d4b413
18
ChangeLog
18
ChangeLog
|
@ -1,3 +1,21 @@
|
|||
2010-08-12 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
* UI/WebServerResources/generic.js: (onAjaxRequestStateChange):
|
||||
when using CAS authentication and when the return code is 0 and
|
||||
when the request status is 4, chances are that the initial ajax
|
||||
request failed due to the expiration of the CAS ticket entry in
|
||||
memcached. In FF 3.5 and above, a bug prevents the initial cookie
|
||||
from being given back to the reauthentication redirect from an
|
||||
AJAX request. Therefore we open a window that will do this for us
|
||||
and will close one the authentication has succeeded again.
|
||||
|
||||
* UI/MainUI/SOGoRootPage.m (-revoverAction): new fake action that
|
||||
perform the CAS redirection and then trigger the respawn of the
|
||||
initial request.
|
||||
|
||||
* UI/Common/UIxPageFrame.m (-usesCASAuthentication): new accessor
|
||||
used for recovery of redirected requests.
|
||||
|
||||
2010-08-11 Francis Lachapelle <flachapelle@inverse.ca>
|
||||
|
||||
* UI/WebServerResources/MailerUI.js (refreshMessage): if the
|
||||
|
|
1
NEWS
1
NEWS
|
@ -4,6 +4,7 @@
|
|||
- added Polish translation
|
||||
- added crypt support to SQL sources
|
||||
- updated Ukrainian translation
|
||||
- added the caldav-auto-schedule capability
|
||||
|
||||
1.3-20100721 (1.3.0)
|
||||
--------------------
|
||||
|
|
|
@ -400,6 +400,15 @@
|
|||
&& [user isSuperUser]);
|
||||
}
|
||||
|
||||
- (BOOL) usesCASAuthentication
|
||||
{
|
||||
SOGoSystemDefaults *sd;
|
||||
|
||||
sd = [SOGoSystemDefaults sharedSystemDefaults];
|
||||
|
||||
return [[sd authenticationType] isEqualToString: @"cas"];
|
||||
}
|
||||
|
||||
- (NSString *) userIdentification
|
||||
{
|
||||
/* The "identification" term is used in the human sense here. */
|
||||
|
|
|
@ -435,4 +435,9 @@
|
|||
return response;
|
||||
}
|
||||
|
||||
- (id) recoverAction
|
||||
{
|
||||
return [self jsCloseWithRefreshMethod: @"recoverRequest();"];
|
||||
}
|
||||
|
||||
@end /* SOGoRootPage */
|
||||
|
|
|
@ -106,10 +106,15 @@
|
|||
};
|
||||
};
|
||||
methods = {
|
||||
view = {
|
||||
view = {
|
||||
protectedBy = "<public>";
|
||||
pageName = "SOGoRootPage";
|
||||
};
|
||||
recover = {
|
||||
protectedBy = "View";
|
||||
pageName = "SOGoRootPage";
|
||||
actionName = "recover";
|
||||
};
|
||||
index = {
|
||||
protectedBy = "<public>";
|
||||
pageName = "SOGoRootPage";
|
||||
|
|
|
@ -122,6 +122,12 @@
|
|||
<var:if condition="isSuperUser" const:negate="YES"
|
||||
>var IsSuperUser = false;
|
||||
</var:if>
|
||||
<var:if condition="usesCASAuthentication"
|
||||
>var usesCASAuthentication = true;
|
||||
</var:if>
|
||||
<var:if condition="usesCASAuthentication" const:negate="YES"
|
||||
>var usesCASAuthentication = false;
|
||||
</var:if>
|
||||
<var:if condition="shortUserNameForDisplay" const:value="anonymous"
|
||||
const:negate="YES"
|
||||
>var UserFolderURL = '<var:string value="userFolderPath" const:escapeHTML="NO"/>';
|
||||
|
|
|
@ -27,6 +27,7 @@ var logConsole;
|
|||
var logWindow = null;
|
||||
|
||||
var queryParameters;
|
||||
var recoveryRequest = null;
|
||||
|
||||
var menus = new Array();
|
||||
var search = {};
|
||||
|
@ -246,15 +247,26 @@ function createHTTPClient() {
|
|||
|
||||
function onAjaxRequestStateChange(http) {
|
||||
try {
|
||||
if (http.readyState == 4
|
||||
&& activeAjaxRequests > 0) {
|
||||
if (!http.aborted)
|
||||
http.callback(http);
|
||||
activeAjaxRequests--;
|
||||
checkAjaxRequestsState();
|
||||
http.onreadystatechange = Prototype.emptyFunction;
|
||||
http.callback = Prototype.emptyFunction;
|
||||
http.callbackData = null;
|
||||
if (http.readyState == 4) {
|
||||
if (http.status == 0 && usesCASAuthentication) {
|
||||
activeAjaxRequests--;
|
||||
checkAjaxRequestsState();
|
||||
recoveryRequest = http;
|
||||
var urlstr = ApplicationBaseURL;
|
||||
if (!urlstr.endsWith('/'))
|
||||
urlstr += '/';
|
||||
urlstr += ("../../recover");
|
||||
window.open(urlstr, "_blank");
|
||||
}
|
||||
else if (activeAjaxRequests > 0) {
|
||||
if (!http.aborted)
|
||||
http.callback(http);
|
||||
activeAjaxRequests--;
|
||||
checkAjaxRequestsState();
|
||||
http.onreadystatechange = Prototype.emptyFunction;
|
||||
http.callback = Prototype.emptyFunction;
|
||||
http.callbackData = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(e) {
|
||||
|
@ -276,6 +288,16 @@ function onAjaxRequestStateChange(http) {
|
|||
}
|
||||
}
|
||||
|
||||
function recoverRequest() {
|
||||
if (recoveryRequest) {
|
||||
triggerAjaxRequest(recoveryRequest.url,
|
||||
recoveryRequest.callback,
|
||||
recoveryRequest.callbackData,
|
||||
recoveryRequest.paramHeaders);
|
||||
recoveryRequest = null;
|
||||
}
|
||||
}
|
||||
|
||||
/* taken from Lightning */
|
||||
function getContrastingTextColor(bgColor) {
|
||||
var calcColor = bgColor.substring(1);
|
||||
|
@ -299,9 +321,10 @@ function triggerAjaxRequest(url, callback, userdata, content, headers) {
|
|||
|
||||
http.open("POST", url, true);
|
||||
http.url = url;
|
||||
http.paramHeaders = headers;
|
||||
http.callback = callback;
|
||||
http.callbackData = userdata;
|
||||
http.onreadystatechange = function() { onAjaxRequestStateChange(http);};
|
||||
http.onreadystatechange = function() { onAjaxRequestStateChange(http); };
|
||||
// = function() {
|
||||
// // log ("state changed (" + http.readyState + "): " + url);
|
||||
// };
|
||||
|
|
Loading…
Reference in New Issue