Hi,
For point 1, it has created another issue, please see below screenshot:
Please update the Default.cshtml
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Themes.LeptonX.Components.SideMenu.MainMenu
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Themes.LeptonX.Components.Common.MobileGeneralSettings
@using Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX.Themes.LeptonX.Components.SideMenu.MobileNavbar
@using Volo.Abp.LeptonX.Shared.Localization
@using Microsoft.Extensions.Localization
@using Volo.Abp.Users
@model MobileNavbarViewModel
@inject ICurrentUser CurrentUser
@inject IStringLocalizer<LeptonXResource> L
<div class="lpx-mobile-navbar-container">
<div class="lpx-mobile-navbar">
<ul class="lpx-mobile-nav-tabs">
@foreach (var viewModel in Model.SelectedMenuItems)
{
var url = string.IsNullOrEmpty(viewModel.MenuItem.Url) ? "#" : Url.IsLocalUrl(viewModel.MenuItem.Url) ? Url.Content(viewModel.MenuItem.Url.EnsureStartsWith('~')) : viewModel.MenuItem.Url;
<li class="lpx-mobile-nav-tab">
<a id="@viewModel.MenuItem.ElementId" href="@url" target="@viewModel.MenuItem.Target" class="lpx-mobile-nav-item @viewModel.MenuItem.CssClass">
<i class="menu-item-icon @viewModel.MenuItem.Icon" aria-hidden="true"></i>
<span class="mobile-item-text"> @viewModel.MenuItem.DisplayName </span>
</a>
</li>
}
<li class="lpx-mobile-nav-tab menu-toggle">
<a href="javascript:void(0)" class="lpx-mobile-hamburger" data-lpx-mobile-menu-toggle="routes">
<span class="hamburger-icon" aria-hidden="true">
<span class="icon-part"></span>
<span class="icon-part"></span>
<span class="icon-part"></span>
<span class="icon-part"></span>
<span class="icon-part"></span>
<span class="icon-part"></span>
</span>
</a>
</li>
<li class="lpx-mobile-nav-tab">
<a class="lpx-mobile-nav-item" data-lpx-mobile-menu-toggle="settings">
<i class="menu-item-icon bi bi-gear-wide-connected" aria-hidden="true"></i>
<span class="mobile-item-text">Settings</span>
</a>
</li>
<li class="lpx-mobile-nav-tab">
@if (CurrentUser.IsAuthenticated)
{
<a class="lpx-mobile-nav-item" data-lpx-mobile-menu-toggle="user">
<div class="lpx-avatar">
<img class="lpx-avatar-img" src="@Model.ProfileImageUrl" alt="admin avatar">
</div>
<span class="mobile-item-text">@CurrentUser.UserName</span>
</a>
}
else
{
<a href="~/account/login" class="lpx-mobile-nav-item">
<i class="menu-item-icon bi bi-person-fill" aria-hidden="true"></i>
<span class="mobile-item-text">@L["Login"]</span>
</a>
}
</li>
</ul>
</div>
<div class="lpx-mobile-menu hidden">
<div class="lpx-logo-container">
<a href="/">
<div class="lpx-brand-logo"></div>
</a>
</div>
<ul class="lpx-nav-menu d-none" data-lpx-mobile-menu="routes">
@await Component.InvokeAsync(typeof(MainMenuViewComponent))
</ul>
<ul class="lpx-nav-menu d-none" data-lpx-mobile-menu="settings">
@await Component.InvokeAsync(typeof(MobileGeneralSettingsViewComponent))
</ul>
<ul class="lpx-nav-menu d-none" data-lpx-mobile-menu="user">
<div class="d-flex ps-3 pe-3">
<div class="lpx-avatar me-2">
<a class="lpx-mobile-nav-item"><img class="lpx-avatar-img" src="@Model.ProfileImageUrl" alt=""></a>
</div>
<div class="d-flex flex-column" style="line-height: normal">
<span class="fs-12">@L["Welcome"] <span class="color-active-text"> @CurrentUser.UserName </span> </span>
<span class="color-active-text">@CurrentUser.Name @CurrentUser.SurName</span>
<span class="fs-12">@CurrentUser.Email</span>
</div>
</div>
@if (Model.UserMenu != null)
{
foreach (var menuItem in Model.UserMenu.Items)
{
var url = string.IsNullOrEmpty(menuItem.Url) ? "#" : Url.IsLocalUrl(menuItem.Url) ? Url.Content(menuItem.Url.EnsureStartsWith('~')) : menuItem.Url;
<li class="outer-menu-item">
<a class="lpx-menu-item-link lpx-menu-item @menuItem.CssClass" href="@url" target="@menuItem.Target" id="@menuItem.ElementId">
<span class="lpx-menu-item-icon"><i class="lpx-icon bi @menuItem.Icon" aria-hidden="true"></i></span>
<span class="lpx-menu-item-text hidden-in-hover-trigger">@menuItem.DisplayName</span>
</a>
</li>
}
}
</ul>
</div>
</div>
For Point 2, It is already referred in the project, please see screenshot:
You also need to install admin.application , admin.application.contract, admin.httpapi etc... packages.
The swagger UI missing some resources, does 7.0.3 has bugs?, please see attached screenshots:
You can move the DocsWebModule to the WebPublic project.
Hi,
You can check this:
https://support.abp.io/QA/Questions/4791/Publish-single-project-app-Net-Core-ABP-701-to-shared-hosting-get-50030-error
Hi,
You can check this: https://github.com/abpframework/abp/blob/rel-5.2/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/ClientDemoService.cs#L39
https://github.com/abpframework/abp/blob/rel-5.2/templates/module/aspnet-core/test/MyCompanyName.MyProjectName.HttpApi.Client.ConsoleTestApp/appsettings.json#L10
Hi,
You can check this: https://docs.abp.io/en/abp/latest/Multi-Tenancy#custom-tenant-resolvers
Pseudo code:
public class DocumentTenantResolverContributor : HttpTenantResolveContributorBase
{
public override string Name { get; }
protected override Task<string> GetTenantIdOrNameFromHttpContextOrNullAsync(ITenantResolveContext context, HttpContext httpContext)
{
if(httpContext.Request.GetDisplayUrl().Contains("/..."))
{
context.Handled = true;
}
return Task.FromResult<string>(null);
}
}
Configure<AbpTenantResolveOptions>(options =>
{
options.TenantResolvers.Insert(0, .);
});
The
TenantResolverContributorneeds add to as the first contributor
Hi,
How we can add multiple policies. is it comma seperated and will it consider "and" or "or" condition for permissions?
Unfortunately not.
Hi,
Do you want to switch to host when navigating the document page, right?
Hi,
See: https://docs.abp.io/en/abp/latest/Object-Extensions#getproperty
var identity = context.ClaimsPrincipal.Identities.FirstOrDefault();
var userId = identity?.FindUserId();
if (userId.HasValue)
{
var userManager = context.ServiceProvider.GetRequiredService<IdentityUserManager>();
var user = await userManager.GetByIdAsync(userId.Value);
var licienceId = user.GetProperty<string>("LicienceId");
......
}
Hi,
Sorry, I just realized you are using angular UI.
You can check the document to patch a menu: https://docs.abp.io/en/abp/4.2/UI/Angular/Modifying-the-Menu#how-to-patch-or-remove-a-navigation-element
const newIdentityUserRouteConfig: Partial<ABP.Route> = {
parentName: eIdentityRouteNames.IdentityManagement,
requiredPolicy: 'permission key here',
};
this.routes.patch(eIdentityRouteNames.Users, newIdentityUserRouteConfig);