// 将所有 角色拥有的权限 加载到内存中;后台修改时,重新加载一次 func LoadRoleAuthorities() error { roleAuthorities, err := model.NewRoleAuthority().FindAll() if err != nil { logger.Errorln("LoadRoleAuthorities role_authority read fail:", err) return err } roleAuthLocker.Lock() defer roleAuthLocker.Unlock() RoleAuthorities = make(map[int][]int) for _, roleAuth := range roleAuthorities { roleId := roleAuth.Roleid if authorities, ok := RoleAuthorities[roleId]; ok { RoleAuthorities[roleId] = append(authorities, roleAuth.Aid) } else { RoleAuthorities[roleId] = []int{roleAuth.Aid} } } logger.Infoln("LoadRoleAuthorities successfully!") return nil }
func DelRole(roleid string) error { err := model.NewRole().Where("roleid=" + roleid).Delete() model.NewRoleAuthority().Where("roleid=" + roleid).Delete() global.RoleChan <- struct{}{} global.RoleAuthChan <- struct{}{} return err }
func SaveRole(form url.Values, opUser string) (errMsg string, err error) { role := model.NewRole() role.Name = form.Get("name") role.OpUser = opUser roleid := form.Get("roleid") isNew := roleid == "" if isNew { role.Ctime = util.TimeNow() _, err = role.Insert() } else { role.Roleid, err = strconv.Atoi(roleid) if err != nil { errMsg = "roleid invalid" logger.Errorln(errMsg, ":", err) return } err = role.Persist(role) } if err != nil { errMsg = "内部服务器错误" logger.Errorln(errMsg, ":", err) return } roleAuth := model.NewRoleAuthority() if !isNew { // 如果是更新角色,将之前的角色权限都删除 roleAuth.Where("roleid=" + strconv.Itoa(role.Roleid)).Delete() } roleAuth.Roleid = role.Roleid roleAuth.OpUser = opUser // 增加角色拥有的权限 for _, aid := range form["authorities[]"] { aid, err := strconv.Atoi(aid) if err != nil { continue } roleAuth.Aid = aid roleAuth.Insert() } global.RoleChan <- struct{}{} global.RoleAuthChan <- struct{}{} return }