hi
Angular does not support slide.
If the access token expires, it will use the refresh token(offline_access) to get a new one.
But I think you can customize this logic in angular, and I will ask angular colleagues.
Please share a simple project. thanks
liming.ma@volosoft.com
hi
You can set it in azure to return the claim of the user's photo, and then you can get it in the OpenIdConnect
event and save it.
.AddAbpOpenIdConnect("oidc", options =>
{
//...
options.Events.OnTokenValidated = tokenValidatedContext =>
{
var photoClaim = tokenValidatedContext.Principal.Claims.FirstOrDefault(x => x.Type == "photo");
return Task.FromResult(Task.CompletedTask);
};
//...
});
If this doesn't work, you can request azure's api to get photo through access-token.
await httpContext.GetTokenAsync("access_token");
hi
We will update it in next patch version. Thanks
Thank you. I will test it in the next few days.
What's the class name that implement the IDepartmentsInfoRepository
?
It must be EfCoreDepartmentsInfoRepository
.
hi
Please update the src/Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonX/Themes/LeptonX/Components/SideMenu/MobileNavbar/Default.cshtml
with below code
@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.Id.HasValue)
{
<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="@CurrentUser.UserName 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">
<img class="lpx-avatar-img" src="@Model.ProfileImageUrl" alt="@CurrentUser.UserName avatar" />
</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>