| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353 |
- package casbin
- import (
- "dashoo.cn/backend/api/business/organize"
- "dashoo.cn/business2/userRole"
- "dashoo.cn/business2/permission"
- "dashoo.cn/backend/api/models"
- "encoding/json"
- "strings"
- . "dashoo.cn/backend/api/controllers"
- "dashoo.cn/utils"
- )
- // Operations about Users
- type UserController struct {
- BaseController
- }
- type UserModel struct {
- Username string `json:"username"`
- Realname string `json:"realname"`
- Telephone string `json:"telephone"`
- Mobile string `json:"mobile"`
- Description string `json:"description"`
- Photo string `json:"photo"`
- Role string `json:"role"`
- Id int `json:"id"`
- ChannelIds string `json:"channelids"`
- Password string `json:"password"`
- DepartmentId string `json:"departmentid"`
- DepartmentName string `json:"departmentname"`
- Sign string `json:"sign"`
- }
- // @Title get
- // @Description get user by token
- // @Param uid path string true "The key for staticblock"
- // @Success 200 {object} models.User
- // @Failure 403 :uid is empty
- // @router /me [get]
- func (this *UserController) Get() {
- svc := userRole.GetUserService(utils.DBE)
- usermodel := svc.GetUserInfoSelf(this.User.Username)
- // var companyentity company.Base_Company
- // svc.GetEntityById(usermodel.AccCode, &companyentity)
- var user models.User
- user.Id = utils.ToStr(usermodel.Id)
- user.Username = usermodel.Username
- user.Profile.Address = usermodel.Homeaddress
- user.Profile.Email = usermodel.Email
- user.Profile.Realname = usermodel.Realname
- user.Profile.Roleid = usermodel.Roleid
- user.Profile.Mobile = usermodel.Mobile
- user.Profile.Telephone = usermodel.Telephone
- user.Profile.Photo = usermodel.Photo
- user.Profile.Description = usermodel.Description
- user.Profile.Host = this.Ctx.Request.Host
- user.Profile.AccCode = usermodel.AccCode
- user.Profile.DepartmentId = usermodel.Departmentid
- user.Profile.Id = usermodel.Id
- // todo 从this.User获取用户名,再查询出具体用户
- // user := models.User{"user01", "张三", models.Profile{Gender: "male", Age: 20, Address: "china", Email: "123zs@gmail.com", Realname: "ppppppp"}}
- this.Data["json"] = user
- this.ServeJSON()
- }
- // @Title 获取用户菜单权限
- // @Description 获取用户菜单权限
- // @Success 200 {object} controllers.Request
- // @router /getusermodule [get]
- func (this *UserController) GetUserModule() {
- //svc := permission.GetPermissionService(utils.DBE)
- //var model UserModuleModel
- //model.A1list = svc.GetModuleAllNamesByCode(this.User.Id, "A1")
- //model.A2list = svc.GetModuleAllNamesByCode(this.User.Id, "A2")
- //this.Data["json"] = model
- //this.ServeJSON()
- }
- // @Title 获取用户菜单权限
- // @Description 获取用户菜单权限
- // @Success 200 {object} controllers.Request
- // @router /getusermoduletree [get]
- func (this *UserController) GetUserModuleTree() {
- svc := permission.GetPermissionService(utils.DBE)
- list := svc.GetModuleAll(this.User.Id, "30000000")
- this.Data["json"] = list
- this.ServeJSON()
- }
- // @Title 获得用户角色id
- // @Description 获得用户角色id
- // @Success 200 {object} controllers.Request
- // @router /getuserrole/:id [get]
- func (this *UserController) UserPowerCheckRole() {
- userid := this.Ctx.Input.Param(":id")
- roleofuser := utils.RBAC.GetRolesForUser("uid_" + userid)
- for i := 0; i < len(roleofuser); i++ {
- roleofuser[i] = strings.Replace(roleofuser[i], "rid_", "", 1)
- }
- this.Data["json"] = &roleofuser
- this.ServeJSON()
- }
- // @Title get
- // @Description get user by token
- // @Success 200 {object} models.User
- // @router /list [get]
- func (this *UserController) List() {
- page := this.GetPageInfoForm()
- keyword := this.GetString("keyword")
- svc := permission.GetPermissionService(utils.DBE)
- var users []userRole.Base_User
- where := "IsVisible=1 and CreateUserId='" + utils.ToStr(this.User.Id) + "' or Id = '" + utils.ToStr(this.User.Id) + "' "
- if keyword != "" {
- where = where + " and Realname like '%" + keyword + "%'"
- }
- total := svc.GetPagingEntitiesWithOrder(page.CurrentPage, page.Size, "Id", false, &users, where)
- var datainfo DataInfo
- datainfo.Items = users
- datainfo.CurrentItemCount = total
- this.Data["json"] = &datainfo
- this.ServeJSON()
- }
- // @Title 用户角色设置
- // @Description 用户角色设置
- // @Success 200 {object} controllers.Request
- // @router /setuserrole/:id [put]
- func (this *UserController) UserPowerPostRole() {
- inputstr := this.Ctx.Input.Param(":id")
- serial := strings.Split(inputstr, "_")
- userid := serial[0]
- var errinfo ErrorInfo
- if userid == "" || userid == "0" {
- errinfo.Message = "操作失败!请求信息不完整"
- errinfo.Code = -2
- this.Data["json"] = &errinfo
- this.ServeJSON()
- return
- }
- roleids := strings.Split(serial[1], ",")
- utils.RBAC.DeleteRolesForUser("uid_" + userid)
- var err error = nil
- for i := 0; i < len(roleids); i++ {
- if roleids[i] != "0" && roleids[i] != "" {
- //err = svc.AddUserToRole(userid, roleids[i], entity[0])
- utils.RBAC.AddRoleForUserInDomain("uid_"+userid, "rid_"+roleids[i], utils.DOMAIN)
- }
- }
- if err == nil {
- errinfo.Message = utils.AlertProcess("用户角色调整成功!")
- errinfo.Code = 0
- this.Data["json"] = &errinfo
- this.ServeJSON()
- } else {
- errinfo.Message = utils.AlertProcess("用户角色调整失败!" + err.Error())
- errinfo.Code = -1
- this.Data["json"] = &errinfo
- this.ServeJSON()
- }
- }
- // @Title 创建用户
- // @Description 创建用户
- // @Param body body business.device.DeviceChannels "传感器信息"
- // @Success 200 {object} controllers.Request
- // @router / [post]
- func (this *UserController) AddUser() {
- /*var model UserModel
- var jsonblob = this.Ctx.Input.RequestBody
- json.Unmarshal(jsonblob, &model)
- var errinfo ErrorDataInfo
- departidint, _ := utils.StrTo(model.DepartmentId).Int()
- if departidint < 1 {
- errinfo.Message = "请选择所属组织!"
- errinfo.Code = -3
- this.Data["json"] = &errinfo
- this.ServeJSON()
- return
- }
- //获取组织名称
- svcorg := organize.GetOrganizeService(utils.DBE)
- model.DepartmentName = svcorg.GetNameById(model.DepartmentId)
- var userentity userRole.Base_User
- userentity.Roleid, _ = utils.StrTo(model.Role).Int()
- if userentity.Roleid == 0 {
- //userentity.Roleid = 10000123 //普通用户
- }
- userentity.Username = model.Username
- userentity.Realname = model.Realname
- userentity.Telephone = model.Telephone
- userentity.Mobile = model.Mobile
- if model.Sign == "" {
- userentity.Description = model.Description
- } else {
- userentity.Description = model.Sign
- }
- userentity.Photo = model.Photo
- currentuser := this.User
- userentity.Createuserid, _ = utils.StrTo(currentuser.Id).Int()
- userentity.Createby = currentuser.Realname
- userentity.AccCode = this.GetAccode()
- userentity.QRCode = utils.GetGuid()
- userentity.Departmentid = model.DepartmentId
- userentity.Departmentname = model.DepartmentName
- //salt := utils.GetRandomString(5)
- //userentity.Userpassword = fmt.Sprintf("%s$%s", salt, utils.EncodePassword("123456", salt))
- //更改密码算法2014-11-21
- pwd, key, errrk := utils.TripleDesEncrypt("123456")
- if errrk != nil {
- errinfo.Message = "添加失败!" + utils.AlertProcess(errrk.Error())
- errinfo.Code = -2
- this.Data["json"] = &errinfo
- this.ServeJSON()
- return
- }
- userentity.Userpassword = pwd
- userentity.Publickey = key
- userentity.Auditstatus = 1
- userentity.Email = userentity.Username
- svc := userRole.GetUserService(utils.DBE)
- err := svc.AddUser(&userentity)
- if err == nil {
- errinfo.Message = "添加用户成功,初始密码为123456!"
- errinfo.Code = 0
- errinfo.Item = userentity.Id
- this.Data["json"] = &errinfo
- this.ServeJSON()
- return
- } else {
- errinfo.Message = "添加失败!" + utils.AlertProcess(err.Error())
- errinfo.Code = -1
- this.Data["json"] = &errinfo
- this.ServeJSON()
- return
- }*/
- }
- // @Title 编辑用户
- // @Description 编辑用户
- // @Param id path string true "需要修改的传感器编号"
- // @Param body body business.device.DeviceChannels "传感器信息"
- // @Success 200 {object} controllers.Request
- // @router /:id [put]
- func (this *UserController) EditUser() {
- id := this.Ctx.Input.Param(":id")
- var errinfo ErrorInfo
- if id == "" {
- errinfo.Message = "操作失败!请求信息不完整"
- errinfo.Code = -2
- this.Data["json"] = &errinfo
- this.ServeJSON()
- return
- }
- var model UserModel
- var jsonblob = this.Ctx.Input.RequestBody
- json.Unmarshal(jsonblob, &model)
- var userentity userRole.Base_User
- var userentityempty userRole.Base_User
- svc := userRole.GetUserService(utils.DBE)
- has := svc.GetEntityById(id, &userentity)
- if has {
- //获取组织名称
- svcorg := organize.GetOrganizeService(utils.DBE)
- model.DepartmentName = svcorg.GetNameById(model.DepartmentId)
- // roleid, _ := utils.StrTo(model.Role).Int()
- // if userentity.Roleid != roleid {
- // svc.ClearUserRole(id)
- // svc.AddUserToRole(id, model.Role, userentity)
- // }
- userentity.Realname = model.Realname
- userentity.Telephone = model.Telephone
- userentity.Mobile = model.Mobile
- if model.Sign == "" {
- userentity.Description = model.Description
- } else {
- userentity.Description = model.Sign
- }
- userentity.Photo = model.Photo
- // userentity.Roleid = roleid
- userentity.Modifieduserid, _ = utils.StrTo(this.User.Id).Int()
- userentity.Modifiedby = this.User.Realname
- userentity.Departmentid = model.DepartmentId
- userentity.Departmentname = model.DepartmentName
- var cols []string = []string{"Realname", "DepartmentId", "DepartmentName", "Telephone", "Mobile", "Description", "Photo", "Modifieduserid", "Modifiedby"}
- err := svc.UpdateEntityAndBackupByCols(id, &userentity, &userentityempty, cols, utils.ToStr(this.User.Id), this.User.Realname)
- if err == nil {
- errinfo.Message = "保存成功!"
- errinfo.Code = 0
- this.Data["json"] = &errinfo
- this.ServeJSON()
- } else {
- errinfo.Message = "操作失败!" + utils.AlertProcess(err.Error())
- errinfo.Code = -1
- this.Data["json"] = &errinfo
- this.ServeJSON()
- }
- } else {
- errinfo.Message = "操作失败!操作数据不存在"
- errinfo.Code = -3
- this.Data["json"] = &errinfo
- this.ServeJSON()
- return
- }
- }
- // @Title 删除用户
- // @Description 删除用户
- // @Param id path string true "需要删除的用户编号"
- // @Success 200 {object} ErrorInfo
- // @Failure 403 :id 为空
- // @router /:id [delete]
- func (this *UserController) Delete() {
- id := this.Ctx.Input.Param(":id")
- var errinfo ErrorInfo
- if id == "" {
- errinfo.Message = "操作失败!请求信息不完整"
- errinfo.Code = -2
- this.Data["json"] = &errinfo
- this.ServeJSON()
- return
- }
- var entity userRole.Base_User
- var entityempty userRole.Base_User
- svc := userRole.GetUserService(utils.DBE)
- err := svc.DeleteEntityAndBackup(id, &entity, &entityempty, utils.ToStr(this.User.Id), this.User.Username)
- if err == nil {
- svc.ClearUserRole(id) //清除角色
- errinfo.Message = "删除成功"
- errinfo.Code = 0
- this.Data["json"] = &errinfo
- this.ServeJSON()
- } else {
- errinfo.Message = "删除失败!" + utils.AlertProcess(err.Error())
- errinfo.Code = -1
- this.Data["json"] = &errinfo
- this.ServeJSON()
- }
- }
|