Role Management

Role Management

The Role Management system provides functionality to create, manage, and assign roles.
Roles are collections of permissions and are the recommended way to assign multiple permissions to individual users.
Roles can be created, edited, and deleted either through the UI or programmatically in the code.

Roles can only be assigned to individual users. Assigning roles to groups is not supported. Users can hold multiple roles simultaneously.

Functional areas

Role Management offers the following key functions:

Role creation and editing

  • Create new roles with a title, description, and assigned permissions
  • Edit existing roles to update metadata or permissions
  • Delete roles that are no longer needed

Role assignment

  • Assign one or more roles to individual users
  • Remove roles from users as needed
  • Membership is managed via User Management

Code usage

package main

import (
	"go.wdy.de/nago/application"
	"go.wdy.de/nago/application/permission"
	"go.wdy.de/nago/application/role"
	"go.wdy.de/nago/application/user"
	"go.wdy.de/nago/pkg/std"
	"go.wdy.de/nago/presentation/core"
	"go.wdy.de/nago/presentation/ui"
	"go.wdy.de/nago/presentation/ui/alert"
)

const (
	adminRole = role.ID("nago.admin")
)

func main() {
	application.Configure(func(cfg *application.Configurator) {
		cfg.SetApplicationID("de.create.role")

		roleManagement := std.Must(cfg.RoleManagement())

		std.Must(roleManagement.UseCases.Upsert(user.SU(), role.Role{
			ID:          adminRole,
			Name:        "Administrator",
			Description: "Full access to all features.",
			Permissions: []permission.ID{"user.PermCreate", "user.PermDelte", "user.PermFindAll"},
		}))

		cfg.RootViewWithDecoration("admin_secrets", func(wnd core.Window) core.View {
			if !wnd.Subject().HasRole(adminRole) {
				return alert.Banner("Error", "Access only for admins")
			}

			return ui.Text("Welcome, Admin! You have full access to the system.")
		})
	
	}).Run()
}

Dependencies

Requires:

  • None

Is required by:

Activation

This system is activated via:

std.Must(cfg.RoleManagement())
roleManagement := std.Must(cfg.RoleManagement())