123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- package controllers
- import (
- "fmt"
- "time"
- "github.com/astaxie/beego"
- "box-gm/models"
- "box-gm/utils"
- )
- type UserController struct {
- beego.Controller
- }
- func TimeToStr(t int64) string {
- return time.Unix(t, 0).Format("2006-01-02 15:04:05")
- }
- func StrToTime(str string) int64 {
- loc, _ := time.LoadLocation("Local")
- theTime, err := time.ParseInLocation("2006-01-02 15:04:05", str, loc)
- if err == nil {
- return theTime.Unix()
- } else {
- return 0
- }
- }
- func (c *UserController) Get() {
- userinfo := c.GetSession("user")
- if userinfo == nil {
- c.Ctx.Redirect(302, "/accountlogin")
- return
- }
- c.Data["username"] = userinfo.(*LoginInfo).Username
- c.Data["token"] = models.GetToken()
- userPermission := models.GetPermission(userinfo.(*LoginInfo).Username)
- if (userPermission & (1 << uint(models.ModelUser))) == 0 {
- c.Ctx.Redirect(302, "/index")
- return
- }
- users, _ := models.GetUserlist()
- permissions, _ := models.GetRolelist()
- c.Data["users"] = users
- c.Data["permissions"] = permissions
- c.Data["token"] = models.GetToken()
- c.TplName = "user.tpl"
- }
- func (c *UserController) Post() {
- if !models.CheckToken(c.GetString("token")) {
- c.Data["json"] = &map[string]interface{}{"status": false, "info": "操作失败,请重新刷新界面"}
- c.ServeJSON()
- return
- }
- userinfo := c.GetSession("user")
- if userinfo == nil {
- c.Ctx.Redirect(302, "/accountlogin")
- return
- }
- if !models.CheckPermission(userinfo.(*LoginInfo).Username, models.ModelUser) {
- c.Data["json"] = &map[string]interface{}{"status": false, "info": "没有操作权限"}
- c.ServeJSON()
- return
- }
- username := c.GetString("username")
- user := models.GetUserByUsername(username)
- if user != nil {
- c.Data["json"] = &map[string]interface{}{"status": false, "info": "用户已存在"}
- c.ServeJSON()
- return
- }
- u := new(models.User)
- u.Username = c.GetString("username")
- permission, _ := c.GetInt64("permission")
- u.Role = permission
- u.Password = utils.Strtomd5(c.GetString("password"))
- u.CreateTs = time.Now().Unix()
- u.LastLoginTs = time.Now().Unix()
- _, err := models.AddUser(u)
- if err != nil {
- c.Data["json"] = &map[string]interface{}{"status": false, "info": err}
- c.ServeJSON()
- return
- }
- c.Data["json"] = &map[string]interface{}{"status": true, "info": "创建用户成功"}
- c.ServeJSON()
- go models.SaveLog(username, "创建用户", &map[string]interface{}{"username": u.Username, "permission": permission})
- }
- func (c *UserController) Put() {
- if !models.CheckToken(c.GetString("token")) {
- c.Data["json"] = &map[string]interface{}{"status": false, "info": "操作失败,请重新刷新界面"}
- c.ServeJSON()
- return
- }
- userinfo := c.GetSession("user")
- if userinfo == nil {
- c.Ctx.Redirect(302, "/accountlogin")
- return
- }
- if !models.CheckPermission(userinfo.(*LoginInfo).Username, models.ModelUser) {
- c.Data["json"] = &map[string]interface{}{"status": false, "info": "没有操作权限"}
- c.ServeJSON()
- return
- }
- id, _ := c.GetInt64("id")
- user := models.GetUserById(id)
- if user == nil {
- c.Data["json"] = &map[string]interface{}{"status": false, "info": "用户不存在"}
- c.ServeJSON()
- return
- }
- username := c.GetString("username")
- nUser := models.GetUserByUsername(username)
- if nUser != nil && nUser.Id != id {
- c.Data["json"] = &map[string]interface{}{"status": false, "info": fmt.Sprintf("用户[%s]已存在", username)}
- c.ServeJSON()
- return
- }
- password := c.GetString("password")
- if password != user.Password {
- password = utils.Strtomd5(password)
- }
- u := new(models.User)
- u.Id = user.Id
- u.Username = c.GetString("username")
- permission, _ := c.GetInt64("permission")
- u.Role = permission
- u.Password = password
- _, err := models.UpdateUser(u)
- if err != nil {
- c.Data["json"] = &map[string]interface{}{"status": false, "info": err}
- c.ServeJSON()
- return
- }
- c.Data["json"] = &map[string]interface{}{"status": true, "info": "更新用户成功"}
- c.ServeJSON()
- go models.SaveLog(userinfo.(*LoginInfo).Username, "修改用户", &map[string]interface{}{"username": u.Username, "permission": permission})
- }
- func (c *UserController) Delete() {
- if !models.CheckToken(c.GetString("token")) {
- c.Data["json"] = &map[string]interface{}{"status": false, "info": "操作失败,请重新刷新界面"}
- c.ServeJSON()
- return
- }
- userinfo := c.GetSession("user")
- if userinfo == nil {
- c.Ctx.Redirect(302, "/accountlogin")
- return
- }
- if !models.CheckPermission(userinfo.(*LoginInfo).Username, models.ModelUser) {
- c.Data["json"] = &map[string]interface{}{"status": false, "info": "没有操作权限"}
- c.ServeJSON()
- return
- }
-
- id, _ := c.GetInt64("id")
- user := models.GetUserById(id)
- if user == nil {
- c.Data["json"] = &map[string]interface{}{"status": false, "info": fmt.Sprintf("用户[%d]不存在", id)}
- c.ServeJSON()
- return
- }
- models.DelUserById(id)
- c.Data["json"] = &map[string]interface{}{"status": true, "info": "删除用户成功"}
- c.ServeJSON()
- go models.SaveLog(userinfo.(*LoginInfo).Username, "删除用户", &map[string]interface{}{"usernames": user.Username})
- }
|