Prepare Build and Testing executable binary / Prepare-Build-Testing-With-Make (push) Successful in 9s
Prepare Build and Testing executable binary / Prepare-Build-Testing-With-CMake (push) Successful in 14s
Prepare Build and Testing executable binary / Prepare-Build-Testing-With-Meson (push) Failing after 8s
84 lines
3.3 KiB
JavaScript
84 lines
3.3 KiB
JavaScript
const loginform = document.querySelector('#loginform')
|
|
const loginformbody = document.querySelector('#loginformbody')
|
|
const loginforminputusername = document.querySelector('#loginforminputusername')
|
|
const loginforminputpassword = document.querySelector('#loginforminputpassword')
|
|
const exitbutton = document.querySelector('#exitbutton')
|
|
const usernameheader = document.querySelector('.usernameheader')
|
|
|
|
if (localStorage.getItem("token") === null) {
|
|
loginform.classList.add("active")
|
|
}
|
|
|
|
loginformbody.addEventListener('submit', (e) => {
|
|
e.preventDefault()
|
|
hashPassword(loginforminputpassword.value).then(hashedpassword => {
|
|
login(loginforminputusername.value, hashedpassword)
|
|
})
|
|
})
|
|
|
|
const login = async (username, password) => {
|
|
const response = await fetch(routes.login(), {
|
|
method: 'POST',
|
|
headers: {
|
|
Accept: 'application/json',
|
|
// 'Access-Control-Allow-Origin': '*',
|
|
'Content-Type': 'application/json',
|
|
},
|
|
// mode: 'no-cors',
|
|
body: `{"username":"${username}","password":"${password}"}`
|
|
}).then(data => data.json()).then(jsondata => jsondata).catch((error) => {
|
|
if (error.message === "Unexpected end of JSON input") {
|
|
notification(`Ошибка на сервере: Создайте файл users.json и запишите в него первого пользователя`, "error")
|
|
} else {
|
|
notification(`Ошибка на сервере: ${error}`, "error")
|
|
}
|
|
})
|
|
if (response.error) {
|
|
loginforminputusername.classList.add('is-invalid')
|
|
loginforminputpassword.classList.add('is-invalid')
|
|
notification("Неправильный логин или пароль", "error")
|
|
}
|
|
if (response.token) {
|
|
notification("Успешно", "success")
|
|
loginform.classList.remove("active")
|
|
localStorage.setItem("token", response.token)
|
|
await get_user_data()
|
|
loginforminputusername.value = ""
|
|
loginforminputpassword.value = ""
|
|
loginforminputusername.classList.remove('is-invalid')
|
|
loginforminputpassword.classList.remove('is-invalid')
|
|
}
|
|
}
|
|
|
|
const get_user_data = async () => {
|
|
const response = await fetch(routes.user(), {
|
|
method: "POST",
|
|
body: `{"token":"${localStorage.getItem("token")}"}`
|
|
}).then(data => data.json()).then(jsondata => jsondata).catch((error) => {
|
|
notification(`Ошибка на сервере: ${error}`, "error")
|
|
})
|
|
if (response.is_superuser) {
|
|
await get_all_users()
|
|
usernameheader.innerHTML = response.username
|
|
} else {
|
|
document.querySelector('#alluserstablebody').innerHTML = ""
|
|
loginform.classList.add("active")
|
|
notification("Вы не можете войти потому что не являетесь администратором", "error")
|
|
localStorage.clear()
|
|
}
|
|
if (response.id) {
|
|
localStorage.setItem("userdata", JSON.stringify(response))
|
|
}
|
|
}
|
|
|
|
message.addEventListener('click', () => {
|
|
message.classList.remove("active")
|
|
})
|
|
|
|
exitbutton.addEventListener('click', () => {
|
|
localStorage.removeItem('token')
|
|
localStorage.removeItem('userdata')
|
|
loginform.classList.add('active')
|
|
notification('Вы вышли', "success")
|
|
})
|