/
casbinplug.go
53 lines (44 loc) · 1.53 KB
/
casbinplug.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package casbinplug
import (
"github.com/bodhi369/echoatom/pkg/utl/schemago"
"github.com/casbin/casbin/model"
"github.com/casbin/casbin/persist"
"github.com/jinzhu/gorm"
)
// LoadRoleMenuPolicy 加载角色对应权限 p
func LoadRoleMenuPolicy(db *gorm.DB, sRoleMenu *schemago.SRoleMenu, model model.Model) error {
var respRoleMenu = sRoleMenu.ToRespondRoleMenu()
menuResource := make([]schemago.SMenuResource, 0)
if err := db.Where("menuid = ? and code in (?)", respRoleMenu.Menuid, respRoleMenu.Resources).Find(&menuResource).Error; err != nil {
return err
}
for _, item := range menuResource {
var lineText = "p, " + sRoleMenu.Roleid + ", " + item.Path + ", " + item.Method
persist.LoadPolicyLine(lineText, model)
}
return nil
}
// RemoveRoleMenuPolicy 清掉角色权限 p
func RemoveRoleMenuPolicy(roleid string, model model.Model) error {
//清掉角色权限
model.RemoveFilteredPolicy("p", "p", 0, roleid)
return nil
}
// LoadUserRoleGroup 加载用户对应角色 g
func LoadUserRoleGroup(db *gorm.DB, userid string, model model.Model) error {
userRoles := make([]schemago.SUserRole, 0)
if err := db.Where("userid = ?", userid).Find(&userRoles).Error; err != nil {
return err
}
for _, item := range userRoles {
var lineText = "g, " + item.Userid + ", " + item.Roleid
persist.LoadPolicyLine(lineText, model)
}
return nil
}
// RemoveUserRoleGroup 用户角色 g
func RemoveUserRoleGroup(userid string, model model.Model) error {
//清掉角色权限
model.RemoveFilteredPolicy("g", "g", 0, userid)
return nil
}