]> err.no Git - sope/commitdiff
improved SoUser lookup
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Thu, 21 Jul 2005 11:35:20 +0000 (11:35 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Thu, 21 Jul 2005 11:35:20 +0000 (11:35 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@930 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-appserver/NGObjWeb/ChangeLog
sope-appserver/NGObjWeb/SoObjects/WOContext+SoObjects.m
sope-appserver/NGObjWeb/Version

index f88af4762e31921b65407b26a733e4ea8333639d..df79cdfec6f37f515c204f01c7497e895d9733ee 100644 (file)
@@ -1,3 +1,9 @@
+2005-07-21  Helge Hess  <helge.hess@opengroupware.org>
+       
+       * SoObjects/WOContext+SoObjects.m: lookup SoUser using authenticator in
+         case a clientObject is available and it wasn't set yet (when
+         retrieving the user using -activeUser) (v4.5.178)
+
 2005-07-20  Marcus Mueller  <znek@mulle-kybernetik.com>
 
        * v4.5.177
index 6bf2c5ad9428dbeceb6dd504fffaa9c55be63bcd..585d6b63e17f01eae207b17ecc3be23a9f9b7c66 100644 (file)
 
 #include "WOContext+SoObjects.h"
 #include "SoObjectRequestHandler.h"
+#include "SoObject.h"
+#include "SoUser.h"
 #include "SoSubContext.h"
 #include "SoSecurityManager.h"
+#include "SoHTTPAuthenticator.h"
 #include <NGObjWeb/WOComponent.h>
 #include "common.h"
 
@@ -81,7 +84,25 @@ static BOOL debugOn = NO;
   ASSIGN(self->activeUser, _user);
 }
 - (id)activeUser {
-  return self->activeUser;
+  if (self->activeUser == nil) {
+    /* can only do that if a clientObject is already set */
+    id client, auth;
+    
+    if ((client = [self clientObject]) != nil) {
+      auth = [[self clientObject] authenticatorInContext:self];
+      self->activeUser = [[auth userInContext:self] retain];
+    
+      if (self->activeUser == nil) {
+       if (auth == nil) {
+         [self warnWithFormat:@"Got no authenticator from clientObject: %@",
+                 [self clientObject]];
+       }
+       else
+         [self warnWithFormat:@"Got no user from authenticator: %@", auth];
+      }
+    }
+  }
+  return [self->activeUser isNotNull] ? self->activeUser : nil;
 }
 
 - (void)setObjectDispatcher:(id)_dispatcher {
index aa8115f9708a02d11f40cc5c7a145a776ba458b8..f162a058785fb5ca41d53f0b99d31bc64edf3ebe 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=177
+SUBMINOR_VERSION:=178
 
 # v4.5.122 requires libNGExtensions v4.5.153
 # v4.5.91  requires libNGExtensions v4.5.134