|
@@ -2,6 +2,7 @@ package front
|
|
|
|
|
|
import (
|
|
|
qu "qfw/util"
|
|
|
+ "strconv"
|
|
|
"time"
|
|
|
|
|
|
. "../util"
|
|
@@ -10,6 +11,11 @@ import (
|
|
|
"gopkg.in/mgo.v2/bson"
|
|
|
)
|
|
|
|
|
|
+var UserMenu map[string][]map[string]interface{} //存储菜单
|
|
|
+func init() {
|
|
|
+ UserMenu = make(map[string][]map[string]interface{})
|
|
|
+}
|
|
|
+
|
|
|
type Front struct {
|
|
|
*xweb.Action
|
|
|
login xweb.Mapper `xweb:"/"` //登录页面
|
|
@@ -27,15 +33,15 @@ type Front struct {
|
|
|
menuSecond xweb.Mapper `xweb:"/front/menuSecond"` //查二级菜单
|
|
|
menuSecondSave xweb.Mapper `xweb:"/front/menuSecond/save"` //保存二级菜单
|
|
|
menuSecondDel xweb.Mapper `xweb:"/front/menuSecond/del"` //删除二级菜单
|
|
|
-
|
|
|
- roleManager xweb.Mapper `xweb:"/front/role"` //角色权限管理
|
|
|
- roleEdit xweb.Mapper `xweb:"/front/role/edit/(.*)"` //角色权限查看
|
|
|
- roleFirst xweb.Mapper `xweb:"/front/role/first"` //一级权限的查看
|
|
|
- roleSecond xweb.Mapper `xweb:"/front/role/second"` //二级权限的查看
|
|
|
- roleSave xweb.Mapper `xweb:"/front/role/edit/save"` //权限编辑保存
|
|
|
- roleDel xweb.Mapper `xweb:"/front/role/edit/del"` //权限编辑删除
|
|
|
- roleSecondEdit xweb.Mapper `xweb:"/front/role/second/edit"`//二级权限编辑
|
|
|
-
|
|
|
+ personalMenu xweb.Mapper `xweb:"/front/personalMenu"`
|
|
|
+ //role
|
|
|
+ roleManager xweb.Mapper `xweb:"/front/role"` //角色权限管理
|
|
|
+ roleEdit xweb.Mapper `xweb:"/front/role/edit/(.*)"` //角色权限查看
|
|
|
+ roleFirst xweb.Mapper `xweb:"/front/role/first"` //一级权限的查看
|
|
|
+ roleSecond xweb.Mapper `xweb:"/front/role/second"` //二级权限的查看
|
|
|
+ roleSave xweb.Mapper `xweb:"/front/role/edit/save"` //权限编辑保存
|
|
|
+ roleDel xweb.Mapper `xweb:"/front/role/edit/del"` //权限编辑删除
|
|
|
+ roleSecondEdit xweb.Mapper `xweb:"/front/role/second/edit"` //二级权限编辑
|
|
|
|
|
|
}
|
|
|
|
|
@@ -52,7 +58,7 @@ func (f *Front) Login() {
|
|
|
}
|
|
|
user, _ := Mgo.FindOne("user", query)
|
|
|
checked := false
|
|
|
- if (*user) != nil {
|
|
|
+ if user != nil && len(*user) > 0 {
|
|
|
checked = true
|
|
|
f.SetSession("user", map[string]interface{}{
|
|
|
"name": (*user)["s_name"],
|
|
@@ -61,6 +67,7 @@ func (f *Front) Login() {
|
|
|
"email": email,
|
|
|
"id": qu.BsonIdToSId((*user)["_id"]),
|
|
|
})
|
|
|
+ UserMenu[email] = GetUserMenu(qu.ObjToString((*user)["s_role"]))
|
|
|
}
|
|
|
f.ServeJson(map[string]interface{}{
|
|
|
"checked": checked,
|
|
@@ -101,7 +108,12 @@ func (f *Front) UpdatePwd() {
|
|
|
func (f *Front) User() {
|
|
|
defer qu.Catch()
|
|
|
if f.Method() == "POST" {
|
|
|
- data, _ := Mgo.Find("user", nil, `{"_id":1}`, nil, false, -1, -1)
|
|
|
+ query := bson.M{
|
|
|
+ "s_role": bson.M{
|
|
|
+ "$ne": "0",
|
|
|
+ },
|
|
|
+ }
|
|
|
+ data, _ := Mgo.Find("user", query, `{"_id":1}`, nil, false, -1, -1)
|
|
|
for _, d := range *data {
|
|
|
d["s_pwd"] = qu.SE.DecodeString(qu.ObjToString(d["s_pwd"]))
|
|
|
}
|
|
@@ -155,3 +167,47 @@ func (f *Front) UserSave() {
|
|
|
"rep": b,
|
|
|
})
|
|
|
}
|
|
|
+
|
|
|
+func (f *Front) PersonalMenu() {
|
|
|
+ user := f.GetSession("user").(map[string]interface{})
|
|
|
+ list := UserMenu[qu.ObjToString(user["email"])]
|
|
|
+ f.ServeJson(map[string]interface{}{
|
|
|
+ "data": list,
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+func GetUserMenu(role string) []map[string]interface{} {
|
|
|
+ list := []map[string]interface{}{}
|
|
|
+ maps := map[string]interface{}{}
|
|
|
+ if role == "0" {
|
|
|
+ maps = map[string]interface{}{}
|
|
|
+ } else {
|
|
|
+ maps = map[string]interface{}{
|
|
|
+ "role." + role: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ data, _ := Mgo.Find("menu_first", maps, nil, nil, false, -1, -1)
|
|
|
+ for _, d := range *data {
|
|
|
+ _id := d["_id"]
|
|
|
+ if role == "0" {
|
|
|
+ maps = map[string]interface{}{
|
|
|
+ "s_pid": qu.BsonIdToSId(_id),
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ maps = map[string]interface{}{
|
|
|
+ "role." + role: true,
|
|
|
+ "s_pid": qu.BsonIdToSId(_id),
|
|
|
+ }
|
|
|
+ }
|
|
|
+ secdatas, _ := Mgo.Find("menu_second", maps, nil, nil, false, -1, -1)
|
|
|
+ secmenumap := map[string]interface{}{}
|
|
|
+ for index, secdata := range *secdatas {
|
|
|
+ secmenumap[strconv.Itoa(index+1)] = secdata
|
|
|
+ }
|
|
|
+ if len(secmenumap) != 0 {
|
|
|
+ d["secondmenu"] = secmenumap
|
|
|
+ }
|
|
|
+ list = append(list, d)
|
|
|
+ }
|
|
|
+ return list
|
|
|
+}
|