github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/rbac/README.md (about) 1 # rbac 2 3 forkd from https://github.com/harranali/authority 4 5 Role Based Access Control (RBAC) Go package with database persistence 6 7 # Features 8 9 - Create Roles/Permissions 10 - Assign Permissions to Roles/Multiple Roles to Users 11 - Check User's Roles/Permissions/Role's Permissions 12 - Revoke User's Roles/User's Permissions/ole's permissions 13 - List User's Roles/All Roles/All Permissions 14 - Delete Roles/Permissions 15 16 ## Test 17 18 1. `docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:5.7.34` 19 1. `go test` 20 21 # Usage 22 23 ```go 24 // initiate the database (using mysql) 25 dsn := "dbuser:dbpassword@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" 26 db, _ := gorm.Open(mysql.Open(dsn), &gorm.Config{}) 27 28 // initiate authority 29 auth := authority.New(authority.Options{ TablesPrefix: "authority_", DB: db }) 30 31 // create role 32 err := auth.CreateRole("role-1") 33 34 // create permissions 35 err := auth.NewPerm("permission-1") 36 err = auth.NewPerm("permission-2") 37 err = auth.NewPerm("permission-3") 38 39 // assign the permissions to the role 40 err := auth.AssignPerm("role-1", "permission-1", "permission-2", "permission-3") 41 42 // assign a role to user (user id = 1) 43 err = auth.AssignRole(1, "role-a") 44 45 // check if the user have a given role 46 ok, err := auth.CheckRole(1, "role-a") 47 48 // check if a user have a given permission 49 ok, err := auth.CheckPerm(1, "permission-d") 50 51 // check if a role have a given permission 52 ok, err := auth.CheckRolePerm("role-a", "permission-a") 53 ```