1
This commit is contained in:
parent
69123c0dfb
commit
5373eb80a7
@ -1,43 +1,48 @@
|
|||||||
{
|
{
|
||||||
"roles": {
|
"api": [
|
||||||
"admin": {
|
],
|
||||||
"api": [
|
"ui": [
|
||||||
"*"
|
|
||||||
],
|
],
|
||||||
"ui": [
|
"roles": {
|
||||||
"*"
|
"admin": {
|
||||||
]
|
"api": [
|
||||||
},
|
"*"
|
||||||
"operator": {
|
],
|
||||||
"api": [
|
"ui": [
|
||||||
"*"
|
"*"
|
||||||
],
|
]
|
||||||
"ui": [
|
|
||||||
"*"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"service": {
|
|
||||||
"api": [
|
|
||||||
"*"
|
|
||||||
],
|
|
||||||
"ui": [
|
|
||||||
"*"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"guest": {
|
|
||||||
"api": [],
|
|
||||||
"ui": []
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"accounts": {
|
"operator": {
|
||||||
"0x903c617e66902aa1b916DF79c7F1730fba40c2cA": {
|
"api": [
|
||||||
"roles": [
|
"*"
|
||||||
"service"
|
],
|
||||||
],
|
"ui": [
|
||||||
"special": {
|
"*"
|
||||||
"api": [],
|
]
|
||||||
"ui": ["addannouncement", "editannouncement", "addaudit", "editaudit"]
|
},
|
||||||
}
|
"service": {
|
||||||
}
|
"api": [
|
||||||
|
"*"
|
||||||
|
],
|
||||||
|
"ui": [
|
||||||
|
"*"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"guest": {
|
||||||
|
"api": [],
|
||||||
|
"ui": []
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"accounts": {
|
||||||
|
"0x903c617e66902aa1b916DF79c7F1730fba40c2cA": {
|
||||||
|
"roles": [
|
||||||
|
"service"
|
||||||
|
],
|
||||||
|
"special": {
|
||||||
|
"api": [],
|
||||||
|
"ui": ["addannouncement", "editannouncement", "addaudit", "editaudit"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -6,7 +6,7 @@
|
|||||||
"service"
|
"service"
|
||||||
],
|
],
|
||||||
"special": {
|
"special": {
|
||||||
"api": [],
|
"api": ["xxx", "-xxx"],
|
||||||
"ui": ["addannouncement", "editannouncement", "addaudit", "editaudit"]
|
"ui": ["addannouncement", "editannouncement", "addaudit", "editaudit"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,13 +14,36 @@ type Permission struct {
|
|||||||
ui *q5.ConcurrentMap[string, bool]
|
ui *q5.ConcurrentMap[string, bool]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type role struct {
|
||||||
|
api *q5.ConcurrentMap[string, bool]
|
||||||
|
ui *q5.ConcurrentMap[string, bool]
|
||||||
|
}
|
||||||
|
|
||||||
|
type user struct {
|
||||||
|
accountAddress string
|
||||||
|
roleHash *q5.ConcurrentMap[string, *role]
|
||||||
|
api *q5.ConcurrentMap[string, bool]
|
||||||
|
ui *q5.ConcurrentMap[string, bool]
|
||||||
|
specApi []string
|
||||||
|
specUi []string
|
||||||
|
}
|
||||||
|
|
||||||
type PermissionTable struct {
|
type PermissionTable struct {
|
||||||
f5.CustomMetaTable
|
f5.CustomMetaTable
|
||||||
accountPermission *q5.ConcurrentMap[string, *Permission]
|
apiHash *q5.ConcurrentMap[string, bool]
|
||||||
|
uiHash *q5.ConcurrentMap[string, bool]
|
||||||
|
roleHash *q5.ConcurrentMap[string, *role]
|
||||||
|
userHash *q5.ConcurrentMap[string, *Permission]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *PermissionTable) Load() {
|
func (this *PermissionTable) Load() {
|
||||||
this.accountPermission = new(q5.ConcurrentMap[string, *Permission])
|
this.apiHash = new(q5.ConcurrentMap[string, bool])
|
||||||
|
this.uiHash = new(q5.ConcurrentMap[string, bool])
|
||||||
|
this.roleHash = new(q5.ConcurrentMap[string, *role])
|
||||||
|
this.userHash = new(q5.ConcurrentMap[string, *Permission])
|
||||||
|
this.loadPermission()
|
||||||
|
this.loadRole()
|
||||||
|
this.loadUser()
|
||||||
{
|
{
|
||||||
if jsonStr, err := f5.ReadJsonFile("../config/permission.json"); err == nil {
|
if jsonStr, err := f5.ReadJsonFile("../config/permission.json"); err == nil {
|
||||||
type cfgPermission struct {
|
type cfgPermission struct {
|
||||||
@ -77,7 +100,7 @@ func (this *PermissionTable) Load() {
|
|||||||
accpermission.ui.Store(v, !ret)
|
accpermission.ui.Store(v, !ret)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.accountPermission.Store(strings.ToLower(account), accpermission)
|
this.userHash.Store(strings.ToLower(account), accpermission)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
panic(fmt.Sprintf("load metafile error %s %s", "permission.json", err))
|
panic(fmt.Sprintf("load metafile error %s %s", "permission.json", err))
|
||||||
@ -90,7 +113,7 @@ func (this *PermissionTable) CheckAPIPermission(account string, cmd string) bool
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
accper, exist := this.accountPermission.Load(account)
|
accper, exist := this.userHash.Load(account)
|
||||||
if !exist {
|
if !exist {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
@ -109,7 +132,7 @@ func (this *PermissionTable) CheckAPIPermission(account string, cmd string) bool
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (this *PermissionTable) GetUIPermission(account string) string {
|
func (this *PermissionTable) GetUIPermission(account string) string {
|
||||||
per, exist := this.accountPermission.Load(account)
|
per, exist := this.userHash.Load(account)
|
||||||
if !exist {
|
if !exist {
|
||||||
return "{}"
|
return "{}"
|
||||||
}
|
}
|
||||||
@ -123,3 +146,12 @@ func (this *PermissionTable) GetUIPermission(account string) string {
|
|||||||
v, _ := json.Marshal(kvlist)
|
v, _ := json.Marshal(kvlist)
|
||||||
return string(v)
|
return string(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *PermissionTable) loadPermission() {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *PermissionTable) loadRole() {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *PermissionTable) loadUser() {
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user