X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fdll%2Fwin32%2Fmsv1_0%2Fmsv1_0.c;h=ec63a04368d2f9db4639a701ccdd4cf2cea4fbfc;hp=5581d78a2e8bb22c2ca30bbdd1510810c1f7c3fd;hb=dae5c99d1293426c6468d67c4695f8c5dac637dc;hpb=27558e0b69a2ab5e632f30d61d6606357c15a788 diff --git a/reactos/dll/win32/msv1_0/msv1_0.c b/reactos/dll/win32/msv1_0/msv1_0.c index 5581d78a2e8..ec63a04368d 100644 --- a/reactos/dll/win32/msv1_0/msv1_0.c +++ b/reactos/dll/win32/msv1_0/msv1_0.c @@ -1083,7 +1083,33 @@ LsaApLogonUser(IN PLSA_CLIENT_REQUEST ClientRequest, TRACE("UserName: %S\n", UserInfo->All.UserName.Buffer); - /* FIXME: Check restrictions */ + /* Check account restrictions for non-administrator accounts */ + if (RelativeIds.Element[0] != DOMAIN_USER_RID_ADMIN) + { + /* Check if the account has been disabled */ + if (UserInfo->All.UserAccountControl & USER_ACCOUNT_DISABLED) + { + ERR("Account disabled!\n"); + *SubStatus = STATUS_ACCOUNT_DISABLED; + Status = STATUS_ACCOUNT_RESTRICTION; + goto done; + } + + /* Check if the account has been locked */ + if (UserInfo->All.UserAccountControl & USER_ACCOUNT_AUTO_LOCKED) + { + ERR("Account disabled!\n"); + *SubStatus = STATUS_ACCOUNT_LOCKED_OUT; + Status = STATUS_ACCOUNT_RESTRICTION; + goto done; + } + + /* FIXME: more checks */ +// *SubStatus = STATUS_PASSWORD_EXPIRED; +// *SubStatus = STATUS_INVALID_LOGON_HOURS; +// *SubStatus = STATUS_INVALID_WORKSTATION; + + } /* Check the password */ if ((UserInfo->All.UserAccountControl & USER_PASSWORD_NOT_REQUIRED) == 0)