Why do I still use windows, anyway?
This commit is contained in:
@@ -368,15 +368,40 @@ void LLPanelLogin::setSiteIsAlive(bool alive)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LLPanelLogin::clearPassword()
|
||||||
|
{
|
||||||
|
getChild<LLUICtrl>("password_edit")->setValue(mIncomingPassword = mMungedPassword = LLStringUtil::null);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLPanelLogin::hidePassword()
|
||||||
|
{
|
||||||
|
// This is a MD5 hex digest of a password.
|
||||||
|
// We don't actually use the password input field,
|
||||||
|
// fill it with MAX_PASSWORD characters so we get a
|
||||||
|
// nice row of asterixes.
|
||||||
|
getChild<LLUICtrl>("password_edit")->setValue("123456789!123456");
|
||||||
|
}
|
||||||
|
|
||||||
void LLPanelLogin::mungePassword(const std::string& password)
|
void LLPanelLogin::mungePassword(const std::string& password)
|
||||||
{
|
{
|
||||||
// Re-md5 if we've changed at all
|
// Re-md5 if we've changed at all
|
||||||
if (password != mIncomingPassword)
|
if (password != mIncomingPassword)
|
||||||
{
|
{
|
||||||
LLMD5 pass((unsigned char *)password.c_str());
|
// Max "actual" password length is 16 characters.
|
||||||
char munged_password[MD5HEX_STR_SIZE];
|
// Hex digests are always 32 characters.
|
||||||
pass.hex_digest(munged_password);
|
if (password.length() == MD5HEX_STR_BYTES)
|
||||||
mMungedPassword = munged_password;
|
{
|
||||||
|
hidePassword();
|
||||||
|
mMungedPassword = password;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LLMD5 pass((unsigned char *)password.substr(16).c_str());
|
||||||
|
char munged_password[MD5HEX_STR_SIZE];
|
||||||
|
pass.hex_digest(munged_password);
|
||||||
|
mMungedPassword = munged_password;
|
||||||
|
}
|
||||||
|
mIncomingPassword = password;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -552,29 +577,11 @@ void LLPanelLogin::setFields(const std::string& firstname,
|
|||||||
llassert_always(firstname.find(' ') == std::string::npos);
|
llassert_always(firstname.find(' ') == std::string::npos);
|
||||||
login_combo->setLabel(nameJoin(firstname, lastname, false));
|
login_combo->setLabel(nameJoin(firstname, lastname, false));
|
||||||
|
|
||||||
// Max "actual" password length is 16 characters.
|
sInstance->mungePassword(password);
|
||||||
// Hex digests are always 32 characters.
|
if (sInstance->mIncomingPassword != sInstance->mMungedPassword)
|
||||||
if (password.length() == 32)
|
|
||||||
{
|
|
||||||
// This is a MD5 hex digest of a password.
|
|
||||||
// We don't actually use the password input field,
|
|
||||||
// fill it with MAX_PASSWORD characters so we get a
|
|
||||||
// nice row of asterixes.
|
|
||||||
const std::string filler("123456789!123456");
|
|
||||||
sInstance->getChild<LLUICtrl>("password_edit")->setValue(filler);
|
|
||||||
sInstance->mIncomingPassword = filler;
|
|
||||||
sInstance->mMungedPassword = password;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// this is a normal text password
|
|
||||||
sInstance->getChild<LLUICtrl>("password_edit")->setValue(password);
|
sInstance->getChild<LLUICtrl>("password_edit")->setValue(password);
|
||||||
sInstance->mIncomingPassword = password;
|
else
|
||||||
LLMD5 pass((unsigned char *)password.c_str());
|
sInstance->hidePassword();
|
||||||
char munged_password[MD5HEX_STR_SIZE];
|
|
||||||
pass.hex_digest(munged_password);
|
|
||||||
sInstance->mMungedPassword = munged_password;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
@@ -591,33 +598,26 @@ void LLPanelLogin::setFields(const LLSavedLoginEntry& entry, bool takeFocus)
|
|||||||
LLComboBox* login_combo = sInstance->getChild<LLComboBox>("username_combo");
|
LLComboBox* login_combo = sInstance->getChild<LLComboBox>("username_combo");
|
||||||
login_combo->setTextEntry(fullname);
|
login_combo->setTextEntry(fullname);
|
||||||
login_combo->resetTextDirty();
|
login_combo->resetTextDirty();
|
||||||
//sInstance->getChild<LLUICtrl>("username_combo")->setValue(fullname);
|
//login_combo->setValue(fullname);
|
||||||
|
|
||||||
std::string grid = entry.getGrid();
|
const auto& grid = entry.getGrid();
|
||||||
//grid comes via LLSavedLoginEntry, which uses full grid names, not nicks
|
//grid comes via LLSavedLoginEntry, which uses full grid names, not nicks
|
||||||
if(!grid.empty() && gHippoGridManager->getGrid(grid) && grid != gHippoGridManager->getCurrentGridName())
|
if (!grid.empty() && gHippoGridManager->getGrid(grid) && grid != gHippoGridManager->getCurrentGridName())
|
||||||
{
|
{
|
||||||
gHippoGridManager->setCurrentGrid(grid);
|
gHippoGridManager->setCurrentGrid(grid);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entry.getPassword().empty())
|
|
||||||
{
|
|
||||||
sInstance->getChild<LLUICtrl>("password_edit")->setValue(LLStringUtil::null);
|
|
||||||
remember_pass_check->setValue(LLSD(false));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
const std::string filler("123456789!123456");
|
|
||||||
sInstance->getChild<LLUICtrl>("password_edit")->setValue(filler);
|
|
||||||
sInstance->mIncomingPassword = filler;
|
|
||||||
sInstance->mMungedPassword = entry.getPassword();
|
|
||||||
remember_pass_check->setValue(LLSD(true));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (takeFocus)
|
const auto& password = entry.getPassword();
|
||||||
|
bool remember_pass = !password.empty();
|
||||||
|
if (remember_pass)
|
||||||
{
|
{
|
||||||
giveFocus();
|
sInstance->mIncomingPassword = sInstance->mMungedPassword = password;
|
||||||
|
sInstance->hidePassword();
|
||||||
}
|
}
|
||||||
|
else sInstance->clearPassword();
|
||||||
|
remember_pass_check->setValue(remember_pass);
|
||||||
|
|
||||||
|
if (takeFocus) giveFocus();
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
@@ -1066,7 +1066,7 @@ void LLPanelLogin::onLoginComboLostFocus(LLComboBox* combo_box)
|
|||||||
{
|
{
|
||||||
if (combo_box->isTextDirty())
|
if (combo_box->isTextDirty())
|
||||||
{
|
{
|
||||||
getChild<LLUICtrl>("password_edit")->setValue(mIncomingPassword = mMungedPassword = LLStringUtil::null);
|
clearPassword();
|
||||||
combo_box->resetTextDirty();
|
combo_box->resetTextDirty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -95,6 +95,8 @@ public:
|
|||||||
static void refreshLoginPage();
|
static void refreshLoginPage();
|
||||||
static void giveFocus();
|
static void giveFocus();
|
||||||
static void setAlwaysRefresh(bool refresh);
|
static void setAlwaysRefresh(bool refresh);
|
||||||
|
void clearPassword();
|
||||||
|
void hidePassword();
|
||||||
void mungePassword(const std::string& password);
|
void mungePassword(const std::string& password);
|
||||||
|
|
||||||
// inherited from LLViewerMediaObserver
|
// inherited from LLViewerMediaObserver
|
||||||
|
|||||||
Reference in New Issue
Block a user