diff --git a/src/web/index.html b/src/web/index.html index f7bc63d..0ceaf6e 100644 --- a/src/web/index.html +++ b/src/web/index.html @@ -133,6 +133,7 @@
+ diff --git a/src/web/js/add_user.js b/src/web/js/add_user.js index cd083dd..5e8a6ba 100644 --- a/src/web/js/add_user.js +++ b/src/web/js/add_user.js @@ -18,9 +18,10 @@ canceladduserbutton.addEventListener('click', (e) => { adduserformbody.addEventListener('submit', async (e) => { e.preventDefault() + const hashedpassword = await hashPassword(passwordinput.value) const new_user = { username: usernameinput.value, - password: passwordinput.value, + password: hashedpassword, group: groupinput.value, is_superuser: is_superuserinput.checked?"1":"0" } diff --git a/src/web/js/change_password.js b/src/web/js/change_password.js index 6b81037..0f452c6 100644 --- a/src/web/js/change_password.js +++ b/src/web/js/change_password.js @@ -17,9 +17,10 @@ cancelchangepassword.addEventListener('click', e => { changepasswordformbody.addEventListener('submit', async e => { e.preventDefault() + const hashedpassword = await hashPassword(changepasswordnewpassword.value) const status = await fetch(routes.change_password_url(), { method: 'POST', - body: `{"token":"${localStorage.getItem('token')}","userid":"${changepassuserid}","new_password":"${changepasswordnewpassword.value}"}` + body: `{"token":"${localStorage.getItem('token')}","userid":"${changepassuserid}","new_password":"${hashedpassword}"}` }).then(data => data.json()).then(jsondata => jsondata).catch((error) => { notification(`Ошибка на сервере: ${error}`, "error") }) diff --git a/src/web/js/change_user.js b/src/web/js/change_user.js index a7cbddc..5bf154d 100644 --- a/src/web/js/change_user.js +++ b/src/web/js/change_user.js @@ -38,7 +38,10 @@ changeuserformbody.addEventListener('submit', async (e) => { is_superuser: changeuserformissuperuser.checked ? "1" : "0", group: changeuserformgroup.value }; - if (changeuserformpassword.value !== "") {request = {...request, "password": changeuserformpassword.value}} + if (changeuserformpassword.value !== "") { + const hashedpassword = await hashPassword(changeuserformpassword.value) + request = {...request, "password": hashedpassword} + } const status = await fetch(routes.change_user(), { method: 'POST', body: JSON.stringify(request) diff --git a/src/web/js/login.js b/src/web/js/login.js index d106c96..3987f8e 100644 --- a/src/web/js/login.js +++ b/src/web/js/login.js @@ -16,15 +16,6 @@ loginformbody.addEventListener('submit', (e) => { }) }) -const hashPassword = async (password) => { - const encoder = new TextEncoder() - const data = encoder.encode(password) - const hashBuffer = await crypto.subtle.digest('SHA-256', data) - const hashArray = Array.from(new Uint8Array(hashBuffer)) - const hashHex = hashArray.map(b=>('00' + b.toString(16)).slice(-2)).join('') - return hashHex -} - const login = async (username, password) => { const response = await fetch(routes.login(), { method: 'POST', diff --git a/src/web/js/security.js b/src/web/js/security.js new file mode 100644 index 0000000..a4a5b23 --- /dev/null +++ b/src/web/js/security.js @@ -0,0 +1,8 @@ +const hashPassword = async (password) => { + const encoder = new TextEncoder() + const data = encoder.encode(password) + const hashBuffer = await crypto.subtle.digest('SHA-256', data) + const hashArray = Array.from(new Uint8Array(hashBuffer)) + const hashHex = hashArray.map(b=>('00' + b.toString(16)).slice(-2)).join('') + return hashHex +} \ No newline at end of file