Skip to content

Commit

Permalink
Use casbin version 2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
LyricTian committed Nov 7, 2019
1 parent 42d19f1 commit 0f6c027
Show file tree
Hide file tree
Showing 51 changed files with 712 additions and 601 deletions.
4 changes: 3 additions & 1 deletion configs/config.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ data = ""
# casbin配置
[casbin]
# 是否启用casbin
enable = false
enable = true
# debug模式
debug = false
# 模型配置文件(也可以启动服务时使用-m指定)
model = ""
# 是否启用定期自动加载策略
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ require (
github.com/LyricTian/captcha v0.0.0-20190614104510-11aff818cbf4
github.com/LyricTian/queue v0.0.0-20180917141405-8f19abe7fd77
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751
github.com/casbin/casbin v1.9.1
github.com/casbin/casbin/v2 v2.1.0
github.com/denisenkom/go-mssqldb v0.0.0-20191001013358-cfbb681360f0 // indirect
github.com/dgrijalva/jwt-go v0.0.0-20180719211823-0b96aaa70776
github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5 // indirect
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdko
github.com/StackExchange/wmi v0.0.0-20170410192909-ea383cf3ba6e/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/casbin/casbin v1.9.1 h1:ucjbS5zTrmSLtH4XogqOG920Poe6QatdXtz1FEbApeM=
github.com/casbin/casbin v1.9.1/go.mod h1:z8uPsfBJGUsnkagrt3G8QvjgTKFMBJ32UP8HpZllfog=
github.com/casbin/casbin/v2 v2.1.0 h1:FqE47qR7PNFrhh/mQFRqlXWdAM0lObvn/cl8ydyxi1c=
github.com/casbin/casbin/v2 v2.1.0/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
Expand Down
2 changes: 1 addition & 1 deletion internal/app/bll/impl/internal/b_role.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"github.com/LyricTian/gin-admin/internal/app/model"
"github.com/LyricTian/gin-admin/internal/app/schema"
"github.com/LyricTian/gin-admin/pkg/util"
"github.com/casbin/casbin"
"github.com/casbin/casbin/v2"
)

// NewRole 创建角色管理实例
Expand Down
2 changes: 1 addition & 1 deletion internal/app/bll/impl/internal/b_user.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"github.com/LyricTian/gin-admin/internal/app/model"
"github.com/LyricTian/gin-admin/internal/app/schema"
"github.com/LyricTian/gin-admin/pkg/util"
"github.com/casbin/casbin"
"github.com/casbin/casbin/v2"
)

// NewUser 创建菜单管理实例
Expand Down
43 changes: 29 additions & 14 deletions internal/app/casbin.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@ package app

import (
"context"
"strings"
"fmt"
"time"

"github.com/LyricTian/gin-admin/internal/app/bll"
"github.com/LyricTian/gin-admin/internal/app/config"
"github.com/LyricTian/gin-admin/internal/app/schema"
"github.com/LyricTian/gin-admin/pkg/logger"
"github.com/casbin/casbin"
"github.com/casbin/casbin/model"
"github.com/casbin/casbin/persist"
"github.com/casbin/casbin/v2"
"github.com/casbin/casbin/v2/model"
"github.com/casbin/casbin/v2/persist"
"go.uber.org/dig"
)

Expand All @@ -21,7 +21,17 @@ func NewCasbinEnforcer() *casbin.SyncedEnforcer {
if !cfg.Enable {
return nil
}
return casbin.NewSyncedEnforcer(cfg.Model)

e, err := casbin.NewSyncedEnforcer(cfg.Model)
handleError(err)

e.EnableAutoSave(false)
e.EnableAutoBuildRoleLinks(true)

if cfg.Debug {
e.EnableLog(true)
}
return e
}

// InitCasbinEnforcer 初始化casbin校验器
Expand All @@ -44,6 +54,11 @@ func InitCasbinEnforcer(container *dig.Container) error {
}
}

err := e.BuildRoleLinks()
if err != nil {
return err
}

return nil
})
}
Expand Down Expand Up @@ -106,12 +121,14 @@ func (a *CasbinAdapter) loadRolePolicy(ctx context.Context, model model.Model) e
return err
}

var lines []string
lines = append(lines, "p", item.RecordID)
for _, ritem := range resources {
lines = append(lines, ritem.Path, ritem.Method)
if ritem.Path == "" || ritem.Method == "" {
continue
}

line := fmt.Sprintf("p,%s,%s,%s", item.RecordID, ritem.Path, ritem.Method)
persist.LoadPolicyLine(line, model)
}
persist.LoadPolicyLine(strings.Join(lines, ","), model)
}

return nil
Expand All @@ -126,14 +143,12 @@ func (a *CasbinAdapter) loadUserPolicy(ctx context.Context, model model.Model) e
}

for _, item := range result.Data {
var lines []string
lines = append(lines, "g", item.RecordID)

for _, roleID := range item.Roles.ToRoleIDs() {
lines = append(lines, roleID)
line := fmt.Sprintf("g,%s,%s", item.RecordID, roleID)
persist.LoadPolicyLine(line, model)
}
persist.LoadPolicyLine(strings.Join(lines, ","), model)
}

return nil
}

Expand Down
1 change: 1 addition & 0 deletions internal/app/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ type Menu struct {
// Casbin casbin配置参数
type Casbin struct {
Enable bool `toml:"enable"`
Debug bool `toml:"debug"`
Model string `toml:"model"`
AutoLoad bool `toml:"auto_load"`
AutoLoadInternal int `toml:"auto_load_internal"`
Expand Down
4 changes: 2 additions & 2 deletions internal/app/middleware/mw_casbin.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"github.com/LyricTian/gin-admin/internal/app/config"
"github.com/LyricTian/gin-admin/internal/app/errors"
"github.com/LyricTian/gin-admin/internal/app/ginplus"
"github.com/casbin/casbin"
"github.com/casbin/casbin/v2"
"github.com/gin-gonic/gin"
)

Expand All @@ -23,7 +23,7 @@ func CasbinMiddleware(enforcer *casbin.SyncedEnforcer, skippers ...SkipperFunc)

p := c.Request.URL.Path
m := c.Request.Method
if b, err := enforcer.EnforceSafe(ginplus.GetUserID(c), p, m); err != nil {
if b, err := enforcer.Enforce(ginplus.GetUserID(c), p, m); err != nil {
ginplus.ResError(c, errors.WithStack(err))
return
} else if !b {
Expand Down
2 changes: 1 addition & 1 deletion internal/app/routers/api/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"github.com/LyricTian/gin-admin/internal/app/middleware"
"github.com/LyricTian/gin-admin/internal/app/routers/api/ctl"
"github.com/LyricTian/gin-admin/pkg/auth"
"github.com/casbin/casbin"
"github.com/casbin/casbin/v2"
"github.com/gin-gonic/gin"
"go.uber.org/dig"
)
Expand Down
3 changes: 2 additions & 1 deletion internal/app/test/t_init_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ func init() {

cfg := config.Global()
cfg.RunMode = "debug"
cfg.CasbinModelConf = "../../../configs/model.conf"
cfg.Casbin.Enable = false
cfg.Gorm.Debug = false
cfg.Gorm.DBType = "sqlite3"

container, _ := app.BuildContainer()
Expand Down
14 changes: 9 additions & 5 deletions pkg/logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -149,11 +149,15 @@ func StartSpan(ctx context.Context, opts ...SpanOption) *Entry {
}

fields := map[string]interface{}{
UserIDKey: FromUserIDContext(ctx),
TraceIDKey: FromTraceIDContext(ctx),
SpanTitleKey: o.Title,
SpanFunctionKey: o.FuncName,
VersionKey: version,
UserIDKey: FromUserIDContext(ctx),
TraceIDKey: FromTraceIDContext(ctx),
VersionKey: version,
}
if v := o.Title; v != "" {
fields[SpanTitleKey] = v
}
if v := o.FuncName; v != "" {
fields[SpanFunctionKey] = v
}

return newEntry(logrus.WithFields(fields))
Expand Down
Loading

0 comments on commit 0f6c027

Please sign in to comment.