Commit 9b5c74c8 authored by shajiaiming's avatar shajiaiming

用户组权限列表

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