windows-nt/Source/XPSP1/NT/shell/cpls/nusrmgr/html/pw_common.js
2020-09-26 16:20:57 +08:00

134 lines
4.3 KiB
JavaScript

function GetText(oTextInput)
{
var szValue = oTextInput.value;
return szValue ? szValue : '';
}
function PWInit(bSelf)
{
var oUser = top.window.g_oSelectedUser;
var szName = top.window.GetUserDisplayName(oUser);
idPageTitle.innerHTML = idPageTitle.innerHTML.replace(/%1/g, szName);
top.window.PopulateLeftPane(null, idLearnAboutContent.innerHTML);
idHintDefn.ttText = bSelf ? top.window.L_SelfHint_ToolTip : top.window.L_NonSelfHint_ToolTip;
if (!bSelf)
{
var strReset = (top.window.g_bOsPersonal ? L_Personal_Message : L_Pro_Message) + (oUser.isPasswordResetAvailable ? L_Backup_Message : L_NoBackup_Message);
idResetWarning.innerHTML = strReset.replace(/%1/g, szName);
}
idNewPassword1Input.focus();
}
function ApplyPasswordChange()
{
var szNewPassword1 = GetText(idNewPassword1Input);
var szNewPassword2 = GetText(idNewPassword2Input);
if (szNewPassword1 == szNewPassword2)
{
var oUser = top.window.g_oSelectedUser;
var bSelf = top.window.IsSelf();
var bOldPW = oUser.passwordRequired;
var nErr = 0;
try
{
oUser.changePassword(szNewPassword1, (bSelf && bOldPW) ? GetText(idOldPasswordInput) : "");
oUser.setting("Hint") = GetText(idHintInput);
}
catch (e)
{
nErr = (e.number & 0xffff);
//alert("Change password error = " + nErr); // for debugging only
}
if (0 == nErr)
{
// If the current user is an admin and just created a password for
// herself, ask if she wants to make her profile folder private.
//
// However, if she just made a folder private, which caused us
// to be launched with initialTask=ChangePassword, then we don't
// want to do this prompt.
if (top.window.g_szInitialTask != "ChangePassword" &&
bSelf && !bOldPW &&
top.window.g_bRunningAsOwner)
{
var bPrivate = false;
var bCanMakePrivate = true;
try
{
bPrivate = oUser.isProfilePrivate;
}
catch (e)
{
bCanMakePrivate = false;
}
if (bCanMakePrivate && !bPrivate)
{
top.window.g_Navigator.navigate("passwordpage2.htm");
return;
}
}
top.window.g_Navigator.navigate("mainpage.htm", true);
}
else
{
idNewPassword1Input.value = '';
idNewPassword2Input.value = '';
idHintInput.value = '';
idNewPassword1Input.focus();
var strMsg = top.window.L_ChangePassword_ErrorMessage;
switch (nErr)
{
case 86: // ERROR_INVALID_PASSWORD
case 1323: // ERROR_WRONG_PASSWORD
if (bSelf && bOldPW)
{
idOldPasswordInput.value = '';
idOldPasswordInput.focus();
strMsg = top.window.L_InvalidPassword_Message;
}
break;
// I've only seen NERR_PasswordTooShort and ERROR_ACCOUNT_RESTRICTION
// in testing, and it's possible to get either of them for the
// same password, depending on current policy settings.
// That is, it's hard to distinguish them, so don't bother.
// We may want to give separate messages for some of the others,
// but I've never hit them.
case 1324: // ERROR_ILL_FORMED_PASSWORD
case 1325: // ERROR_PASSWORD_RESTRICTION
case 1327: // ERROR_ACCOUNT_RESTRICTION
case 2243: // NERR_PasswordCantChange
case 2244: // NERR_PasswordHistConflict
case 2245: // NERR_PasswordTooShort
case 2246: // NERR_PasswordTooRecent
strMsg = top.window.L_PasswordTooShort_Message;
break;
}
alert(strMsg);
}
}
else
{
idNewPassword1Input.value = '';
idNewPassword2Input.value = '';
idNewPassword1Input.focus();
alert(top.window.L_PasswordMismatch_Message);
}
}