134 lines
4.3 KiB
JavaScript
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);
|
|
}
|
|
}
|