//添加管理员 func (c Admin) Add(admin *models.Admin) revel.Result { if c.Request.Method == "GET" { title := "添加管理员--GoCMS管理系统" role := new(models.Role) role_list := role.GetRoleList() c.Render(title, role_list) return c.RenderTemplate("Setting/Admin/Add.html") } else { var username string = c.Params.Get("username") if len(username) > 0 { admin.Username = username } else { c.Flash.Error("请输入用户名!") c.Flash.Out["url"] = "/Admin/Add/" return c.Redirect("/Message/") } if admin.HasName() { c.Flash.Error("用户名“" + username + "”已存在!") c.Flash.Out["url"] = "/Admin/Add/" return c.Redirect("/Message/") } var password string = c.Params.Get("password") if len(password) > 0 { admin.Password = password } else { c.Flash.Error("请输入密码!") c.Flash.Out["url"] = "/Admin/Add/" return c.Redirect("/Message/") } var pwdconfirm string = c.Params.Get("pwdconfirm") if len(pwdconfirm) > 0 { if password != pwdconfirm { c.Flash.Error("两次输入密码不一致!") c.Flash.Out["url"] = "/Admin/Add/" return c.Redirect("/Message/") } } else { c.Flash.Error("请输入确认密码!") c.Flash.Out["url"] = "/Admin/Add/" return c.Redirect("/Message/") } var email string = c.Params.Get("email") if len(email) > 0 { admin.Email = email } else { c.Flash.Error("请输入E-mail!") c.Flash.Out["url"] = "/Admin/Add/" return c.Redirect("/Message/") } if admin.HasEmail() { c.Flash.Error("E-mail已存在!") c.Flash.Out["url"] = "/Admin/Add/" return c.Redirect("/Message/") } var realname string = c.Params.Get("realname") if len(realname) > 0 { admin.Realname = realname } else { c.Flash.Error("请输入真实姓名!") c.Flash.Out["url"] = "/Admin/Add/" return c.Redirect("/Message/") } var lang string = c.Params.Get("lang") if len(lang) > 0 { admin.Lang = lang } else { c.Flash.Error("请选择语言!") c.Flash.Out["url"] = "/Admin/Add/" return c.Redirect("/Message/") } var roleid string = c.Params.Get("roleid") if len(roleid) > 0 { Roleid, err := strconv.ParseInt(roleid, 10, 64) if err != nil { revel.WARN.Println(err) } admin.Roleid = Roleid } else { c.Flash.Error("请选择所属角色!") c.Flash.Out["url"] = "/Admin/Add/" return c.Redirect("/Message/") } var status string = c.Params.Get("status") if len(status) > 0 { Status, err := strconv.ParseInt(status, 10, 64) if err != nil { revel.WARN.Println(err) } admin.Status = Status } else { c.Flash.Error("请选择状态!") c.Flash.Out["url"] = "/Admin/Add/" return c.Redirect("/Message/") } if ip := c.Request.Header.Get("X-Forwarded-For"); ip != "" { ips := strings.Split(ip, ",") if len(ips) > 0 && ips[0] != "" { rip := strings.Split(ips[0], ":") admin.Lastloginip = rip[0] } } else { ip := strings.Split(c.Request.RemoteAddr, ":") if len(ip) > 0 { if ip[0] != "[" { admin.Lastloginip = ip[0] } } } if admin.Save() { //****************************************** //管理员日志 if UserID, ok := c.Session["UserID"]; ok { UserID, err := strconv.ParseInt(UserID, 10, 64) if err != nil { revel.WARN.Println(err) } admin_info := admin.GetById(UserID) logs := new(models.Logs) desc := "添加管理员:" + username + "|^|管理员管理" logs.Save(admin_info, c.Controller, desc) } //***************************************** c.Flash.Success("添加管理员成功!") c.Flash.Out["url"] = "/Admin/" return c.Redirect("/Message/") } else { c.Flash.Error("添加管理员失败!") c.Flash.Out["url"] = "/Admin/Add/" return c.Redirect("/Message/") } } }
//登陆 func (c *User) Login(admin *models.Admin) revel.Result { if c.Request.Method == "GET" { title := "登陆--GoCMS管理系统" CaptchaId := captcha.NewLen(6) return c.Render(title, CaptchaId) } else { var username string = c.Params.Get("username") var password string = c.Params.Get("password") var captchaId string = c.Params.Get("captchaId") var verify string = c.Params.Get("verify") data := make(map[string]string) if LANG, ok := c.Session["Lang"]; ok { //设置语言 c.Request.Locale = LANG } else { //设置默认语言 c.Request.Locale = "zh" } if !captcha.VerifyString(captchaId, verify) { data["status"] = "0" data["url"] = "/" data["message"] = c.Message("verification_code") return c.RenderJson(data) } if len(username) <= 0 { data["status"] = "0" data["url"] = "/" data["message"] = c.Message("login_user_name") return c.RenderJson(data) } if len(password) <= 0 { data["status"] = "0" data["url"] = "/" data["message"] = c.Message("login_password") return c.RenderJson(data) } if len(verify) <= 0 { data["status"] = "0" data["url"] = "/" data["message"] = c.Message("login_verification_code") return c.RenderJson(data) } admin_info := admin.GetByName(username) if admin_info.Id <= 0 { data["status"] = "0" data["url"] = "/" data["message"] = c.Message("admin_username_error") } else if admin_info.Status == 0 && admin_info.Id != 1 { data["status"] = "0" data["url"] = "/" data["message"] = c.Message("admin_forbid_login") } else if admin_info.Role.Status == 0 && admin_info.Id != 1 { data["status"] = "0" data["url"] = "/" data["message"] = c.Message("admin_forbid_role_login") } else if username == admin_info.Username && utils.Md5(password) == admin_info.Password { /* * %% 印出百分比符号,不转换。 * %c 整数转成对应的 ASCII 字元。 * %d 整数转成十进位。 * %f 倍精确度数字转成浮点数。 * %o 整数转成八进位。 * %s 整数转成字符串。 * %x 整数转成小写十六进位。 * %X 整数转成大写十六进位 */ c.Session["UserID"] = fmt.Sprintf("%d", admin_info.Id) c.Session["Lang"] = admin_info.Lang c.Flash.Success(c.Message("login_success")) c.Flash.Out["url"] = "/" //更新登陆时间 if ip := c.Request.Header.Get("X-Forwarded-For"); ip != "" { ips := strings.Split(ip, ",") if len(ips) > 0 && ips[0] != "" { rip := strings.Split(ips[0], ":") admin.Lastloginip = rip[0] } } else { ip := strings.Split(c.Request.RemoteAddr, ":") if len(ip) > 0 { if ip[0] != "[" { admin.Lastloginip = ip[0] } } } admin.UpdateLoginTime(admin_info.Id) //****************************************** //管理员日志 logs := new(models.Logs) desc := "登陆用户名:" + admin_info.Username + "|^|登陆系统!|^|登陆ID:" + fmt.Sprintf("%d", admin_info.Id) logs.Save(admin_info, c.Controller, desc) //***************************************** data["status"] = "1" data["url"] = "/Message/" data["message"] = c.Message("login_success") } else { data["status"] = "0" data["url"] = "/" data["message"] = c.Message("login_password_error") } return c.RenderJson(data) } }