Commit 95462a31 authored by shajiaiming's avatar shajiaiming

fix

parent e3c4a144
package main package main
import ( import (
"bwallet/pkg/casbin"
"fmt" "fmt"
"log" "log"
"net/http" "net/http"
"bwallet/pkg/rbac"
"bwallet/models" "bwallet/models"
"bwallet/pkg/cron" "bwallet/pkg/cron"
"bwallet/pkg/gredis" "bwallet/pkg/gredis"
...@@ -19,7 +18,7 @@ import ( ...@@ -19,7 +18,7 @@ import (
func init() { func init() {
setting.Setup() setting.Setup()
models.Setup() models.Setup()
casbin.Setup() rbac.Setup()
logging.Setup() logging.Setup()
gredis.Setup() gredis.Setup()
util.Setup() util.Setup()
......
package auth package auth
import ( import (
"bwallet/pkg/casbin"
"bwallet/pkg/errno" "bwallet/pkg/errno"
"bwallet/pkg/handler" "bwallet/pkg/handler"
"bwallet/pkg/rbac"
"bwallet/pkg/util" "bwallet/pkg/util"
"fmt"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
_ "github.com/go-sql-driver/mysql" _ "github.com/go-sql-driver/mysql"
) )
...@@ -31,16 +32,18 @@ func Casbin() gin.HandlerFunc { ...@@ -31,16 +32,18 @@ func Casbin() gin.HandlerFunc {
//obj := "data1" // the resource that is going to be accessed. //obj := "data1" // the resource that is going to be accessed.
//act := "read" // the operation that the user performs on the resource. //act := "read" // the operation that the user performs on the resource.
//added, err := e.AddPolicy("alice", "data1", "read") //added, err := e.AddPolicy("alice", "data1", "read")
//added, err := rbac.Ef.AddPolicy(username, path, method)
//added,err := e.AddGroupingPolicy("alice", "admin") //added,err := rbac.Ef.AddGroupingPolicy("alice", "admin")
//fmt.Println(added) //fmt.Println(added)
//c.Next()
//if err != nil { //if err != nil {
// fmt.Println("添加权限错误,错误内容:", err) // fmt.Println("添加权限错误,错误内容:", err)
//} //}
//ok, err := e.Enforce(sub, obj, act) //ok, err := e.Enforce(sub, obj, act)
ok, err := casbin.Enforcer.Enforce(username, path, method) ok, err := rbac.Ef.Enforce(username, path, method)
fmt.Println(err)
if err != nil { if err != nil {
handler.SendResponse(c, errno.InternalServerError, nil) handler.SendResponse(c, errno.InternalServerError, nil)
c.Abort() c.Abort()
......
package models package models
import ( import (
"bwallet/pkg/casbin" "bwallet/pkg/rbac"
"fmt"
"reflect"
) )
func AddPolicy(params ...interface{}) error { func AddPolicy(params map[string]interface{}) error {
_, err := casbin.Enforcer.AddPolicy(params) fmt.Println(params["v0"])
fmt.Println(params["v2"])
fmt.Println(reflect.TypeOf(params["v2"]))
return nil
bool, err := rbac.Ef.AddPolicy(params["v0"], params["v1"], params["v2"])
if err != nil { if err != nil {
return err return err
} }
if !bool {
fmt.Println(bool)
}
return nil return nil
} }
func AddGroupingPolicy(params ...interface{}) error { func AddGroupingPolicy(params map[string]interface{}) error {
_, err := casbin.Enforcer.AddGroupingPolicy(params) _, err := rbac.Ef.AddGroupingPolicy(params["v0"], params["v1"])
if err != nil { if err != nil {
return err return err
} }
......
package casbin package rbac
import ( import (
"fmt" "fmt"
...@@ -7,12 +7,12 @@ import ( ...@@ -7,12 +7,12 @@ import (
"log" "log"
) )
var Enforcer *casbin.Enforcer var Ef *casbin.Enforcer
func Setup() { func Setup() {
var err error var err error
a, _ := gormadapter.NewAdapter("mysql", "root:fVkWkJZoOQcpunqC@tcp(172.16.101.45:3306)/pc_manage", true) a, _ := gormadapter.NewAdapter("mysql", "root:fVkWkJZoOQcpunqC@tcp(172.16.101.45:3306)/pc_manage", true)
Enforcer, err = casbin.NewEnforcer("./conf/model.conf", a) Ef, err = casbin.NewEnforcer("./conf/model.conf", a)
if err != nil { if err != nil {
fmt.Println("casbin.Setup, fail to parse 'conf/model.conf': %v", err) fmt.Println("casbin.Setup, fail to parse 'conf/model.conf': %v", err)
log.Fatalf("casbin.Setup, fail to parse 'conf/model.conf': %v", err) log.Fatalf("casbin.Setup, fail to parse 'conf/model.conf': %v", err)
...@@ -20,5 +20,5 @@ func Setup() { ...@@ -20,5 +20,5 @@ func Setup() {
fmt.Println("casbin ok") fmt.Println("casbin ok")
// 日志记录 // 日志记录
Enforcer.EnableLog(true) Ef.EnableLog(true)
} }
...@@ -6,8 +6,11 @@ import ( ...@@ -6,8 +6,11 @@ import (
"bwallet/pkg/util" "bwallet/pkg/util"
"bwallet/service/casbin_service" "bwallet/service/casbin_service"
"bwallet/validate_service" "bwallet/validate_service"
"fmt"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"io/ioutil"
"strings" "strings"
"encoding/json"
) )
func GetAdminRoles(c *gin.Context) { func GetAdminRoles(c *gin.Context) {
...@@ -51,11 +54,10 @@ func SetRole(c *gin.Context) { ...@@ -51,11 +54,10 @@ func SetRole(c *gin.Context) {
user, _ := util.ParseToken(token) user, _ := util.ParseToken(token)
group := user.UserInfo.Group group := user.UserInfo.Group
if ("administrator" != group || "admin" != group) { if group != "administrator" {
handler.SendResponse(c, errno.ErrUserAuthIncorrect, nil) handler.SendResponse(c, errno.ErrUserAuthIncorrect, nil)
return return
} }
role := validate_service.SetRole{} role := validate_service.SetRole{}
c.ShouldBindJSON(&role) c.ShouldBindJSON(&role)
if ok, errors := validate_service.ValidateInputs(role); !ok { if ok, errors := validate_service.ValidateInputs(role); !ok {
...@@ -66,11 +68,10 @@ func SetRole(c *gin.Context) { ...@@ -66,11 +68,10 @@ func SetRole(c *gin.Context) {
} }
casbin_service := casbin_service.CasbinRole{ casbin_service := casbin_service.CasbinRole{
Ptype: role.Type,
V0: role.Value, V0: role.Value,
V1: role.AllowRole, V1: role.AllowRole,
} }
if err := casbin_service.AddPolicy(); err != nil { if err := casbin_service.AddGroupingPolicy(); err != nil {
handler.SendResponse(c, errno.ErrAddCoin, nil) handler.SendResponse(c, errno.ErrAddCoin, nil)
return return
} }
...@@ -82,31 +83,33 @@ func SetPermission(c *gin.Context) { ...@@ -82,31 +83,33 @@ func SetPermission(c *gin.Context) {
token := c.Request.Header.Get("Token") token := c.Request.Header.Get("Token")
user, _ := util.ParseToken(token) user, _ := util.ParseToken(token)
group := user.UserInfo.Group group := user.UserInfo.Group
fmt.Println(group)
if ("administrator" != group || "admin" != group) { if group != "administrator" {
handler.SendResponse(c, errno.ErrUserAuthIncorrect, nil) handler.SendResponse(c, errno.ErrUserAuthIncorrect, nil)
return return
} }
var resp map[string]interface{}
permission := validate_service.SetPermission{} body, _ := ioutil.ReadAll(c.Request.Body)
c.ShouldBindJSON(&permission) json.Unmarshal(body, &resp)
if ok, errors := validate_service.ValidateInputs(permission); !ok { fmt.Println(resp)
for _, err := range errors { //permission := validate_service.SetPermission{}
handler.SendResponse(c, errno.ErrBind, strings.Join(err, " ")) //c.ShouldBindJSON(&permission)
return //if ok, errors := validate_service.ValidateInputs(permission); !ok {
} // for _, err := range errors {
} // handler.SendResponse(c, errno.ErrBind, strings.Join(err, " "))
// return
casbin_service := casbin_service.CasbinRole{ // }
Ptype: permission.Type, //}
V0: permission.Value, //
//V1: permission.Permission, //casbin_service := casbin_service.CasbinRole{
} // V0: permission.Value,
// V2: permission.AllowPermission,
if err := casbin_service.AddGroupingPolicy(); err != nil { //}
handler.SendResponse(c, errno.ErrAddCoin, nil) //
return //if err := casbin_service.AddPolicy(); err != nil {
} // handler.SendResponse(c, errno.ErrAddCoin, nil)
// return
//}
handler.SendResponse(c, nil, nil) handler.SendResponse(c, nil, nil)
} }
...@@ -3,19 +3,18 @@ package backend ...@@ -3,19 +3,18 @@ package backend
import ( import (
"bwallet/pkg/errno" "bwallet/pkg/errno"
"bwallet/pkg/handler" "bwallet/pkg/handler"
"bwallet/pkg/util"
"bwallet/service/api_module_service" "bwallet/service/api_module_service"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
) )
func GetApiModules(c *gin.Context) { func GetApiModules(c *gin.Context) {
token := c.Request.Header.Get("Token") //token := c.Request.Header.Get("Token")
user, _ := util.ParseToken(token) //user, _ := util.ParseToken(token)
//
if ("administrator" != user.UserInfo.Group) { //if ("administrator" != user.UserInfo.Group) {
handler.SendResponse(c, errno.ErrUserAuthIncorrect, nil) // handler.SendResponse(c, errno.ErrUserAuthIncorrect, nil)
return // return
} //}
apiModuleService := api_module_service.ApiModule{} apiModuleService := api_module_service.ApiModule{}
moudles, err := apiModuleService.GetAll() moudles, err := apiModuleService.GetAll()
......
...@@ -2,6 +2,7 @@ package casbin_service ...@@ -2,6 +2,7 @@ package casbin_service
import ( import (
"bwallet/models" "bwallet/models"
"encoding/json"
) )
type CasbinRole struct { type CasbinRole struct {
...@@ -9,7 +10,7 @@ type CasbinRole struct { ...@@ -9,7 +10,7 @@ type CasbinRole struct {
Ptype string Ptype string
V0 string V0 string
V1 string V1 string
V2 string V2 json.RawMessage
V3 string V3 string
V4 string V4 string
V5 string V5 string
...@@ -26,9 +27,8 @@ func (r *CasbinRole) GetAllRolesRelation() ([]*models.Role, error) { ...@@ -26,9 +27,8 @@ func (r *CasbinRole) GetAllRolesRelation() ([]*models.Role, error) {
func (r *CasbinRole) AddPolicy() error { func (r *CasbinRole) AddPolicy() error {
role := map[string]interface{}{ role := map[string]interface{}{
"ptype": r.Ptype,
"v0": r.V0, "v0": r.V0,
"v1": r.V1, "v2": r.V2,
} }
if err := models.AddPolicy(role); err != nil { if err := models.AddPolicy(role); err != nil {
...@@ -39,14 +39,12 @@ func (r *CasbinRole) AddPolicy() error { ...@@ -39,14 +39,12 @@ func (r *CasbinRole) AddPolicy() error {
} }
func (r *CasbinRole) AddGroupingPolicy() error { func (r *CasbinRole) AddGroupingPolicy() error {
permission := map[string]interface{}{ role := map[string]interface{}{
"ptype": r.Ptype,
"v0": r.V0, "v0": r.V0,
"v1": r.V1, "v1": r.V1,
"v2": r.V2,
} }
if err := models.AddGroupingPolicy(permission); err != nil { if err := models.AddGroupingPolicy(role); err != nil {
return err return err
} }
...@@ -68,9 +66,5 @@ func (r *CasbinRole) getMaps() (map[string]interface{}) { ...@@ -68,9 +66,5 @@ func (r *CasbinRole) getMaps() (map[string]interface{}) {
maps["v0"] = r.V0 maps["v0"] = r.V0
} }
if r.V1 != "" {
maps["v1"] = r.V1
}
return maps return maps
} }
package validate_service package validate_service
import "encoding/json"
type AdminRole struct { type AdminRole struct {
Uid uint8 `json:"uid" validate:"required"` Uid uint8 `json:"uid" validate:"required"`
RoleId uint8 `json:"role_id" validate:"required"` RoleId uint8 `json:"role_id" validate:"required"`
} }
type SetRole struct { type SetRole struct {
Type string `json:"type" validate:"required"`
Value string `json:"value" validate:"required"` Value string `json:"value" validate:"required"`
AllowRole string `json:"allow_role" validate:"required"` AllowRole string `json:"allow_role" validate:"required"`
} }
type SetPermission struct { type SetPermission struct {
Type string `json:"type" validate:"required"`
Value string `json:"value" validate:"required"` Value string `json:"value" validate:"required"`
Permission struct { AllowPermission json.RawMessage `json:"allow_permission" validate:"required"`
Path string `json:"path" validate:"required"`
Method string `json:"method" validate:"required"`
} `json:"permission" validate:"required"`
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment