MishkaCmsCore.Sidebar.PageGuard (Mishka CMS Core v0.0.1)

Copy Markdown View Source

on_mount hook that refuses an admin page to anyone whose permissions its declaration does not allow. Attached once, in MishkaCmsCore.ExtensionLiveView, so it covers every admin LiveView without a line in any of them.

It reads socket.view — the module the router resolved — never the URL. That is the whole point: a URL is a string the client chooses and can spell more than one way (/admin/dashboard//account/permissions routes to the same page as the single-slash form), while the mounted module is a fact by the time this runs.

mount is the right callback for "may this user open this page": a direct URL goes through the plug pipeline and mounts, and a push_navigate from another page skips the pipeline but still mounts. A push_patch within the same page re-runs only handle_params, which is fine — same page, same declaration, already decided here.

Undeclared means refused. A page with no entry in MishkaCmsCore.Sidebar gets [] and is denied, so the failure mode of forgetting a declaration is a locked page, never an open one.

Summary

Functions

on_mount(atom, params, session, socket)