经常碰到有操作员忘记登录密码,需要系统管理员来处理,之前有分享过【非常用电脑】登录系统要通过企业微信验证码的验证才能使用系统,在这个基础上设计了同样通过企业微信验证码来让操作员自助清空登录密码后再登录系统重设登录密码。 操作流程: 1. 新建一个操作账号:【0000】,密码:【0000】,不进行任何角色授权,把这个账号信息添加到企业微信的登录信息里面,让操作员知道可以通过这个账号清除登录密码后重置密码 2. 系统管理员账号把要绑定的邮箱账号相关信息编辑进去保存,以便接收清除登录密码和登录密码重置成功信息存档备查 3. 操作员尽量都绑定对应的邮箱,以便可以用来接收清除登录密码和登录密码重置成功信息存档备查【没有加入企业微信的也可以通过邮箱接收相关验证码】 4. 忘记密码的时候,登录【0000】账号,输入要清空登录密码的账号点确定【误点返回会重新弹出输入账号窗口,限制重新弹出2次,也就是3次都误点返回的,就会退出系统弹出登录窗口,重新登录操作】 5. 输入账号点确定后,会切换到验证码窗口,输入微信收到的企业微信验证码,点击确定,若密码清空成功,会发送相关信息到系统管理员邮箱【存档备查】和账号绑定的邮箱【若有绑定】后弹出操作成功提示退出登录 6. 在登录窗口使用清空登录密码的账号重新登录【若有设置密码强度等级为B:至少4位长度的,空密码登录后会直接弹出密码个人信息设置【操作员编辑窗口】窗口来重置密码并保存】【或使用任意包含4位数密码登录后,系统会弹出提示并弹出密码设置窗口【更新密码的简洁窗口】来重置密码,不重置密码操作点击返回的,会再一次弹出密码个人信息一次,还不设置新的密码的系统将弹出提示并退出,也就是是禁止使用空密码登录后进行其他操作】【设置新密码成功后会弹出提示并退出登录,使用新的密码登录即可正常使用系统】 清空密码脚本是和登录验证码脚本一起保存在app_ready脚本里面【这样使用小秘书模式登录也能操作】 int SrJc() { if(inp_get_val('mnum') == '') { msg('登录账号没有输入,请重新输入!') inp_para();//弹出窗口,输入清空登录密码的用户账号 }; return 1; }; int KmmJc() { string uid,uid_name,uid_email,uid_email,Host_ip,Ip,Host_name,dlrq,dlsk,admin_email,admin_email_pwd,admin_smtp_host,admin_smtp_port,admin_WeChatId,uid_company,GlYyZm,YxCh; uid = get_user_id(); uid_name = get_user_name(): db_run("select * frommup_userwhere user_id='"+uid+"'")//查询是否清空密码 if(db_res(8) == '') { msg('密码为空,请输入登录密码和密码确认后点击保存!') call_dll_func('mup_app','Mup_Gui_Chg_Pwd');//打开设置密码更新密码 }else{ db_run("select attr_val from mup_user_attr where user_id='admin' and attr_id in('WeChatId')")//提取系统管理员绑定的企业微信 admin_WeChatId = db_res(0) db_run("select attr_val from mup_user_attr where user_id='admin' and attr_id in('email')")//提取系统管理员账号绑定的邮箱 admin_email = db_res(0) db_run("select attr_val from mup_user_attr where user_id='admin' and attr_id in('email_pwd')")//提取系统管理员账号绑定的邮箱密码 admin_email_pwd = db_res(0) db_run("select attr_val from mup_user_attr where user_id='admin' and attr_id in('smtp_host')")//提取系统管理员账号绑定的邮箱发邮件服务器 admin_smtp_host = db_res(0) db_run("select attr_val from mup_user_attr where user_id='admin' and attr_id in('smtp_port')")//提取系统管理员账号绑定的邮箱发邮件端口 admin_smtp_port = db_res(0) db_run("select attr_val from mup_user_attr where user_id='"+uid+"' and attr_id in('email')")//提取要清空登录密码的用户账号绑定的邮箱 uid_email = db_res(0) db_run("select emp_id from mup_user where user_id='"+uid+"'")//提取要清空登录密码的用户账号绑定的员工编号 uid_company = dt_get_name('emp_company',get_emp_company_id(db_res(0)));//提取要清空登录密码的用户账号所在的公司名称 Host_ip = get_ip();//本机IP地址 Host_name = get_host_name();//本机主机名 dlrq = get_cur_date();//当天日期 dlsk = get_cur_time();//当前时刻 GlYyZm = 'ERP系统用户【'+uid+':'+uid_name+'】用户,于【'+dlrq+'】【'+dlsk+'】在IP【'+Host_ip+'】电脑名【'+Host_name+'】上重置登录密码成功!' send_qywx_notify(admin_WeChatId,GlYyZm);//发送重置登录密码成功的信息到系统管理员的企业微信 //默认使用系统管理员绑定的邮箱账号发送重置登录密码成功的信息到系统管理员邮箱,以备查验 smtp_set_host(admin_smtp_host);//发送邮件主机 smtp_set_port(admin_smtp_port);//发送端口 smtp_set_user(admin_email);//发送用户 smtp_set_passwd(admin_email_pwd); smtp_set_subject('【'+uid_company+'】ERP系统用户账号登录密码重置成功通知'); smtp_set_msg_body(GlYyZm);//邮件内容 smtp_set_target(admin_email,"系统管理员"); if(uid_email != '') { smtp_add_target(uid_email,YxCh); }; if(!smtp_send()) check_thr_err(); }; return 1; }; int main() { string sql,uid,uid_name,WeChatId,Host_ip,Ip,Host_name,dlrq,dlsk,CyDn,Dlxx,YxCh,YxXx,admin_email,admin_email_pwd,admin_smtp_host,admin_smtp_port; num SuiJiShu,SuiJiShu1,SuiJiShu2; uid = get_user_id(); //检测登录账号密码是否为空,为空则弹出密码设置窗口进行密码更新,若设置密码强度等级为【B】【至少4位】,在空密码登录后则会直接弹出密码个人信息设置窗口【操作员设置界面】,所以建议使用任意4位数密码登录。 db_run("select * from mup_user where user_id='"+uid+"'")//查询是否清空密码 if(db_res(8) == '') { msg('检测到登录密码为空,请在弹出的窗口设置新的密码') call_dll_func('mup_app','Mup_Gui_Chg_Pwd');//打开设置密码更新密码 KmmJc() //再次检测密码是否为空,若为空再次弹出密码设置窗口更新密码,若直接点击返回不更新密码则退出系统重新登录,避免使用空密码操作系统 msg('检测到没有设置新的密码,系统将退出登录,请重新登录系统后设置新的密码并保存,否则将不能使用系统!') call_dll_func('gui_app','Gui_App_Restart');//重新登录系统 }; if(uid == '0000')//检测到0000账号【清除登录密码专用账号】登录时 { string sql,uid,uid_name,uid_email,uid_WeChatId,Host_ip,Ip,Host_name,dlrq,dlsk,SuiJiShu,uid_emp_id,admin_email,admin_email_pwd,admin_smtp_host,admin_smtp_port,admin_WeChatId,uid_company; db_run("select attr_val from mup_user_attr where user_id='admin' and attr_id in('WeChatId')")//提取系统管理员绑定的企业微信 admin_WeChatId = db_res(0) db_run("select attr_val from mup_user_attr where user_id='admin' and attr_id in('email')")//提取系统管理员账号绑定的邮箱 admin_email = db_res(0) db_run("select attr_val from mup_user_attr where user_id='admin' and attr_id in('email_pwd')")//提取系统管理员账号绑定的邮箱密码 admin_email_pwd = db_res(0) db_run("select attr_val from mup_user_attr where user_id='admin' and attr_id in('smtp_host')")//提取系统管理员账号绑定的邮箱发邮件服务器 admin_smtp_host = db_res(0) db_run("select attr_val from mup_user_attr where user_id='admin' and attr_id in('smtp_port')")//提取系统管理员账号绑定的邮箱发邮件端口 admin_smtp_port = db_res(0) Host_ip = get_ip();//本机IP地址 Host_name = get_host_name();//本机主机名 dlrq = get_cur_date();//当天日期 dlsk = get_cur_time();//当前时刻 SuiJiShu = rand()//随机数 string WxXx,YxXx,YxCh,GlYyZm; inp_para_set_title('请输入要清空登录密码的用户账号');//输入窗口标题 inp_def_string('mnum','用户账号:');//定义字符型变量 inp_para();//弹出窗口,输入清空登录密码的用户账号 SrJc()//第一次没有输入账号信息,再次弹出窗口 SrJc()//第二次没有输入账号信息,再次弹出窗口 if(inp_get_val('mnum') == '')//第三次没有输入账号信息,系统退出 { msg('你闹着玩呢,连续三次不输入你的账号,请重新登录再操作!') call_dll_func('gui_app','Gui_App_Restart');//重新登录系统 }; num inp_num; inp_num=inp_get_val('mnum')//获取输入的要清空登录密码的用户账号 db_run("select user_id,user_name from mup_user where user_id='"+inp_num+"'")//根据输入的用户账号提取系统内的用户账号 uid = db_res(0) uid_name = db_res(1) GlYyZm = '没有加入企业微信的ERP系统用户【'+uid+':'+uid_name+'】用户,于【'+dlrq+'】【'+dlsk+'】在IP【'+Host_ip+'】电脑名【'+Host_name+'】上申请清空登录密码' GlYyZm = GlYyZm+';【请清空该用户的登录密码后通知该用户及时登录系统更新密码】;【请发送加入企业微信邀请给该用户,协助该用户完成加入企业微信后完成系统绑定】' WxXx = '亲爱的:【'+uid+':'+uid_name+'】用户,您的账号于【'+dlrq+'】【'+dlsk+'】在IP【'+Host_ip+'】电脑名【'+Host_name+'】上申请清空登录密码,验证码【'+SuiJiShu+'】' YxXx = '亲爱的:【'+uid+':'+uid_name+'】用户,您的账号于【'+dlrq+'】【'+dlsk+'】在IP【'+Host_ip+'】电脑名【'+Host_name+'】上申请清空登录密码,验证码【'+SuiJiShu+'】' YxXx = YxXx+';【清空密码已完成,请及时登录系统录入新的密码】;【此邮件为系统自动发送,存档备查,无需回复】' YxCh = 'ERP系统用户【'+uid+':'+uid_name+'】' db_run("select emp_id from mup_user where user_id='"+inp_num+"'")//提取要清空登录密码的用户账号绑定的员工编号 uid_company = dt_get_name('emp_company',get_emp_company_id(db_res(0)));//提取要清空登录密码的用户账号所在的公司名称 db_run("select attr_val from mup_user_attr where user_id='admin' and attr_id in('email')")//提取系统管理员账号绑定的邮箱 admin_email = db_res(0) db_run("select attr_val from mup_user_attr where user_id='"+inp_num+"' and attr_id in('email')")//提取要清空登录密码的用户账号绑定的邮箱 uid_email = db_res(0) db_run("select attr_val from mup_user_attr where user_id='"+inp_num+"' and attr_id in('WeChatId')")//提取要清空登录密码的用户绑定的企业微信 uid_WeChatId = db_res(0) if(inp_num == uid)//要清空登录密码的用户账号正确时 { if(uid_WeChatId == '' && uid_email == '')//当用户没有绑定的企业微信和邮箱时 { msg('您还没有加入企业微信,将发送清空登录密码申请给【系统管理员】,请联系【系统管理员】协助处理!【请完成加入企业微信申请后,联系系统管理员提供最新的企业微信的微信插件二维码,以便在微信端接收验证码】'); send_qywx_notify(admin_WeChatId,GlYyZm);//发送申请清空登录密码的相关信息到系统管理员的企业微信 call_dll_func('gui_app','Gui_App_Restart');//重新登录系统 }; if(uid_WeChatId != '') { send_qywx_notify(uid_WeChatId,WxXx);//发送清空登录密码的相关信息和验证码到企业微信 inp_clear();//清除内容 inp_para_set_title('请输入企业微信验证码');//输入窗口标题 inp_def_string('mnum1','企业微信验证码:');//定义字符型变量 inp_para();//弹出窗口,输入企业微信收到的验证码 num inp_num1; inp_num1=inp_get_val('mnum1')//获取企业微信收到的验证码 if(inp_num1 == SuiJiShu) { db_run("update mup_userset pwd='' whereuser_id='"+uid+"'");//清空登录密码 db_run("select * from mup_user where user_id='"+uid+"'")//查询是否清空密码 //默认使用系统管理员绑定的邮箱账号发送清空密码相关信息到系统管理员邮箱和清空密码账号绑定的邮箱(若有绑定)记录本次操作记录,以备查验 smtp_set_host(admin_smtp_host);//发送邮件主机 smtp_set_port(admin_smtp_port);//发送端口 smtp_set_user(admin_email);//发送用户 smtp_set_passwd(admin_email_pwd); smtp_set_subject('【'+uid_company+'】ERP系统用户账号密码清空验证码'); smtp_set_msg_body(YxXx);//邮件内容 smtp_set_target(admin_email,"系统管理员"); if(uid_email != '') { smtp_add_target(uid_email,YxCh); }; if(!smtp_send()) check_thr_err(); }; if(db_res(8) == '') { msg('密码清空完成,请使用空密码登录系统设置新的密码') call_dll_func('gui_app','Gui_App_Restart');//重新登录系统 }; }; }; if(inp_num != '' && uid == '') { msg('账号不存在,请重新登录再试') call_dll_func('gui_app','Gui_App_Restart');//重新登录系统 }; }; return 1; }; |