MishkaCmsCore.Dashboard.Widgets.UsersSummary (Mishka CMS Core v0.0.1)

Copy Markdown View Source

Dashboard widget (a dashboard:widgets plugin): the users & access snapshot — the total user count with a Tenant/Master split, the permission catalogue (defined vs never-assigned) and how many users actually carry grants (with/without, plus the admins: holders of *, admin:* or anything under a surface, a single area included). It is the user area's card, admin:dashboard:user. Everything is counted through the MishkaCmsCore.Accounts.User and MishkaCmsCore.Accounts.Permission resources' tenancy-bypassing reads via Ash.count!/2. A master counts every user; a tenant admin only their own site's users.

Permission has no site_id, so "defined" is a catalogue count — deployment configuration every admin needs in order to grant any of them — and stays global for both. "Unused" does not: it is derived from who holds a permission, which is tenant data, so for a tenant it means held by nobody on this site.

The access bar's width is percent/2 over the counts, a number that exists only at render time. Tailwind generates rules from SOURCE TEXT, so a class assembled around that number gets no rule at all and the bar draws with no width; it carries an inline style attribute instead, which is why the policy in MishkaCmsCore.Runtime.Plugs.SecurityHeaders keeps style-src-attr permitted — see MishkaCmsWeb.InterpolatedClassTest.

Summary

Functions

Returns a specification to start this module under a supervisor.

Callback implementation for MishkaInstaller.Event.Hook.enable/0.

Callback implementation for MishkaInstaller.Event.Hook.get/0.

Optional. See MishkaInstaller.Event.Hook.health_check/0. Override to report health.

Loads this widget's data off the dashboard render (in a Task), scoped to the viewer.

Callback implementation for MishkaInstaller.Event.Hook.register/0.

Callback implementation for MishkaInstaller.Event.Hook.restart/0.

Callback implementation for MishkaInstaller.Event.Hook.start/0.

Callback implementation for MishkaInstaller.Event.Hook.stop/0.

This widget's descriptor.

Types

error_return()

@type error_return() ::
  {:error, [%{action: atom(), field: atom(), message: String.t()}]}

okey_return()

@type okey_return() :: {:ok, struct() | map() | module() | [any()]}

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.

config()

@spec config() :: keyword()

config(key)

@spec config(atom()) :: any()

enable()

@spec enable() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.enable/0.

get()

@spec get() :: keyword()

Callback implementation for MishkaInstaller.Event.Hook.get/0.

health_check()

@spec health_check() :: :ok | {:degraded, term()} | {:error, term()}

Optional. See MishkaInstaller.Event.Hook.health_check/0. Override to report health.

load(user)

Loads this widget's data off the dashboard render (in a Task), scoped to the viewer.

on_dependency_error(error)

@spec on_dependency_error(term()) :: term()

Optional. See MishkaInstaller.Event.Hook.on_dependency_error/1. Override to react.

register()

@spec register() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.register/0.

render(assigns)

restart()

@spec restart() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.restart/0.

start()

@spec start() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.start/0.

start_link(args \\ [])

stop()

@spec stop() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.stop/0.

unregister()

@spec unregister() :: okey_return() | error_return()

Callback implementation for MishkaInstaller.Event.Hook.unregister/0.

widget()

@spec widget() :: MishkaCmsCore.Dashboard.Widget.t()

This widget's descriptor.