Files
HopFrame/docs/permissions.md

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"