Implemented password changing.
git-svn-id: https://www.unprompted.com/svn/projects/tildefriends/trunk@4472 ed5197a5-7fde-0310-b194-c3ffbd925b24
This commit is contained in:
parent
74a3efe78d
commit
4c6b44eb30
@ -89,9 +89,12 @@
|
|||||||
|
|
||||||
<input type="radio" name="tab" id="guest" value="Guest" ?checked=${this.tab == 'guest'} @change=${() => self.tab_changed('guest')}></input>
|
<input type="radio" name="tab" id="guest" value="Guest" ?checked=${this.tab == 'guest'} @change=${() => self.tab_changed('guest')}></input>
|
||||||
<label for="guest" id="guest_label">Guest</label>
|
<label for="guest" id="guest_label">Guest</label>
|
||||||
|
|
||||||
|
<input type="radio" name="tab" id="change" value="Change Password" ?checked=${this.tab == 'change'} @change=${() => self.tab_changed('change')}></input>
|
||||||
|
<label for="change" id="change_label">Change Password</label>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div ?hidden=${this.tab != 'login' && this.tab != 'register'}>
|
<div ?hidden=${this.tab != 'login' && this.tab != 'register' && this.tab != 'change'}>
|
||||||
<div id="error" ?hidden=${this.error === undefined} class="error">
|
<div id="error" ?hidden=${this.error === undefined} class="error">
|
||||||
${this.error}
|
${this.error}
|
||||||
</div>
|
</div>
|
||||||
@ -99,14 +102,18 @@
|
|||||||
<label for="name">Name:</label>
|
<label for="name">Name:</label>
|
||||||
<input type="text" id="name" name="name"></input>
|
<input type="text" id="name" name="name"></input>
|
||||||
|
|
||||||
<label for="password">Password:</label>
|
<label for="password">${this.tab == 'change' ? 'Old ' : ''}Password:</label>
|
||||||
<input type="password" id="password" name="password"></input>
|
<input type="password" id="password" name="password"></input>
|
||||||
|
|
||||||
<label ?hidden=${this.tab != 'register'} for="confirm">Confirm Password:</label>
|
<label ?hidden=${this.tab != 'change'} for="new_password">New Password:</label>
|
||||||
<input ?hidden=${this.tab != 'register'} type="password" id="confirm" name="confirm"></input>
|
<input ?hidden=${this.tab != 'change'} type="new_password" id="new_password" name="new_password"></input>
|
||||||
|
|
||||||
|
<label ?hidden=${this.tab != 'register' && this.tab != 'change'} for="confirm">Confirm ${this.tab == 'change' ? 'New ' : ''}Password:</label>
|
||||||
|
<input ?hidden=${this.tab != 'register' && this.tab != 'change'} type="password" id="confirm" name="confirm"></input>
|
||||||
|
|
||||||
<input id="loginButton" type="submit" name="submit" value="Login"></input>
|
<input id="loginButton" type="submit" name="submit" value="Login"></input>
|
||||||
<input type="hidden" name="register" value="${this.tab == 'register' ? 1 : 0}"></input>
|
<input type="hidden" name="register" value="${this.tab == 'register' ? 1 : 0}"></input>
|
||||||
|
<input type="hidden" name="change" value="${this.tab == 'change' ? 1 : 0}"></input>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div ?hidden=${this.tab != 'guest'}>
|
<div ?hidden=${this.tab != 'guest'}>
|
||||||
|
19
core/auth.js
19
core/auth.js
@ -141,7 +141,7 @@ function handler(request, response) {
|
|||||||
if (formData.submit == "Login") {
|
if (formData.submit == "Login") {
|
||||||
let account = gDatabase.get("user:" + formData.name);
|
let account = gDatabase.get("user:" + formData.name);
|
||||||
account = account ? JSON.parse(account) : account;
|
account = account ? JSON.parse(account) : account;
|
||||||
if (formData.register == "1") {
|
if (formData.register == '1') {
|
||||||
if (!account &&
|
if (!account &&
|
||||||
isNameValid(formData.name) &&
|
isNameValid(formData.name) &&
|
||||||
formData.password == formData.confirm) {
|
formData.password == formData.confirm) {
|
||||||
@ -160,12 +160,23 @@ function handler(request, response) {
|
|||||||
}
|
}
|
||||||
session = makeJwt({name: formData.name});
|
session = makeJwt({name: formData.name});
|
||||||
account = {password: hashPassword(formData.password)};
|
account = {password: hashPassword(formData.password)};
|
||||||
gDatabase.set("user:" + formData.name, JSON.stringify(account));
|
gDatabase.set('user:' + formData.name, JSON.stringify(account));
|
||||||
if (noAdministrator()) {
|
if (noAdministrator()) {
|
||||||
makeAdministrator(formData.name);
|
makeAdministrator(formData.name);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
loginError = "Error registering account.";
|
loginError = 'Error registering account.';
|
||||||
|
}
|
||||||
|
} else if (formData.change == '1') {
|
||||||
|
if (account &&
|
||||||
|
isNameValid(formData.name) &&
|
||||||
|
formData.new_password == formData.confirm &&
|
||||||
|
verifyPassword(formData.password, account.password)) {
|
||||||
|
session = makeJwt({name: formData.name});
|
||||||
|
account = {password: hashPassword(formData.new_password)};
|
||||||
|
gDatabase.set('user:' + formData.name, JSON.stringify(account));
|
||||||
|
} else {
|
||||||
|
loginError = 'Error changing password.';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (account &&
|
if (account &&
|
||||||
@ -176,7 +187,7 @@ function handler(request, response) {
|
|||||||
makeAdministrator(formData.name);
|
makeAdministrator(formData.name);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
loginError = "Invalid username or password.";
|
loginError = 'Invalid username or password.';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -101,6 +101,25 @@ try:
|
|||||||
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'loginButton').click()
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'loginButton').click()
|
||||||
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'error')
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'error')
|
||||||
|
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'change_label').click()
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'name').send_keys('test_user')
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'password').send_keys('test_password')
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'new_password').send_keys('new_password')
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'confirm').send_keys('new_password')
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'loginButton').click()
|
||||||
|
wait.until(expected_conditions.presence_of_element_located((By.ID, 'document')))
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-navigation').shadow_root.find_element(By.LINK_TEXT, 'logout test_user').click()
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'login_label').click()
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'name').send_keys('test_user')
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'password').send_keys('test_password')
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'loginButton').click()
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'error')
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'login_label').click()
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'name').send_keys('test_user')
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'password').send_keys('new_password')
|
||||||
|
driver.find_element(By.TAG_NAME, 'tf-auth').shadow_root.find_element(By.ID, 'loginButton').click()
|
||||||
|
wait.until(expected_conditions.presence_of_element_located((By.ID, 'document')))
|
||||||
|
|
||||||
print('SUCCESS.')
|
print('SUCCESS.')
|
||||||
finally:
|
finally:
|
||||||
driver.close()
|
driver.close()
|
||||||
|
Loading…
Reference in New Issue
Block a user