Hello,
I think this issue happens when Required lower case character
and Required upper case character
are enabled in Identity Server settings. I tried with Arabic language characters. The Arabic language does not have uppercase or lowercase characters.
When I check the official Microsoft Documentation for upper case rule I saw this explanation "True if passwords must contain a upper case ASCII character."
Characters except the Latin alphabet are not ASCII characters.
You can disable these settings in Administration->Settings->Identity Server
tab
Hello,
Sorry for the late response. I try the following steps to reproduce your error. But I can't reproduce your error. Please check the steps.
By the way, I see the error is 0 Unknown Error
. This means the HTTP status code is 0. Could it be related to something else?
By default error modal displays after the HTTP 409 error. You can check this file
I created a new app with the app pro template in the 5.1.3 version.
Add a new entity in the suite which named Book
with the suite.
Implement IHasConcurrencyStamp
interface to BookUpdateDto
and BookDto
// BookdDto
using System;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Domain.Entities;
namespace pro513.Books
{
public class BookDto : FullAuditedEntityDto<Guid>, IHasConcurrencyStamp
{
public string name { get; set; }
public string ConcurrencyStamp { get; set; }
}
}
// BookUpdatedDto
using System;
using System.ComponentModel.DataAnnotations;
using Volo.Abp.Domain.Entities;
namespace pro513.Books
{
public class BookUpdateDto : IHasConcurrencyStamp
{
public string name { get; set; }
public string ConcurrencyStamp { get; set; }
}
}
Generate proxies with abp generate-proxy -t ng
command.
Update BookAppService
's UpdateAsync
method with the following lines
[Authorize(pro513Permissions.Books.Edit)]
public virtual async Task<BookDto> UpdateAsync(Guid id, BookUpdateDto input)
{
var book = await _bookRepository.GetAsync(id);
ObjectMapper.Map(input, book);
// this line added
book.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);
book = await _bookRepository.UpdateAsync(book, autoSave: true);
return ObjectMapper.Map<Book, BookDto>(book);
}
Update BookComponent
's submitForm
method with the following lines
submitForm() {
if (this.form.invalid) return;
// service.update method's second parameter replaced from this.form.value to {...this.selected, ...this.form.value}
const request = this.selected
? this.service.update(this.selected.id, {...this.selected, ...this.form.value})
: this.service.create(this.form.value);
this.isModalBusy = true;
request
.pipe(
finalize(() => (this.isModalBusy = false)),
tap(() => this.hideForm())
)
.subscribe(this.list.get);
}
Hello
You can remove the saas parent menu as shown below
import { eSaasRouteNames } from '@volo/abp.ng.saas/config';
function configureRoutes(routes: RoutesService) {
return () => {
routes.patch(eSaasRouteNames.Editions, { parentName: null, order: 2 });
routes.patch(eSaasRouteNames.Tenants, { parentName: null, order: 3 });
routes.remove([eSaasRouteNames.Saas]);
// ... other route config
};
}
Hello
Q1) Icons in the side menu are hidden except for the root items' icons. This is by the design of the lepton theme. If you want to display these icons you can change the display property of these icons like below.
// your-style-file
.lp-opened-sidebar .lp-sidebar .lp-sidebar-navi > ul ul span.lp-icon {
display: table-cell;
}
Q2) Currently confirmation popup's icon can not customize. I created an issue Please follow that for the progress.
Hello,
Thanks for reporting the issue. I will notify you when the fix is available in the 5.0.x version
If you want to install 5.0.0 packages you can add abp packages in the resolutions section in the package.json
// package.json
{
"resolutions": {
"@abp/ng.account": "5.0.0",
"@abp/ng.account.core": "5.0.0",
"@abp/ng.core": "5.0.0",
"@abp/ng.feature-management": "5.0.0",
"@abp/ng.identity": "5.0.0",
"@abp/ng.permission-management": "5.0.0",
"@abp/ng.schematics": "5.0.0",
"@abp/ng.setting-management": "5.0.0",
"@abp/ng.tenant-management": "5.0.0",
"@abp/ng.theme.basic": "5.0.0",
"@abp/ng.theme.shared": "5.0.0",
}
}
Hello,
You can read query parameters value with ActivatedRoute's queryParameters stream
Example
import { ActivatedRoute } from '@angular/router';
class YourComponent {
constructor(private route: ActivatedRoute){
this.route.queryParams.subscribe(params => {
const tenant = params['Tenant']
})
}
}
There are 2 methods below for how can you change the logo.
Method 1: There is a CSS variable named logo-reverse which is assigned to the background property of the 'navbar-brand' class. You can change this variable's value in your component. Example:
import { AfterViewInit, ElementRef } from '@angular/core';
class YourComponent implements AfterViewInit{
constructor(private elRef: ElementRef){
}
ngAfterViewInit() {
this.elRef.nativeElement.style.setProperty('--logo-reverse', `url(${logoUrl})`)
}
}
Method 2: You can set a template variable element that has background property for the logo. After you can change this element's background-image style property. Example:
<!-- YOUR COMPONENT TEMPLATE -->
<a #logoLink class="navbar-brand" routerLink="/" alt="Logo"></a>
class YourComponent implements AfterViewInit {
@ViewChild("logoLink")
logoLink: ElementRef<HTMLElement>
ngAfterViewInit() {
this.logoLink.nativeElement.setProperty('background', `url(${logoUrl})`)
}
}
Full Guide Example:
import { AfterViewInit, ElementRef } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
class YourComponent implements AfterViewInit {
constructor(private route: ActivatedRoute, private elRef: ElementRef){}
ngAfterViewInit() {
this.route.queryParams.subscribe(params => {
const tenant = params['Tenant']
const logoUrl = "YOUR LOGO URL";
this.elRef.nativeElement.style.setProperty('--logo-reverse', `url(${logoUrl})`);
})
}
}
Hello,
There is a gulp file that builds styles in Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton project.
In Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton first install packages with yarn command
After build styles with gulp command
Hello,
Please follow the steps below to replace the existing CSS file
{
"compilerOptions": {
// other compiler options
"paths": {
// other tsconfig paths
"@assets/*": [
"src/assets/*"
]
}
}
}
import css from '@assets/your-css-file';
export default css;
{
"projects": {
"pro500sep": {
"architect": {
"build": {
"configurations": {
"production": {
"fileReplacements": [
// other replacements
{
"replace": "node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton6.js",
"with": "src/assets/your-js-file"
}
]
},
"development": {
"fileReplacements": [
{
"replace": "node_modules/@volo/abp.ng.theme.lepton/dist/global/styles/lepton6.js",
"with": "src/assets/your-js-file"
}
]
}
}
}
}
}
}
}
Hello,
Sorry for the late response.
You need to copy lepton7.css file and assets folder which in Volo.LeptonTheme/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Lepton/Themes/Lepton/Global directory to your PublicLayout and IdentityServer projects' wwwroot directory.
After copying files, you need to do the Set Style Path section in Customize Lepton Theme with Custom CSS in MVC/Razor Pages UI documentation for each project
For the angular project copy the backgrounds, fonts and imgs folders and lepton7.css to angular/src/assets directory.
After copying files, set customStyle property to true as shown in the document and add your CSS file to your style.scss file. In this case, your scss file must include the line below
@use './assets/lepton7.css';
Information about after the customization, the style selection box will not be included in the theme settings form and ThemeLeptonModule does not load its own styles
Hello alaa
You can add provider buttons by replacing Login Component.
You can follow this guide to replace Login Component.
Also we use angular-oauth2-oidc library in abp. You can check how we implemented Authorization Code Flow strategy and Resource Owner Password flow with this library at auth-flow-strategy file.