当前位置: 首页 > news >正文

Nuxt3 全栈作品【通用信息管理系统】修改密码

最终效果

在这里插入图片描述

在这里插入图片描述

前端代码

layouts/default.vue

<el-dropdown-item @click="openEditPassword">修改密码
</el-dropdown-item>
const openEditPassword = () => {editPassword_dialogVisible.value = true;
};
const editPassword_dialogVisible = ref(false);
    <!-- 修改密码的弹窗 --><el-dialogtitle="修改密码"v-model="editPassword_dialogVisible"width="40%"><S-form:Model="editPassword_Model":colNum="1":local_save="editPassword_local_save":cancel="() => {editPassword_dialogVisible = false;}"></S-form></el-dialog>
const editPassword_Model = {newPassword: {label: "新密码",type: "password",require: true,},newPassword_confirm: {label: "密码确认",type: "password",formRules: [{ required: true, message: "请再次输入新密码", trigger: "blur" },],},
};const editPassword_local_save = async (formData: any) => {let error_msg = "";if (formData.newPassword !== formData.newPassword_confirm) {error_msg = "两次密码输入不一致";}if (error_msg) {callbackMessage.value = {show: true,valid: false,content: error_msg,};return;}try {await useFetch(`/api/user/${currentUser._id}`, {method: "PATCH",query: {handleType: "editPassword",newPassword: formData.newPassword,},});callbackMessage.value = {show: true,valid: true,content: "操作成功",};editPassword_dialogVisible.value = false;} catch (e: any) {callbackMessage.value = {show: true,valid: false,content: e.data.message,};}
};

依赖组件 S-form.vue

https://blog.csdn.net/weixin_41192489/article/details/149717692

接口开发

`/api/user/${currentUser._id}`

server/api/user/[id].patch.ts

// 用户的禁用、启用、重置密码
import { UserDataProps } from "~/server/models/user";
import bcrypt from "bcrypt";
export default defineEventHandler(async (event) => {const id = getRouterParam(event, "id");const query = getQuery(event);const { handleType, newPassword } = query;let newData: Partial<UserDataProps> = {};const config = useRuntimeConfig();switch (handleType) {case "disable":newData.disabled = true;break;case "enable":newData.disabled = false;break;case "resetPassword":newData = {password: await bcrypt.hash(config.bcrypt.defaultPassword,config.bcrypt.saltRounds),};break;case "editPassword":if (newPassword) {newData = {password: await bcrypt.hash(String(newPassword),config.bcrypt.saltRounds),};}break;default:break;}const newUser = UserSchema.findByIdAndUpdate(id, newData, { new: true });return newUser;
});

server/models/user.ts

见 https://blog.csdn.net/weixin_41192489/article/details/149709713

validators/user.ts

见 https://blog.csdn.net/weixin_41192489/article/details/149709713

http://www.dtcms.com/a/303565.html

相关文章:

  • OpenLayers 综合案例-热力图
  • 在虚拟机ubuntu上修改framebuffer桌面不能显示图像
  • C++进阶—C++11
  • 5G 便携式多卡图传终端:移动作业的 “实时感知纽带”
  • 【unitrix】 6.19 Ord特质(ord.rs)
  • 【灰度实验】——图像预处理(OpenCV)
  • 2025年7月28日训练日志
  • 【三桥君】如何解决后端Agent和前端UI之间的交互问题?——解析AG-UI协议的神奇作用
  • 排水管网实时监测筑牢城市安全防线
  • 线程间-数据缓存机制(线程邮箱)
  • CDN架构全景图
  • STM32 usb HOST audio USB 音频设备 放音乐
  • springCloudAlibaba集成Dubbo
  • 【版本更新】火语言 0.9.94.0 更新
  • 虚拟面孔,真实革命
  • Product Hunt 每日热榜 | 2025-07-28
  • JAVA_EIGHTEEN_特殊文件
  • STM32——寄存器映射
  • LLaMA-Factory微调教程2:命令行sft微调
  • 【拓扑排序 缩点】P2272 [ZJOI2007] 最大半连通子图|省选-
  • 【跳跃游戏】
  • BUUCTF-MISC-[HBNIS2018]caesar1
  • Linux驱动22 --- RV1126 环境搭建设备树修改
  • 从零到一:我是如何用深度学习打造高性能书籍推荐系统的
  • mp核心功能
  • 零基础学习性能测试第九章:全链路追踪-项目实操
  • 猎板 PCB 控深槽工艺:5G 基站散热模块的关键支撑
  • 解决c++运行时提示:first defined here (重复定义问题)
  • **线程与进程的区别与联系**
  • Qt下使用图形视图框架实现图像上各图形绘制