/** * Copyright (C) 2024 Puter Technologies Inc. * * This file is part of Puter. * * Puter is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ import UIWindow from './UIWindow.js' import UIAlert from './UIAlert.js' function UIWindowRecoverPassword(options){ return new Promise(async (resolve) => { options = options ?? {}; let h = ''; h += `
`; h += `

Recover Password

`; h += `
`; h += `

`; h += `
`; h += ``; h += ``; h += ``; h += `
`; h += `
`; const el_window = await UIWindow({ title: null, backdrop: options.backdrop ?? false, icon: null, uid: null, is_dir: false, body_content: h, has_head: options.has_head ?? true, selectable_body: false, draggable_body: true, allow_context_menu: false, is_draggable: options.is_draggable ?? true, is_droppable: false, is_resizable: false, stay_on_top: options.stay_on_top ?? false, allow_native_ctxmenu: true, allow_user_select: true, width: 350, dominant: true, ...options.window_options, onAppend: function(el_window){ $(el_window).find('.pass-recovery-username-or-email').first().focus(); }, window_class: 'window-item-properties', window_css:{ height: 'initial', }, body_css: { padding: '10px', width: 'initial', height: 'initial', 'background-color': 'rgba(231, 238, 245)', 'backdrop-filter': 'blur(3px)', } }) $(el_window).find('.pass-recovery-form').on('submit', function(e){ e.preventDefault(); e.stopPropagation(); return false; }) // Send recovery email $(el_window).find('.send-recovery-email').on('click', function(e){ let email, username; let input = $(el_window).find('.pass-recovery-username-or-email').val(); if(is_email(input)) email = input; else username = input; // todo validation before sending $.ajax({ url: api_origin + "/send-pass-recovery-email", type: 'POST', async: true, contentType: "application/json", data: JSON.stringify({ email: email, username: username, }), statusCode: { 401: function () { logout(); }, }, success: async function (res){ $(el_window).close(); await UIAlert({ message: res.message, body_icon: window.icons['c-check.svg'], stay_on_top: true, backdrop: true, window_options: { backdrop: true, close_on_backdrop_click: false, } }) }, error: function (err){ $(el_window).find('.error').html(err.responseText); $(el_window).find('.error').fadeIn(); }, complete: function(){ } }) }) }) } export default UIWindowRecoverPassword