Sync with trunk r58740.
[reactos.git] / dll / win32 / samsrv / samrpc.c
index f239a09..ffeee33 100644 (file)
@@ -2096,6 +2096,7 @@ SamrCreateUserInDomain(IN SAMPR_HANDLE DomainHandle,
     SAM_USER_FIXED_DATA FixedUserData;
     PSAM_DB_OBJECT DomainObject;
     PSAM_DB_OBJECT UserObject;
+    UCHAR LogonHours[23];
     ULONG ulSize;
     ULONG ulRid;
     WCHAR szRid[9];
@@ -2349,7 +2350,21 @@ SamrCreateUserInDomain(IN SAMPR_HANDLE DomainHandle,
         return Status;
     }
 
-    /* FIXME: Set LogonHours attribute*/
+    /* Set LogonHours attribute*/
+    *((PUSHORT)LogonHours) = 168;
+    memset(&(LogonHours[2]), 0xff, 21);
+
+    Status = SampSetObjectAttribute(UserObject,
+                                    L"LogonHours",
+                                    REG_BINARY,
+                                    &LogonHours,
+                                    sizeof(LogonHours));
+    if (!NT_SUCCESS(Status))
+    {
+        TRACE("failed with status 0x%08lx\n", Status);
+        return Status;
+    }
+
     /* FIXME: Set Groups attribute*/
 
     /* Set LMPwd attribute*/
@@ -7098,6 +7113,16 @@ SampSetUserAll(PSAM_DB_OBJECT UserObject,
                                         REG_SZ,
                                         Buffer->All.Parameters.Buffer,
                                         Buffer->All.Parameters.MaximumLength);
+        if (!NT_SUCCESS(Status))
+            goto done;
+    }
+
+    if (WhichFields & USER_ALL_LOGONHOURS)
+    {
+        Status = SampSetLogonHoursAttrbute(UserObject,
+                                           &Buffer->All.LogonHours);
+        if (!NT_SUCCESS(Status))
+            goto done;
     }
 
     if (WhichFields & (USER_ALL_PRIMARYGROUPID |
@@ -7144,7 +7169,6 @@ SampSetUserAll(PSAM_DB_OBJECT UserObject,
 
 /*
 FIXME:
-    USER_ALL_LOGONHOURS
     USER_ALL_NTPASSWORDPRESENT
     USER_ALL_LMPASSWORDPRESENT
     USER_ALL_PASSWORDEXPIRED
@@ -7232,12 +7256,12 @@ SamrSetInformationUser(IN SAMPR_HANDLE UserHandle,
             Status = SampSetUserPreferences(UserObject,
                                             Buffer);
             break;
-/*
+
         case UserLogonHoursInformation:
-            Status = SampSetUserLogonHours(UserObject,
-                                           Buffer);
+            Status = SampSetLogonHoursAttrbute(UserObject,
+                                               &Buffer->LogonHours.LogonHours);
             break;
-*/
+
         case UserNameInformation:
             Status = SampSetObjectAttribute(UserObject,
                                             L"Name",