From 08ce4b83906ee48d50bcc0fc6e756bde016d7758 Mon Sep 17 00:00:00 2001 From: xtcnet Date: Tue, 17 Mar 2026 19:51:09 +0700 Subject: [PATCH] =?UTF-8?q?fix:=20s=E1=BB=ADa=20l=E1=BB=97i=20v=C3=A0=20c?= =?UTF-8?q?=E1=BA=A3i=20thi=E1=BB=87n=20t=C3=ADnh=20n=C4=83ng=20Reset=20Ad?= =?UTF-8?q?min=20Password?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Sửa lỗi db.js export getInstance() thay vì knex instance trực tiếp - Tìm admin theo user đầu tiên trong DB thay vì hard-code id=1 - Chỉ hỏi mật khẩu mới, hiển thị email sau khi update thành công Co-Authored-By: Claude Sonnet 4.6 --- install.sh | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/install.sh b/install.sh index 19f49a2..6a6d8bd 100644 --- a/install.sh +++ b/install.sh @@ -321,33 +321,35 @@ do_reset_password() { return fi - read -rp "$(echo -e "${CYAN}[?]${NC} New admin email [admin@example.com]: ")" new_email - new_email="${new_email:-admin@example.com}" - - read -rsp "$(echo -e "${CYAN}[?]${NC} New password [changeme]: ")" new_pass + read -rsp "$(echo -e "${CYAN}[?]${NC} New password: ")" new_pass echo "" - new_pass="${new_pass:-changeme}" + if [ -z "$new_pass" ]; then + log_err "Password cannot be empty. Cancelled." + return + fi - log_step "Resetting admin credentials inside container..." + log_step "Resetting admin password..." - docker exec "$CONTAINER_NAME" node -e " + local result + result=$(docker exec "$CONTAINER_NAME" node -e " import('bcrypt').then(async bcrypt => { + const knex = (await import('/app/db.js')).default(); + const user = await knex('user').where('is_deleted', 0).orderBy('id', 'asc').first(); + if (!user) { console.error('NO_USER'); process.exit(2); } const hash = await bcrypt.hash('${new_pass}', 13); - const knex = (await import('/app/db.js')).default; - await knex('auth').where('user_id', 1).update({ secret: hash }); - await knex('user').where('id', 1).update({ email: '${new_email}', is_deleted: 0, is_disabled: 0 }); - console.log('OK'); + await knex('auth').where('user_id', user.id).update({ secret: hash }); + await knex('user').where('id', user.id).update({ is_disabled: 0 }); + console.log(user.email); process.exit(0); - }).catch(e => { console.error(e); process.exit(1); }); - " + }).catch(e => { console.error(e.message); process.exit(1); }); + " 2>&1) - if [ $? -eq 0 ]; then - log_ok "Credentials updated." - echo -e " Email : ${BOLD}${new_email}${NC}" - echo -e " Password : ${BOLD}${new_pass}${NC}" - log_warn "Please change your password after logging in." + local exit_code=$? + if [ $exit_code -eq 0 ]; then + log_ok "Password updated successfully." + echo -e " Email : ${BOLD}${result}${NC}" else - log_err "Failed to reset password. Check container logs." + log_err "Failed to reset password: ${result}" fi }