Author: mimir
Date: 2007-03-20 22:44:22 +0000 (Tue, 20 Mar 2007)
New Revision: 21896

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=21896

Log:
- Enable creating default NetContext when no explicit credentials are
  passed. In such case use what's been provided on swat session logon.
- Create a proper NetContext object only once and add it to the resources
  for later use.


rafal


Modified:
   branches/SAMBA_4_0/services/samba/ejsnet.esp


Changeset:
Modified: branches/SAMBA_4_0/services/samba/ejsnet.esp
===================================================================
--- branches/SAMBA_4_0/services/samba/ejsnet.esp        2007-03-20 22:25:14 UTC 
(rev 21895)
+++ branches/SAMBA_4_0/services/samba/ejsnet.esp        2007-03-20 22:44:22 UTC 
(rev 21896)
@@ -11,53 +11,67 @@
 
 function _NetContext(params, error)
 {
+  var credParams, credentials;
+  var resName;
+
   if (params.length < 1)
   {
-    error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
-                  "too few parameters(usage: [ <credentials ])");
-    return error;
+    /* create default NetContext based on already provided credentials */
+    credentials = session.authinfo.credentials;
+    resName = "netCtx";
   }
-  
-  var creds = params[0];
-  if (creds == undefined)
+  else
   {
-    error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
-                  "credentials parameter is undefined");
-    return error;
-  }
+    /* create user specified credentials object */
+    credParams = params[0];
+    if (typeof(credParams) != "object")
+    {
+      error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
+                    "credentials parameter is expected to be an object");
+      return error;
+    }
   
-  if (creds.domain == undefined ||
-      typeof(creds.domain) != "string")
-  {
-    error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
-                  "a valid string is expected in credentials.domain");
-    return error;
-  }
+    if (typeof(credParams.domain) != "string")
+    {
+      error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
+                    "a valid string is expected in credentials.domain");
+      return error;
+    }
   
-  if (creds.username == undefined ||
-      typeof(creds.username) != "string")
-  {
-    error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
-                  "a valid string is expected in credentials.username");
-    return error;
+    if (typeof(credParams.username) != "string")
+    {
+      error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
+                    "a valid string is expected in credentials.username");
+      return error;
+    }
+  
+    if (typeof(credParams.username) != "string")
+    {
+      error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
+                    "a valid string is expected in credentials.password");
+      return error;
+    }
+  
+    credentials = credentials_init();
+    credentials.set_domain(credParams.domain);
+    credentials.set_username(credParams.username);
+    credentials.set_password(credParams.password);
+
+    resName = "netCtx[" + credParams.domain + "/" + credParams.username + "]";
   }
-  
-  if (creds.password == undefined ||
-      typeof(creds.username) != "string")
+
+  /* was this NetContext created yet ? */
+  var resId = session.resources.find(key, error);
+  if (resId != undefined)
   {
-    error.setError(jsonrpc.Constant.ServerError.ParameterMismatch,
-                  "a valid string is expected in credentials.password");
-    return error;
+    /* yes, return its resource id */
+    return resId;
   }
-  
-  var credentials = credentials_init();
-  credentials.set_domain(creds.domain);
-  credentials.set_username(creds.username);
-  credentials.set_password(creds.password);
-  
+
+  /* no, create the new context and assign it a resource id */
   var netCtx = NetContext(credentials);
-
-  return session.resources.set(netCtx, "netCtx", error);
+  resId = session.resources.set(netCtx, resName, error);
+  return resId;
 }
 jsonrpc.method.NetContext = _NetContext;
 

Reply via email to