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  ```