Categorygithub.com/pecolynx/casbin-query
repositorypackage
0.0.1
Repository: https://github.com/pecolynx/casbin-query.git
Documentation: pkg.go.dev

# README

casbin-query

User settings

UserObjectAction
davidewokread , update

Role settings

RoleObjectAction
Aewokread
Afluffyread
Agordoupdate
Bgordoread

Assigned role

RoleUser
Abob
Bcharlie

The results when david find pets for read is ewok.

The results when charlie find pets for read is gordo.

The results when bob find pets for read are ewok nad fluffy.

casbin_rule

idptypev0v1v2v3v4v5
1powner_Apet_ewokread
2powner_Apet_fluffyread
3powner_Apet_gordoupdate
4powner_Bpet_gordoread
5puser_davidpet_ewokread
6puser_davidpet_fluffyupdate
7guser_bobowner_A
8guser_charlieowner_B

pet

idversioncreated_atupdated_atname
112021-07-11 14:13:432021-07-11 14:13:43ewok
212021-07-11 14:13:432021-07-11 14:13:43fluffy
312021-07-11 14:13:432021-07-11 14:13:43gordo

SQL

SELECT SUBSTRING_INDEX(tp.v1, '_', -1) AS name
FROM casbin_rule tg
INNER JOIN casbin_rule tp ON tg.v1 = tp.v0
WHERE tg.v0 = 'user_david'
AND tg.ptype = 'g'
AND tp.ptype = 'p'
AND tp.v2 = 'read'

UNION

SELECT SUBSTRING_INDEX(tp.v1, '_', -1) AS name
FROM casbin_rule tp
WHERE tp.v0 = 'user_david'
AND tp.ptype = 'p'
AND tp.v2 = 'read'
) AS t3 ON `pet`.`name`= t3.name ORDER BY `pet`.`name`