Commit 9b5c74c8 authored by shajiaiming's avatar shajiaiming

用户组权限列表

parent 6d495991
...@@ -30,3 +30,7 @@ func RemovePolicy(ptype string, fieldIndex int, fieldValues string) bool { ...@@ -30,3 +30,7 @@ func RemovePolicy(ptype string, fieldIndex int, fieldValues string) bool {
success, _ := rbac.Ef.RemoveFilteredNamedPolicy(ptype, fieldIndex, fieldValues) success, _ := rbac.Ef.RemoveFilteredNamedPolicy(ptype, fieldIndex, fieldValues)
return success return success
} }
func GetPolicies(ptype string, fieldIndex int, fieldValues string) [][]string {
return rbac.Ef.GetFilteredNamedPolicy(ptype, fieldIndex, fieldValues)
}
...@@ -208,12 +208,13 @@ var ( ...@@ -208,12 +208,13 @@ var (
ErrDeleteClientApp = &Errno{Code: 20105, Message: "The client app delete error."} ErrDeleteClientApp = &Errno{Code: 20105, Message: "The client app delete error."}
// role errors // role errors
ErrRoleNotFound = &Errno{Code: 20101, Message: "The role was not found."} ErrRoleNotFound = &Errno{Code: 20101, Message: "The role was not found."}
ErrCountRole = &Errno{Code: 20102, Message: "The roles statistic error."} ErrCountRole = &Errno{Code: 20102, Message: "The roles statistic error."}
ErrAddRole = &Errno{Code: 20103, Message: "The role add error."} ErrAddRole = &Errno{Code: 20103, Message: "The role add error."}
ErrUpdateRole = &Errno{Code: 20104, Message: "The role update error."} ErrUpdateRole = &Errno{Code: 20104, Message: "The role update error."}
ErrDeleteRole = &Errno{Code: 20105, Message: "The role delete error."} ErrDeleteRole = &Errno{Code: 20105, Message: "The role delete error."}
ErrSetRole = &Errno{Code: 20106, Message: "The role set error."} ErrSetRole = &Errno{Code: 20106, Message: "The role set error."}
ErrSetPremission = &Errno{Code: 20107, Message: "The role set premission."} ErrSetPremission = &Errno{Code: 20107, Message: "The role set premission."}
ErrRoleAdminExits = &Errno{Code: 20107, Message: "There are users in this role."} ErrGetPremissions = &Errno{Code: 20108, Message: "The role get premissions."}
ErrRoleAdminExits = &Errno{Code: 20109, Message: "There are users in this role."}
) )
...@@ -8,12 +8,44 @@ import ( ...@@ -8,12 +8,44 @@ import (
"bwallet/service/manager_service" "bwallet/service/manager_service"
"bwallet/validate_service" "bwallet/validate_service"
"fmt" "fmt"
"github.com/Unknwon/com"
"github.com/astaxie/beego/validation"
"github.com/gin-gonic/gin" "github.com/gin-gonic/gin"
"strings" "strings"
) )
func GetAdminRoles(c *gin.Context) { func GetPermissions(c *gin.Context) {
token := c.Request.Header.Get("Token")
user, _ := util.ParseToken(token)
group := user.UserInfo.Group
if group != "admin" {
handler.SendResponse(c, errno.ErrUserAuthIncorrect, nil)
return
}
id := int32(com.StrTo(c.DefaultQuery("id", "0")).MustInt())
valid := validation.Validation{}
valid.Min(id, 1, "id").Message("ID必须大于0")
if valid.HasErrors() {
handler.SendResponse(c, errno.ErrValidation, nil)
return
}
roleService := casbin_service.Role{
Id: id,
}
roleInfo, err := roleService.GetRole()
if err != nil {
handler.SendResponse(c, errno.ErrRoleNotFound, nil)
return
}
casbin_service := casbin_service.SetPermission{
Value: roleInfo.RoleName,
}
permissions := casbin_service.GetPermissions()
handler.SendResponse(c, nil, permissions)
} }
func AddAdminRole(c *gin.Context) { func AddAdminRole(c *gin.Context) {
...@@ -68,16 +100,12 @@ func AddAdminRole(c *gin.Context) { ...@@ -68,16 +100,12 @@ func AddAdminRole(c *gin.Context) {
handler.SendResponse(c, nil, nil) handler.SendResponse(c, nil, nil)
} }
func UpdateAdminRole(c *gin.Context) {
}
func SetRole(c *gin.Context) { func SetRole(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
if group != "administrator" { if group != "admin" {
handler.SendResponse(c, errno.ErrUserAuthIncorrect, nil) handler.SendResponse(c, errno.ErrUserAuthIncorrect, nil)
return return
} }
...@@ -106,7 +134,7 @@ func SetPermission(c *gin.Context) { ...@@ -106,7 +134,7 @@ 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
if group != "administrator" { if group != "admin" {
handler.SendResponse(c, errno.ErrUserAuthIncorrect, nil) handler.SendResponse(c, errno.ErrUserAuthIncorrect, nil)
return return
} }
......
...@@ -151,9 +151,8 @@ func InitRouter() *gin.Engine { ...@@ -151,9 +151,8 @@ func InitRouter() *gin.Engine {
api.PUT("/role", backend.EditRole) api.PUT("/role", backend.EditRole)
api.DELETE("/role", backend.DeleteRole) api.DELETE("/role", backend.DeleteRole)
api.GET("/user-roles", backend.GetAdminRoles) api.GET("/user-permissions", backend.GetPermissions)
api.POST("/user-role", backend.AddAdminRole) api.POST("/user-role", backend.AddAdminRole)
api.PUT("/user-role", backend.UpdateAdminRole)
api.POST("/set-role", backend.SetRole) api.POST("/set-role", backend.SetRole)
api.POST("/set-permission", backend.SetPermission) api.POST("/set-permission", backend.SetPermission)
......
...@@ -25,6 +25,11 @@ type SetPermission struct { ...@@ -25,6 +25,11 @@ type SetPermission struct {
AllowPermissions []AllowPermission `json:"allow_permissions"` AllowPermissions []AllowPermission `json:"allow_permissions"`
} }
type PermissionsResp struct {
Path string `json:"path"`
Method string `json:"method"`
}
func (r *CasbinRole) GetAllRolesRelation() ([]*models.Role, error) { func (r *CasbinRole) GetAllRolesRelation() ([]*models.Role, error) {
roles, err := models.GetRoles(r.getMaps()) roles, err := models.GetRoles(r.getMaps())
if err != nil { if err != nil {
...@@ -58,6 +63,20 @@ func (r *CasbinRole) AddGroupingPolicy() error { ...@@ -58,6 +63,20 @@ func (r *CasbinRole) AddGroupingPolicy() error {
return nil return nil
} }
func (r *SetPermission) GetPermissions() []*PermissionsResp {
tmp_permissions := models.GetPolicies("p", 0, r.Value)
var permissions = []*PermissionsResp{}
for _, v := range tmp_permissions {
permission := &PermissionsResp{}
permission.Method = v[2]
permission.Path = v[1]
permissions = append(permissions, permission)
}
return permissions
}
func (r *CasbinRole) getMaps() (map[string]interface{}) { func (r *CasbinRole) getMaps() (map[string]interface{}) {
maps := make(map[string]interface{}) maps := make(map[string]interface{})
......
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