首页 > 其他分享 >管理中心,显示管理员信息,修改密码,退出登录

管理中心,显示管理员信息,修改密码,退出登录

时间:2023-04-20 22:44:07浏览次数:37  
标签:info 管理中心 uid 登录 admin admins 管理员 pass

前言:

管理员登录到管理后台后,显示管理员信息,修改管理员密码,退出登录功能

正文:

管理中心显示

 

 

个人信息页面:

 

修改密码页:

 

文件:admins/controllers/admins.go 管理后台首页控制器

后台首页,退出登录

var db = common.DB
//后台首页
func AdminIndex(c *gin.Context)  {
    //会员中心主页
    admin_uid,_ :=c.Get("admin_uid")

    //获取总共登录次数
    var count int64
    db.Table("admins_log").Where("admin_uid=? and request_url= '/admin/dologin'",admin_uid).Count(&count)
    //获取上次登录IP和上次登录时间
    var admins_log = modes.AdminsLog{}
    db.Table("admins_log").Where("admin_uid=? and request_url= '/admin/dologin' ",admin_uid).Order("id Desc").First(&admins_log)


    redata := gin.H{
        "count":count,
        "admins_log":&admins_log,
    }
    c.HTML(http.StatusOK,"admins/index.html", redata)
}


// 管理员退出
func LoginOut(c *gin.Context) {
    common.ClearCookie("admin_uid", c)
    common.ClearCookie("admin_auth", c)
    common.ClearCookie("sessionid", c)

    common.ClearSession("admin_uid", c)
    common.ClearSession("admin_auth", c)
    common.ClearSession("sessionid", c)

    c.Redirect(http.StatusFound, "/admin/login")
    c.Abort() //不加这个abort后续代码还会执行
    return
}
// 管理员详情
func AdminInfo(c *gin.Context) {
    aidd, _ := strconv.Atoi(c.Query("admin_id"))
    var info modes.Admins
    info = modes.AdminsItem(aidd)

    //获取管理员列表
    c.HTML(http.StatusOK, "admins/admin_info.html", gin.H{
        "info": info,
    })
}

// 修改密码
func AdminChangePass(c *gin.Context) {
    aidd, _ := strconv.Atoi(c.Query("admin_id"))
    var info modes.Admins
    info = modes.AdminsItem(aidd)

    //获取管理员列表
    c.HTML(http.StatusOK, "admins/admin_change_pass.html", gin.H{
        "info": info,
    })
}

// 保存密码
func AdminSavePass(c *gin.Context) {

    admin_id, _ := strconv.Atoi(c.PostForm("admin_id"))
    old_pass, _ := c.GetPostForm("old_pass")
    new_pass, _ := c.GetPostForm("new_pass")
    re_pass, _ := c.GetPostForm("re_pass")

    if new_pass != re_pass || new_pass == "" {
        c.JSON(http.StatusOK, gin.H{"code": 400, "msg": "新密码两次输入不一致或为空"})
        return
    }

    res, msg := modes.AdminsChangePass(admin_id, old_pass, new_pass)
    if res != true {
        c.JSON(http.StatusOK, gin.H{"code": 400, "msg": msg})
        return
    }
    c.JSON(http.StatusOK, gin.H{"code": 0, "msg": "密码设置成功,请重新登录"})
}

 

model文件 modes/adminsModel.go  

//管理员修改密码
func AdminsChangePass(admin_id int,oldpass string,newpass string,) (bool,string) {
    var admin = Admins{}
    //密码加密
    if strings.TrimSpace(oldpass) != ""{
        oldpass = common.MyMd5(oldpass)
    }

    if strings.TrimSpace(newpass) != ""{
        newpass = common.MyMd5(newpass)
    }
    DB.Model(Admins{}).Where("admin_uid=?",admin_id).First(&admin)
    if admin.AdminPasswd != oldpass {
        return false,"旧密码输入错误"
    }

    DB.Model(Admins{}).Where("admin_uid=?",admin.AdminUid).Updates(Admins{
        AdminPasswd: newpass,
    })
    return true,"密码修改成功"
}
//获取管理员
func AdminsItem(aid int) (Admins) {

    var info Admins
    DB.Model(Admins{}).Where("admin_uid=?",aid).Find(&info)

    return info
}

//获取管理员账号
func AdminsUname(aid int) (string) {

    //var uname string
    var users Admins
    DB.Model(Admins{}).Select("admin_uname").Where("admin_uid=?",aid).First(&users)

    return users.AdminUname
}

 

 

模板文件:views/admins/index.html

<!--_header 作为公共模版分离出去-->
{{template "public/header.html" .}}
<!--/_header 作为公共模版分离出去-->
 
<p>登录次数:{{.count}} </p>
<p>上次登录IP:{{.admins_log.IpAddr}}  上次登录时间:{{.admins_log.AddDatetime}}</p>

模板文件:views/admins/public/header.html

{{define "public/header.html"}}
{{ $admin_uid := GetAdminId}}

<nav id="Hui-userbar" class="nav navbar-nav navbar-userbar hidden-xs">
        <ul class="cl">
          <li>{{GetAdminName}}</li>
          <li class="dropDown dropDown_hover"> 
<a href="#" class="dropDown_A">{{GetAdminTruename}} <i class="Hui-iconfont">&#xe6d5;</i></a>
            <ul class="dropDown-menu menu radius box-shadow">
              <li><a href="javascript:;" onClick="myselfinfo('/admin/admin_info?admin_id={{$admin_uid}}')">个人信息</a></li>
              <li><a href="javascript:;"  onClick="updatepasswd('/admin/admin_change_pass?admin_id={{$admin_uid}}')">修改密码</a></li>
              <li><a href="/admin/loginout">退出</a></li>
            </ul>
          </li>
</ul>
</nav>
{{end}}

JS代码

 

/*个人信息*/
function myselfinfo(url){
    layer.open({
        type: 2,
        area: ['600px','600px'],
        fix: false, //不固定
        maxmin: true,
        shade:0.4,
        title: '查看管理员信息',
        content: url
    });
}

/*修改管理员密码*/
function updatepasswd(url){
    layer.open({
        type: 2,
        area: ['600px','600px'],
        fix: false, //不固定
        maxmin: true,
        shade:0.4,
        title: '修改管理员密码',
        content: url
    });
}

 

管理员详情模板: views/admins/admin_info.html

{{define "admins/admin_info.html"}}

<div class="cl pd-20" style=" background-color:#5bacb6">
    <dl style="margin-left:40px; color:#fff">
        <dt><span class="f-18">账号:{{.info.AdminUname}}</span> <span class="pl-10 f-12">ID:{{.info.AdminUid}}</span></dt>
        <dd class="pt-10 f-12" style="margin-left:0">
           {{.info.AdminRemark}}
        </dd>
    </dl>
</div>
<div class="pd-20">
    <table class="table">
        <tbody>
        <tr>
            <th class="text-r" width="80">姓名:</th>
            <td>{{.info.AdminTruename}}</td>
        </tr>
        <tr>
            <th class="text-r" width="80">部门:</th>
            <td>{{.info.AdminDept}}</td>
        </tr>

        <tr>
            <th class="text-r">级别:</th>
            <td >
                {{if eq .info.IsAdmin 1}}<span class="label label-success radius">普通管理员</span>
                {{else if eq .info.IsAdmin 2}}<span class="label label-warning radius">超级管理员</span>
                {{end}}
            </td>
        </tr>
        <tr>
            <th class="text-r">状态:</th>
            <td >
                {{if eq .info.AdminStatus 1}}<span class="label label-success radius">状态正常</span>
                {{else if eq .info.AdminStatus 2}}<span class="label label-warning radius">禁止登录</span>
                {{end}}
            </td>
        </tr>
        <tr>
            <th class="text-r">登录次数:</th>
            <td>{{.info.Logincount}}</td>
        </tr>
        <tr>
            <th class="text-r">最后登录:</th>
            <td>{{.info.Lastlogin}}</td>
        </tr>
        <tr>
            <th class="text-r">添加时间:</th>
            <td>{{.info.AddDatetime}}</td>
        </tr>
        </tbody>
    </table>
</div>
{{end}}

管理员修改密码模板: views/admins/admin_change_pass.html

<form action="/admin/admin_save_pass" method="post" class="form form-horizontal" id="form-change-password">
        <div class="row cl">
            <label class="form-label col-xs-3 col-sm-2"><span class="c-red">*</span>账户:</label>
            <div class="formControls col-xs-8 col-sm-9"> {{.info.AdminUname}} </div>
        </div>
        <div class="row cl">
            <label class="form-label col-xs-3 col-sm-2"><span class="c-red">*</span>旧密码:</label>
            <div class="formControls col-xs-8 col-sm-9">
                <input type="password" class="input-text" autocomplete="off" placeholder="" name="old_pass" id="old_pass">
            </div>
        </div>
        <div class="row cl">
            <label class="form-label col-xs-3 col-sm-2"><span class="c-red">*</span>新密码:</label>
            <div class="formControls col-xs-8 col-sm-9">
                <input type="password" class="input-text" autocomplete="off" placeholder="不修改请留空" name="new_pass" id="new_pass">
            </div>
        </div>
        <div class="row cl">
            <label class="form-label col-xs-3 col-sm-2"><span class="c-red">*</span>确认密码:</label>
            <div class="formControls col-xs-8 col-sm-9">
                <input type="password" class="input-text" autocomplete="off" placeholder="不修改请留空" name="re_pass" id="new-re_pass">
            </div>
        </div>
        <div class="row cl">
            <div class="col-xs-8 col-sm-9 col-xs-offset-4 col-sm-offset-3">
                <input type="hidden" name="admin_id" value="{{.info.AdminUid}}">
                <input class="btn btn-primary radius" type="submit" value="&nbsp;&nbsp;保存&nbsp;&nbsp;">
            </div>
        </div>
</form>


<!--请在下方写此页面业务相关的脚本-->
<script type="text/javascript"
 src="/static/h-ui.lib/jquery.validation/1.14.0/jquery.validate.js"></script>
<script type="text/javascript"
 src="/static/h-ui.lib/jquery.validation/1.14.0/validate-methods.js"></script>
<script type="text/javascript"
 src="/static/h-ui.lib/jquery.validation/1.14.0/messages_zh.js"></script>
<script type="text/javascript">
    $(function(){
        $("#form-change-password").validate({
            rules:{
                old_pass:{
                    required:true,
                    minlength:6,
                    maxlength:20
                },
                new_pass:{
                    required:true,
                    minlength:6,
                    maxlength:20
                },
                re_pass:{
                    required:true,
                    minlength:6,
                    maxlength:20,
                    equalTo: "#new_pass"
                },
            },
            onkeyup:false,
            focusCleanup:true,
            success:"valid",
            submitHandler:function(form){
                $(form).ajaxSubmit(function (data){
                    if (data.code == 0){
                        layer.alert("密码修改成功,请重新登录!",function (){
                            var index = parent.layer.getFrameIndex(window.name);
                            parent.window.location.href = "/admin/loginout"
                        })

                    }else{
                        layer.alert(data.msg)
                    }
                });
            }
        });
    });
</script>

 

 

完结

 

标签:info,管理中心,uid,登录,admin,admins,管理员,pass
From: https://www.cnblogs.com/ypeih/p/17338622.html

相关文章

  • asp.net程序通过Microsoft Azure中SAML协议实现单点登录
    1.新建应用程序登录Azure门户,进入左侧菜单“企业应用程序--所有应用程序”,点“新建应用程序”,继续点“创建你自己的应用程序”,如下图选择和录入名称:填好应用的名称、想要如何处理应用程序必须选择第三个“继承未在库中找到的任何其他应用程序(非库)”,之后点“创建”按钮;2.单......
  • 盘点一个ddddocr实现登录的实战案例
    大家好,我是皮皮。一、前言前几天在Python白银交流群【空翼】问了一个Pyhton网络爬虫的问题,这里拿出来给大家分享下。二、实现过程一开始看上去并不能登录,找不到原因在哪,后来【甯同学】帮忙搞定了,代码如下:#-*-coding:utf-8-*-#@Author:KongYi#@Time:2022/12/313:49......
  • JSch - 配置SFTP服务器SSH免密登录
    目录1.什么是SFTP2.什么是Jsch以及它的作用3.sftp服务器认证机制4.publickey和password两种方式登录sftp的API调用需求:做一个通过ssh免密登录的需求,是基于原先密码登录sftp服务器的代码上进行改造1.什么是SFTPSFTP是一个安全文件传送协议,可以为传输文件提供一种安全的加......
  • 不输入密码ssh直接登录阿里云Linux主机
    评:不输入密码ssh直接登录阿里云Linux主机服务器环境:阿里云云服务器,Linux版本-CentOS客户端环境:MacOSXTerminal在Terminal中用ssh命令登录服务器每次都要输入密码,虽然可以复制/粘贴密码,但登录后一段时间不操作,服务器会自动断开连接,连接时又要复制/粘贴密码,还是有些不方......
  • 手把手逐步解析Javaweb登录实例
    一、编写前端界面<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</titl......
  • 【C#新手入门一】winform实现QQ登录窗口
    闲来无事,打算写一系列winform入门相关的小软件,算是对自己技术的一个复习和备忘,也希望能帮助刚入门的萌新(可能也帮不到,因为没有注释)第一期先用winform最大限度的还原QQ的登录界面,下图左侧是仿真的,右侧是QQ的界面,很明显能看出来高仿的和正版的区别,哈哈! 这是效果展示接下来......
  • Vue 登录login post请求 security UserDetailsService 获取参数为""
    背景原请求将数据放到params中,导致数据拼接在请求地址后面,具有高级安全隐患。请求方法:axios.request({url:'/login',method:'post',params:{username:'****',password:'****'}})出现的问题将params改成data,使数据放在请求体中,但后端自定义的U......
  • 微信小程序实现简单登录界面和登录功能
    微信小程序实现简单登录界面和登录功能问题背景客户端开发和学习过程中,登录功能是一个很常见的场景。本文将介绍,微信小程序开发过程中是如何实现登录界面和登录功能的。问题分析话不多说,直接上代码。(1)index.js文件,代码如下:Page({/***页面的初始数据*/data:{......
  • 如何修复树莓派在更换了一个 SD 系统卡后,无法使用 SSH 登录问题 All In One
    如何修复树莓派在更换了一个SD系统卡后,无法使用SSH登录问题AllInOneknownhostsRaspberryPi无法SSH登录,报错❌/Users/xgqfrms-mm/.ssh/[email protected]@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@WARNING:REMO......
  • vue3微信公众号商城项目实战系列(6)用户登录
    1.一个商城要实现购物的功能,需要能识别用户的身份,这样才能完成加购物车,下单,付款等操作。但微信公众号商城和PC端商城有些不一样,区别在于微信公众号商城使用微信支付的时候需要一个openid的参数(以后再具体讲)这个参数必须访问微信公众号提供的接口才能获取到,基于这个原因,用户登录......