From ed42d1e26b047e9d074a46a1a60c13a65e2d39de Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Mon, 25 May 2015 09:19:04 -0400 Subject: [PATCH] (fix) more multi-domain fixes and cleanups --- SoObjects/SOGo/SOGoUser.m | 8 ++++---- SoObjects/SOGo/SOGoUserManager.m | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/SoObjects/SOGo/SOGoUser.m b/SoObjects/SOGo/SOGoUser.m index c1b0f7603..12d028fd3 100644 --- a/SoObjects/SOGo/SOGoUser.m +++ b/SoObjects/SOGo/SOGoUser.m @@ -165,9 +165,7 @@ // The domain is probably appended to the username; // make sure it is defined as a domain in the configuration. domain = [newLogin substringFromIndex: (r.location + r.length)]; - if ([[sd domainIds] containsObject: domain]) - newLogin = [newLogin substringToIndex: r.location]; - else + if (![[sd domainIds] containsObject: domain]) domain = nil; if (domain != nil && ![sd enableDomainBasedUID]) @@ -199,7 +197,9 @@ // [SOGoUser loginInDomain] only returns the login. r = [realUID rangeOfString: domain options: NSBackwardsSearch|NSCaseInsensitiveSearch]; - if (r.location != NSNotFound) + // Do NOT strip @domain.com if SOGoEnableDomainBasedUID is enabled since + // the real login most likely is the email address. + if (r.location != NSNotFound && ![sd enableDomainBasedUID]) uid = [realUID substringToIndex: r.location-1]; else uid = [NSString stringWithString: realUID]; diff --git a/SoObjects/SOGo/SOGoUserManager.m b/SoObjects/SOGo/SOGoUserManager.m index cfc159c3c..6ee3b4d76 100644 --- a/SoObjects/SOGo/SOGoUserManager.m +++ b/SoObjects/SOGo/SOGoUserManager.m @@ -912,7 +912,7 @@ static Class NSNullK; { // Remove the "@" prefix used to identified groups in the ACL tables. aUID = [uid hasPrefix: @"@"] ? [uid substringFromIndex: 1] : uid; - if (domain) + if (domain && [aUID rangeOfString: @"@"].location == NSNotFound) cacheUid = [NSString stringWithFormat: @"%@@%@", aUID, domain]; else cacheUid = aUID;