3.5 KiB
HopFrame Permissions
Permissions in the HopFrame are simple and effective to use.
As discussed in the repositories documentation, you can manage user / group permissions
via the IPermissionRepository service.
How do permissions work in the HopFrame
Permissions are defined using the . (dot) syntax. This enables you to nest permissions in namespaces. You can also give a user or a group the permission to every permission in a namespace by using the * (star) syntax.
| Permission | Example | Description |
|---|---|---|
* |
* |
all permissions |
[namespace].[name] |
hopframe.admin.users.create |
single permission |
[namespace].* |
hopframe.admin.* |
all permissions in that namespace (works recursively) |
Reserved namespaces
| Namespace | Example | Description |
|---|---|---|
group |
group.admin |
The user needs to be in a specific group |
Permission Groups
You can manage them through the IGroupRepository as described in the repositories documentation.
You add permissions just like you would to a user with the IPermissionRepository.
You can assign a user to a group by assigning the group permission to the user:
permissionRepository.AddPermission(user, "group.admin");
Predefined Permissions
| Permission | Description |
|---|---|
hopframe.admin |
Access to the admin dashboard |
hopframe.admin.users.read |
View all users |
hopframe.admin.users.update |
Edit a user |
hopframe.admin.users.delete |
Delete a user |
hopframe.admin.users.create |
Add a group |
hopframe.admin.groups.read |
View all groups |
hopframe.admin.groups.update |
Edit a group |
hopframe.admin.groups.delete |
Delete a group |
hopframe.admin.groups.create |
Add a group |
Configuring HopFrame permissions
You can also configure the predefined permissions using the appsettings.json or environment variables
by configuring your configuration to load these.
Hint: Configuring your application to use environment variables works by simply adding
builder.Configuration.AddEnvironmentVariables();to your startup configuration before you add the custom configurations / HopFrame services.
You can specify Dashboard for the dashboard permission and for Users and Groups you can specify
Create, Read, Update and Delete permissions.
Configuration example
"HopFrame": {
"Permissions": {
"Dashboard": "myapp.dashboard.view",
"Users": {
"Read": "myapp.read.users"
},
"Groups": {
"Create": "myapp.create.groups",
"Update": "myapp.update.groups"
}
}
}
Environment variables example
HOPFRAME__PERMISSIONS__DASHBOARD="myapp.dashboard.view"
HOPFRAME__PERMISSIONS__USERS__READ="myapp.read.users"
HOPFRAME__PERMISSIONS__GROUPS__CREATE="myapp.create.groups"
HOPFRAME__PERMISSIONS__GROUPS__UPDATE="myapp.update.groups"