- Umbraco Current User Action
- What is it?
- Current User Actions appear in the user menu (accessed by clicking the user avatar in the top-right corner of the backoffice). They provide quick actions for the currently logged-in user, such as profile settings, preferences, or custom functionality. Actions can execute code or navigate to a URL.
- Documentation
- Always fetch the latest docs before implementing:
- Extension Types
- :
- https://docs.umbraco.com/umbraco-cms/customizing/extending-overview/extension-types
- Foundation
- :
- https://docs.umbraco.com/umbraco-cms/customizing/foundation
- Extension Registry
- :
- https://docs.umbraco.com/umbraco-cms/customizing/extending-overview/extension-registry
- Related Foundation Skills
- Conditions
-
- For controlling when actions appear
- Reference skill:
- umbraco-conditions
- Modals
- When actions open modal dialogs
Reference skill:
umbraco-modals
Workflow
Fetch docs
- Use WebFetch on the URLs above
Ask questions
- What action? Navigate or execute? Conditions needed?
Generate files
- Create manifest + action class based on latest docs
Explain
- Show what was created and how to test
Minimal Examples
Manifest with Default Kind (manifests.ts)
import
type
{
ManifestCurrentUserActionDefaultKind
}
from
'@umbraco-cms/backoffice/extension-registry'
;
const
manifest
:
ManifestCurrentUserActionDefaultKind
=
{
type
:
'currentUserAction'
,
kind
:
'default'
,
alias
:
'My.CurrentUserAction.Preferences'
,
name
:
'User Preferences'
,
api
:
(
)
=>
import
(
'./preferences-action.js'
)
,
meta
:
{
icon
:
'icon-settings'
,
label
:
'My Preferences'
,
}
,
}
;
export
const
manifests
=
[
manifest
]
;
Action Implementation (preferences-action.ts)
import
{
UmbControllerBase
}
from
'@umbraco-cms/backoffice/class-api'
;
import
type
{
UmbCurrentUserAction
}
from
'@umbraco-cms/backoffice/current-user'
;
export
class
PreferencesAction
extends
UmbControllerBase
implements
UmbCurrentUserAction
{
async
getHref
(
)
:
Promise
<
string
|
undefined
{ // Return undefined to use execute() instead return undefined ; } async execute ( ) : Promise < void
{ // Perform the action console . log ( 'Opening preferences...' ) ; } } export default PreferencesAction ; Link-based Action export class ExternalLinkAction extends UmbControllerBase implements UmbCurrentUserAction { async getHref ( ) : Promise < string | undefined
{ return 'https://docs.umbraco.com' ; } async execute ( ) : Promise < void
{ // Not called when getHref returns a value } } Action Opening Modal import { UmbControllerBase } from '@umbraco-cms/backoffice/class-api' ; import { UMB_MODAL_MANAGER_CONTEXT } from '@umbraco-cms/backoffice/modal' ; import type { UmbCurrentUserAction } from '@umbraco-cms/backoffice/current-user' ; export class SettingsAction extends UmbControllerBase implements UmbCurrentUserAction { async getHref ( ) : Promise < string | undefined
{ return undefined ; } async execute ( ) : Promise < void
{ const modalManager = await this . getContext ( UMB_MODAL_MANAGER_CONTEXT ) ; const modal = modalManager . open ( this , MY_SETTINGS_MODAL , { data : { } , } ) ; await modal . onSubmit ( ) ; } } export default SettingsAction ; Action with Conditions const manifest : ManifestCurrentUserActionDefaultKind = { type : 'currentUserAction' , kind : 'default' , alias : 'My.CurrentUserAction.Admin' , name : 'Admin Settings' , api : ( ) => import ( './admin-action.js' ) , meta : { icon : 'icon-lock' , label : 'Admin Settings' , } , conditions : [ { alias : 'Umb.Condition.UserPermission.Admin' , // Only show for admin users } , ] , } ; Custom Element Action import type { ManifestCurrentUserAction } from '@umbraco-cms/backoffice/extension-registry' ; const manifest : ManifestCurrentUserAction = { type : 'currentUserAction' , alias : 'My.CurrentUserAction.Custom' , name : 'Custom Action' , element : ( ) => import ( './custom-action.element.js' ) , api : ( ) => import ( './custom-action.js' ) , meta : { } , } ; Navigating to Internal Route export class ProfileAction extends UmbControllerBase implements UmbCurrentUserAction { async getHref ( ) : Promise < string | undefined
{ // Navigate to a backoffice route return '/section/settings/workspace/user-profile' ; } async execute ( ) : Promise < void
{ } } Meta Properties (Default Kind) Property Description icon Icon displayed in the menu label Text displayed in the menu Action Interface Method Description getHref() Returns URL for link-based actions execute() Called when action is clicked (if no href) That's it! Always fetch fresh docs, keep examples minimal, generate complete working code.
umbraco-current-user-action
安装
npx skills add https://github.com/umbraco/umbraco-cms-backoffice-skills --skill umbraco-current-user-action