mirror of https://github.com/IoTcat/auxpi.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
3.4 KiB
139 lines
3.4 KiB
// Copyright (c) 2019 aimerforreimu. All Rights Reserved. |
|
// Use of this source code is governed by a BSD-style |
|
// license that can be found in the LICENSE file. |
|
// |
|
// GNU GENERAL PUBLIC LICENSE |
|
// Version 3, 29 June 2007 |
|
// |
|
// Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> |
|
// Everyone is permitted to copy and distribute verbatim copies |
|
// of this license document, but changing it is not allowed. |
|
// |
|
// repo: https://github.com/aimerforreimu/auxpi |
|
|
|
package controllers |
|
|
|
import ( |
|
"strconv" |
|
|
|
"github.com/auxpi/auxpiAll" |
|
"github.com/auxpi/auxpiAll/e" |
|
"github.com/auxpi/bootstrap" |
|
"github.com/auxpi/log" |
|
"github.com/auxpi/models" |
|
"github.com/auxpi/utils" |
|
|
|
"github.com/astaxie/beego" |
|
"github.com/astaxie/beego/validation" |
|
) |
|
|
|
type UsersController struct { |
|
beego.Controller |
|
} |
|
|
|
func (u *UsersController) commonStyle() { |
|
u.LayoutSections = make(map[string]string) |
|
u.LayoutSections["Script"] = "user/user_script.tpl" |
|
u.LayoutSections["Header"] = "user/user_header.tpl" |
|
u.LayoutSections["SiderBar"] = "user/user_sider_bar.tpl" |
|
u.LayoutSections["Content"] = "user/content/images.tpl" |
|
u.Data["xsrf_token"] = u.XSRFToken() |
|
r, _ := u.Ctx.GetSecureCookie(bootstrap.SiteConfig.AuxpiSalt, "r") |
|
if r == "admin" { |
|
u.Data["IsAdmin"] = true |
|
} |
|
} |
|
|
|
func (u *UsersController) Show() { |
|
u.commonStyle() |
|
uname, _ := u.Ctx.GetSecureCookie(bootstrap.SiteConfig.AuxpiSalt, "uname") |
|
page, size := utils.GetStringPage(u.Input().Get("page"), u.Input().Get("limit")) |
|
user, images, count := models.GetUserImagesByUserName(uname, size, page) |
|
tPage, _ := strconv.Atoi(u.Input().Get("page")) |
|
|
|
tplPage := utils.PageHtml(tPage, count, size) |
|
u.Data["User"] = &user |
|
u.Data["Images"] = &images |
|
u.Data["Page"] = tplPage |
|
|
|
u.Layout = "user/user_app.tpl" |
|
u.TplName = "user/user_app.tpl" |
|
} |
|
|
|
func (u *UsersController) Edit() { |
|
u.commonStyle() |
|
u.LayoutSections["Content"] = "user/content/edit.tpl" |
|
uname, _ := u.Ctx.GetSecureCookie(bootstrap.SiteConfig.AuxpiSalt, "uname") |
|
user := models.GetUserInfo(uname) |
|
|
|
u.Data["User"] = user |
|
|
|
u.Layout = "user/user_app.tpl" |
|
u.TplName = "user/user_app.tpl" |
|
} |
|
|
|
type UserResetPass struct { |
|
OldPass string `form:"old_password" valid:"Required;MinSize(6);MaxSize(32)"` |
|
NewPass string `form:"new_password" valid:"Required;MinSize(6);MaxSize(32)"` |
|
RePass string `form:"re_password" valid:"Required;MinSize(6);MaxSize(32)"` |
|
} |
|
|
|
//重置密码 |
|
func (u *UsersController) ResetPass() { |
|
uid, _ := strconv.Atoi(u.Ctx.Input.Param(":id")) |
|
passInfo := &UserResetPass{} |
|
if err := u.ParseForm(passInfo); err != nil { |
|
auxpiLog.SetAWarningLog("USER_LOGIN", err) |
|
u.ajaxErrorResp() |
|
return |
|
} |
|
valid := validation.Validation{} |
|
ok, _ := valid.Valid(passInfo) |
|
if !ok { |
|
u.ajaxErrorResp() |
|
return |
|
} |
|
|
|
if passInfo.RePass != passInfo.NewPass { |
|
u.Data["json"] = &auxpi.RespJson{ |
|
Code: 200, |
|
Msg: "两次密码不一致", |
|
} |
|
u.ServeJSON() |
|
return |
|
} |
|
|
|
ok = models.ResetUserPassWithOld(uid, |
|
utils.GetSha256CodeWithSalt(passInfo.OldPass), |
|
utils.GetSha256CodeWithSalt(passInfo.NewPass)) |
|
|
|
if !ok { |
|
u.Data["json"] = &auxpi.RespJson{ |
|
Code: 500, |
|
Msg: e.GetMsg(500), |
|
} |
|
u.ServeJSON() |
|
return |
|
} |
|
|
|
u.Data["json"] = &auxpi.RespJson{ |
|
Code: 200, |
|
Msg: "修改成功", |
|
} |
|
u.ServeJSON() |
|
return |
|
|
|
} |
|
|
|
//ajax 错误相应封装 |
|
func (u *UsersController) ajaxErrorResp() bool { |
|
if u.IsAjax() { |
|
u.Data["json"] = &auxpi.RespJson{ |
|
Code: e.INVALID_PARAMS, |
|
Msg: e.GetMsg(e.INVALID_PARAMS), |
|
} |
|
u.ServeJSON() |
|
return false |
|
} |
|
return true |
|
}
|
|
|