Prettied up UI for password resets. Now to move on to email component.

This commit is contained in:
rainbow napkin 2024-12-28 09:17:28 -05:00
parent ed698f40c7
commit 3671b43789
5 changed files with 51 additions and 18 deletions

View file

@ -380,6 +380,10 @@ select.panel-head-element{
color: var(--danger0);
}
.popup-div a{
color: var(--accent1);
}
/* tooltip */
div.tooltip{
background-color: var(--bg1);

View file

@ -286,6 +286,7 @@ class adminUserList{
this.userNames = document.querySelectorAll(".admin-user-list-name");
this.rankSelectors = document.querySelectorAll(".admin-user-list-rank-select");
this.banIcons = document.querySelectorAll(".admin-user-list-ban-icon");
this.passResetIcons = document.querySelectorAll(".admin-user-list-pw-reset-icon");
this.setupInput();
}
@ -318,6 +319,10 @@ class adminUserList{
for(let banIcon of this.banIcons){
banIcon.addEventListener("click", this.banPopup.bind(this));
}
for(let passResetIcon of this.passResetIcons){
passResetIcon.addEventListener("click", this.genResetLink.bind(this))
}
}
async setRank(event){
@ -327,6 +332,35 @@ class adminUserList{
this.updateSelect(await adminUtil.setUserRank(user, rank), event.target);
}
async genResetLink(event){
//Scrape user
const user = event.target.id.replace("admin-user-list-pw-reset-icon-","");
const URL = (await adminUtil.genPasswordResetLink(user)).url;
//Create span
const span = document.createElement('span');
//Usually not into doing CSS this way, but I'm not making a dedicated file for a popup this small...
span.style = "text-align: center; display: block;"
//Create header
const header = document.createElement('h3');
header.innerText = `Reset Link for ${user}`
//Create link
const link = document.createElement('a');
link.innerText = "Reset Link"
link.href = URL;
//Append link to the header
span.appendChild(header);
span.appendChild(link);
//Display link in pop-up
new canopyUXUtils.popup(span.outerHTML);
}
banPopup(event){
const user = event.target.id.replace("admin-user-list-ban-icon-","");
new canopyAdminUtils.banUserPopup(user, userBanList.renderBanList.bind(userBanList));

View file

@ -169,6 +169,7 @@ class canopyUXUtils{
}
remove(){
this.tooltip.dispatchEvent(new Event("close"));
this.tooltip.remove();
}
}
@ -259,6 +260,8 @@ class canopyUXUtils{
}
closePopup(){
this.popupDiv.dispatchEvent(new Event("close"));
//Take out the popup
this.popupDiv.remove();
@ -487,8 +490,13 @@ class canopyAjaxUtils{
body: JSON.stringify({token, pass, confirmPass, verification})
});
//If we received a successful response
if(response.status == 200){
return await response.json();
//Create pop-up
const popup = new canopyUXUtils.popup("Your password has been reset!");
//Go to home-page on pop-up closure
popup.popupDiv.addEventListener("close", ()=>{window.location = '/'});
//Otherwise
}else{
utils.ux.displayResponseError(await response.json());
}