diff --git a/npm/ng-packs/packages/theme-basic/src/lib/enums/index.ts b/npm/ng-packs/packages/theme-basic/src/lib/enums/index.ts
index 07635cbbc8..3c919aa271 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/enums/index.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/enums/index.ts
@@ -1 +1,2 @@
export * from './components';
+export * from './user-menu-items';
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/enums/user-menu-items.ts b/npm/ng-packs/packages/theme-basic/src/lib/enums/user-menu-items.ts
new file mode 100644
index 0000000000..42ab66e802
--- /dev/null
+++ b/npm/ng-packs/packages/theme-basic/src/lib/enums/user-menu-items.ts
@@ -0,0 +1,4 @@
+export const enum eUserMenuItems {
+ MyAccount = 'UserMenu.MyAccount',
+ Logout = 'UserMenu.Logout',
+}
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/providers/index.ts b/npm/ng-packs/packages/theme-basic/src/lib/providers/index.ts
index 8102d94f62..d3028eab68 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/providers/index.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/providers/index.ts
@@ -1,2 +1,3 @@
export * from './nav-item.provider';
export * from './styles.provider';
+export * from './user-menu.provider';
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/providers/user-menu.provider.ts b/npm/ng-packs/packages/theme-basic/src/lib/providers/user-menu.provider.ts
new file mode 100644
index 0000000000..5c36cc5347
--- /dev/null
+++ b/npm/ng-packs/packages/theme-basic/src/lib/providers/user-menu.provider.ts
@@ -0,0 +1,59 @@
+import {
+ AuthService,
+ ConfigStateService,
+ LocalizationService,
+ NAVIGATE_TO_MANAGE_PROFILE,
+} from '@abp/ng.core';
+import { UserMenuService } from '@abp/ng.theme.shared';
+import { APP_INITIALIZER, Injector } from '@angular/core';
+import { filter } from 'rxjs/operators';
+import { eUserMenuItems } from '../enums/user-menu-items';
+
+export const BASIC_THEME_USER_MENU_PROVIDERS = [
+ {
+ provide: APP_INITIALIZER,
+ useFactory: configureUserMenu,
+ deps: [Injector],
+ multi: true,
+ },
+];
+
+export function configureUserMenu(injector: Injector) {
+ const configState = injector.get(ConfigStateService);
+ const userMenu = injector.get(UserMenuService);
+ const localization = injector.get(LocalizationService);
+ const authService = injector.get(AuthService);
+ const navigateToManageProfile = injector.get(NAVIGATE_TO_MANAGE_PROFILE);
+
+ return () => {
+ configState
+ .getAll$()
+ .pipe(filter(res => !!res?.localization))
+ .subscribe(() => {
+ userMenu.addItems([
+ {
+ id: eUserMenuItems.MyAccount,
+ order: 100,
+ html: `
+ ${localization.instant('AbpAccount::MyAccount')}
+ `,
+ action: () => navigateToManageProfile(),
+ },
+ {
+ id: eUserMenuItems.Logout,
+ order: 101,
+ html: `
+ ${localization.instant('AbpUi::Logout')}
+ `,
+ action: () => {
+ authService.logout().subscribe();
+ },
+ },
+ ]);
+ });
+ };
+}
diff --git a/npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts b/npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts
index 17ef89338f..a8020e50fe 100644
--- a/npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts
+++ b/npm/ng-packs/packages/theme-basic/src/lib/theme-basic.module.ts
@@ -23,6 +23,7 @@ import { ValidationErrorComponent } from './components/validation-error/validati
import { LazyStyleHandler } from './handlers/lazy-style.handler';
import { BASIC_THEME_NAV_ITEM_PROVIDERS } from './providers/nav-item.provider';
import { BASIC_THEME_STYLES_PROVIDERS } from './providers/styles.provider';
+import { BASIC_THEME_USER_MENU_PROVIDERS } from './providers/user-menu.provider';
export const LAYOUTS = [ApplicationLayoutComponent, AccountLayoutComponent, EmptyLayoutComponent];
@@ -70,6 +71,7 @@ export class ThemeBasicModule {
ngModule: ThemeBasicModule,
providers: [
BASIC_THEME_NAV_ITEM_PROVIDERS,
+ BASIC_THEME_USER_MENU_PROVIDERS,
BASIC_THEME_STYLES_PROVIDERS,
{
provide: VALIDATION_ERROR_TEMPLATE,
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts
index d1e2e71c5c..ca6aa74124 100644
--- a/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts
+++ b/npm/ng-packs/packages/theme-shared/src/lib/models/index.ts
@@ -1,5 +1,6 @@
export * from './common';
export * from './confirmation';
+export * from './nav-item';
export * from './statistics';
export * from './toaster';
-export * from './nav-item';
+export * from './user-menu';
diff --git a/npm/ng-packs/packages/theme-shared/src/lib/models/user-menu.ts b/npm/ng-packs/packages/theme-shared/src/lib/models/user-menu.ts
new file mode 100644
index 0000000000..20b92b8082
--- /dev/null
+++ b/npm/ng-packs/packages/theme-shared/src/lib/models/user-menu.ts
@@ -0,0 +1,3 @@
+import { NavItem } from './nav-item';
+
+export class UserMenu extends NavItem {}