Your web application and authentication application seem different. You got this error on your authentication application.
If you have .HttpApi.Host
or separated .IdentityServer
project, you have to run abp install-libs
command for them too.
Yeah, I know. Please check this documentation: https://docs.abp.io/en/abp/latest/UI/AspNetCore/Customization-User-Interface#completely-overriding-a-razor-page
You should create that file in that path to override it. After creating that file and pasting the content which I posted above, you're ready to customize that page. You can make changes however you want in that file.
Hi @gozdeyildirmaz
We've reproduced this problem. This is a bug for pages under Saas. I've created an internal issue and we'll fix it as soon as possible.
You can check the same data in Entity Changes tab in Administration -> Audit Logs page.
Go to that page and type Volo.Saas.Tenant
into Entity Type input:
I don't know if it's correct behavior or not, but the reason is the selected menu stays always open because of tree logic in lepon blazor menu tree.
If you navigate to another page that isn't under Administration, then you can expand & collapse the administration menu.
Hi @nhontran
In that version, Saas module is dependent on Payment module because of technical issues. That dependency is removed in v5,
You can remove those tables from migrations if you don't use it. https://support.abp.io/QA/Questions/2509/Remove-Pay-tables-from-Database-through-migrations#answer-81fc4c0a-24eb-af2a-b398-3a01c1e58c5b
But Make sure you haven't disabled the PayPlans table.
Hi @mc86
Your object type is ResponseModelLoadResult. Do you have any special serializer for that class.
As I see that class is from DevExpress. You should consider mapping that data to a DTO and providing it over API.
Have you enabled Global Featues of CmsKit ?
You can apply following code block in your GlobalFeatureConfigurator in Domain.Shared project.
GlobalFeatureManager.Instance.Modules.CmsKit(cmsKit =>
{
cmsKit.EnableAll();
});
GlobalFeatureManager.Instance.Modules.CmsKitPro(cmsKitPro =>
{
cmsKitPro.EnableAll();
});
After enabling, re-create and apply migration and you'll see the required tables will be created.
If it still doesn't work, please let us now
My existing project is in webassembly but due to speed issue we are converting into server app. So for this I created server app from abp suite and I can see there is no host project so do we need to add all the pages in blazor project only?
Yes you should do it in your Blazor project if it's blazor-server.
Also I have a fresh server app and added only my connection string in appsettings.json file. I am getting below error If I try to run project.
You have to run following command in your project before run
abp install-libs
Hi @
You can place the following page in your .Web project to customize it.
/Pages/Identity/OrganizationUnits/Index.cshtml
@page
@using System.Net
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Mvc.Localization
@using Volo.Abp.AspNetCore.Mvc.UI.Layout
@using Volo.Abp.AspNetCore.Mvc.UI.Packages.JsTree
@using Volo.Abp.Identity
@using Volo.Abp.Identity.Localization
@using Volo.Abp.Identity.Web.Navigation
@using Volo.Abp.Identity.Web.Pages.Identity.OrganizationUnits
@model IndexModel
@inject IHtmlLocalizer<IdentityResource> L
@inject IAuthorizationService Authorization
@inject IPageLayout PageLayout
@{
PageLayout.Content.Title = L["OrganizationUnits"].Value;
PageLayout.Content.BreadCrumb.Add(L["Menu:IdentityManagement"].Value);
PageLayout.Content.MenuItemName = IdentityMenuNames.OrganizationUnits;
}
@section styles {
<abp-style-bundle name="@typeof(IndexModel).FullName">
<abp-style type="typeof(JsTreeStyleContributor)" />
<abp-style src="/Pages/AbpPermissionManagement/permission-management-modal.css" />
<abp-style src="/Pages/Identity/OrganizationUnits/organization-unit.css" />
</abp-style-bundle>
}
@section scripts {
<abp-script-bundle name="@typeof(IndexModel).FullName">
<abp-script src="/client-proxies/identity-proxy.js" />
<abp-script type="typeof(JsTreeScriptContributor)" />
<abp-script src="/Pages/AbpPermissionManagement/permission-management-modal.js" />
<abp-script src="/Pages/Identity/OrganizationUnits/index.js"></abp-script>
<abp-script src="/Pages/Identity/OrganizationUnits/addMemberModal.js"></abp-script>
<abp-script src="/Pages/Identity/OrganizationUnits/addRoleModal.js"></abp-script>
</abp-script-bundle>
}
@section content_toolbar {
}
<div id="OrganizationUnitsWrapper">
<abp-row>
<abp-column size-md="_12" size-lg="_6">
<abp-card>
<abp-card-body>
<abp-card-title>
<abp-row h-align="Between">
<abp-column>
<span style="font-size:initial"> @L["OrganizationTree"]</span>
</abp-column>
<abp-column>
@if (await Authorization.IsGrantedAsync(IdentityPermissions.OrganizationUnits.ManageOU))
{
<abp-button class="float-end" button-type="Primary" size="Small" name="CreateOrganizationUnit" text="@L["AddRootUnit"].Value" icon="plus" />
}
</abp-column>
</abp-row>
</abp-card-title>
<div id="OrganizationUnitEditTree"></div>
<div id="OrganizationUnitTreeEmptyInfo" class="text-muted">@L["NoOrganizationUnits"]</div>
</abp-card-body>
</abp-card>
</abp-column>
<abp-column size-md="_12" size-lg="_6">
<abp-card>
<abp-card-header>
<h3 class="selected-organizationunit-name"></h3>
</abp-card-header>
<abp-card-body class="p-0">
<abp-tabs>
<abp-tab name="Members" title="@L["Members"].Value">
<div id="OuMembersTable" style="display:none">
@if (await Authorization.IsGrantedAsync(IdentityPermissions.OrganizationUnits.ManageUsers))
{
<div class="text-end mb-3">
<abp-button button-type="Primary" size="Small" name="AddMember" text="@L["AddMember"].Value" icon="plus" />
</div>
}
<abp-table striped-rows="true" class="nowrap"></abp-table>
</div>
<div id="OuMembersEmptyInfo" class="text-muted">
@L["SelectAnOrganizationUnitToSeeMembers"]
</div>
</abp-tab>
<abp-tab name="Roles" title="@L["Roles"].Value">
<div id="OuRolesTable" style="display:none">
@if (await Authorization.IsGrantedAsync(IdentityPermissions.OrganizationUnits.ManageRoles))
{
<div class="text-end mb-3">
<abp-button button-type="Primary" size="Small" name="AddRole" text="@L["AddRole"].Value" icon="plus" />
</div>
}
<abp-table striped-rows="true" class="nowrap"></abp-table>
</div>
<div id="OuRolesEmptyInfo" class="text-muted">
@L["SelectAnOrganizationUnitToSeeRoles"]
</div>
</abp-tab>
</abp-tabs>
</abp-card-body>
</abp-card>
</abp-column>
</abp-row>
</div>
You can follow this documentation for overriding razor pages: https://docs.abp.io/en/abp/latest/UI/AspNetCore/Customization-User-Interface#completely-overriding-a-razor-page
Both Blazor Wasm and Server don't have login UI, so you're redirected to authentication server UI to log in. So the authentication server is built with MVC UI. You can customize the login page like in a regular MVC application template: https://docs.abp.io/en/abp/latest/UI/AspNetCore/Customization-User-Interface#overriding-a-page
Please note that:
IdentityServer
ProjectHttpApi.Host
project.Also, you can follow this article for a more detailed explanation: https://community.abp.io/posts/how-to-customize-the-login-page-of-an-abp-blazor-application-by4o9yms