Hello,
we recently updated from ABP 7.3 to 8.0.5.
Since the update, the system no longer sends email confirmation and forgot password emails. Our system sends other status emails, which work. I noticed that under Tenants -> Setting Management there is now an option to "Allow changing email settings" and suspected that as the cause. After activation, I was able to update email settings within the tenants, but this didn't make any changes.
I can see that the AbpBackgroundJobs table is overflowing with failed email jobs:
Inside the application logfile, I see the following error:
Mailbox unavailable. The server response was: 5.7.0 The sender address used in the Mail From does not belong to your authenticated STRATO package.
Strangely, we no longer use Strato email addresses at all. We were using Strato, but switched about 2 years ago and of course changed the SMTP settings - it always worked and the other system emails also work.
I can't find definitions for Strato SMTP server anywhere - neither in the tenants' email settings nor in the database tables (AbpSettings, AbpSettingDefinitions).
Apparently there are some very old email settings cached somewhere, but I can't find out where. We don't use Redis and I have already tried restarting the server. There are also no email settings stored in the appsettings.json.
Additional information: We have a central login page for all tenants and therefore I have overwritten some ABP methods (LoginModel, ResetPasswordModel, SendSecurityCodeModel etc.) by simply deactivating the TenantFilter, searching for the user using the email address (a user cannot exist in multiple tenants) and setting the current tenant based on the user (CurrentTenant.Change(user.tenantId)). But I don't think this has anything to do with the problem, since - as written above - Strato's SMTP server addresses are not stored anywhere.
What is happening here?
Thanks in advance.
PS: In my development environment everthing works as expected.
Hello,
I developed a MAUI app, on my development machine everything runs fine, but when I try to connect the production server from the MAUI app on Android, it crashes while trying to connect to RemoteService/ OIDC:
Java.Security.Cert.CertificateException The remote certificate was rejected by the provided RemoteCertificateValidationCallback.
My production server has a valid certificate from Let's encrypt. Also, I can open https://productionsite/.wellknown/openid-configuration and it also shows a valid certificate (even on the Android device's/ emulator's browser), but the MAUI app rejects the certificate.
I can even reproduce the behavior by creating a blank ABP project with MAUI enabled and trying to run it locally using ngrok. As long as MAUI connects to localhost, it works. But when I change RemoteService > Default > BaseUrl or Oidc > Options > Authority in MAUIs appsettings.json to ngrok URL, the same certification rejecting error occurs.
I'm completely lost... struggling for a week now, having read abp.io documentation and hundreds of forum entries, but nothing worked out. Probably I'm missing something completely stupid and trivial, but I can't find the solution... Please point me in the right direction!!
Thanks
Hello,
I'm trying to implement customized themes for some tenants (they need their own branding) and hide the default themes for them. Therefore, I created new LeptonX themes and added them in WebModule:
options.Styles.Add("tenant1-light",
new LeptonXThemeStyle(
LocalizableString.Create<LeptonXResource>("Theme:light"), "bi bi-sun-fill"));
options.Styles.Add("tenant1-dark",
new LeptonXThemeStyle(
LocalizableString.Create<LeptonXResource>("Theme:dark"), "bi bi-moon-fill"));
options.Styles.Add("tenant2-light",
new LeptonXThemeStyle(
LocalizableString.Create<LeptonXResource>("Theme:light"), "bi bi-sun-fill"));
options.Styles.Add("tenant2-dark",
new LeptonXThemeStyle(
LocalizableString.Create<LeptonXResource>("Theme:dark"), "bi bi-moon-fill"));
Since I don't want users to see the customized themes of other tenants (and also not the default styles!), I have overriden Themes\LeptonX\Components\Common\GeneralSettings\Default.cshtml and Themes\LeptonX\Components\Common\MobileGeneralSettings\Default.cshtml to only display themes of the current tenant.
It works, but how can I change the default theme per tenant? Normally, DefaultStyle is set in WebModule:
options.DefaultStyle = LeptonXStyleNames.Light;
I need a tenant-specific DefaultStyle (e.g. "tenant1-light" for tenant1, "tenant2-light" for tenant2). With my current approach, when a tenant1 user opens the page for the first time, it displays the default light style (although this is not visible in the user's theme list) instead of the tenant1-light style . He can switch to tenant1-light manually and this is persisted, however, when he changes the language, it falls back to default light style.
Additionally, with my approach the "System" theme doesn't work, as it uses default light/dark instead of my customized ones.
Is there a better approach to implement tenant-specific themes?
Thanks in advance and best regards
Hello,
as my users always complained about tenant-specific URLs, I decided to develop a unified login. Therefore, I extended all required methods such as LoginModel, ForgotPasswordModel, ResetPasswordModel and so on to work without multi-tenancy.
For the LoginModel, I disable multi-tenancy filter, get the tenant ID by the inserted user name (which is unique for all tenants), change CurrentTenant to the user's tenant and then perform PasswordSignIn.
Everything works almost as expected, but I got a strange issue: in some very rare cases, when users try to login from the unified login page, they receive an error 500, because a duplicate CmsUser insertion is tried. I can see from the sql server logs that it tries to find the cms user with tenant null:
exec sp_executesql N'SELECT TOP(1) [c].[Id], [c].[ConcurrencyStamp], [c].[Email], [c].[EmailConfirmed], [c].[ExtraProperties], [c].[IsActive], [c].[Name], [c].[PhoneNumber], [c].[PhoneNumberConfirmed], [c].[Surname], [c].[TenantId], [c].[UserName]
FROM [CmsUsers] AS [c]
WHERE ((@__ef_filter__p_0 = CAST(1 AS bit)) OR ([c].[TenantId] = @__ef_filter__CurrentTenantId_1)) AND ([c].[Id] = @__id_0)
ORDER BY [c].[Id]',N'@__ef_filter__p_0 bit,@__ef_filter__CurrentTenantId_1 uniqueidentifier,@__id_0 uniqueidentifier',@__ef_filter__p_0=0,@__ef_filter__CurrentTenantId_1=null,@__id_0='[userid]'
Important part: it searches for __CurrentTenantId_1=null although I changed the tenant.
Of course this doesn't return a user (as the user is tenant user and not host user) and therefore it tries to insert a new CmsUser, (interestingly with the correct switched tenantid!). This if course produces an error because of the insertion of a duplicate Id.
I don't understand why this happens only in rare cases and not always. But I want to figure out and therefore, I need to know where this CmsUser Inserting during login process takes place. I couldn't find it from the sources. Maybe you could point me to the right direction to help me fix it.
Thanks in advance!
Hello,
I extended IdentityUser with some properties. Since 6.0.0-rc.3, users can edit these properties themselves by navigating to My Account > Personal Information. While this might be helpful in some situations, in my setup it is critical that the user may NOT edit the properties (e.g. I use them to set special discount conditions).
Is this a bug or was this intentionally added? If the latter, it would have been great if this had been announced before, as this might be a critical change for some users like me. I only discovered it by accident.
We can hide properties by setting:
options.UI.OnTable.IsVisible = false; options.UI.OnEditForm.IsVisible = false; options.UI.OnCreateForm.IsVisible = false;
However this hides the properties in administrative User Management UI as well. I want the properties to be set only by administrative users. What can I do? It would be the best if we could set for every property whether the user can edit it himself.
Thanks and best Claus
Hello,
in one of my applications, all users have to be registered and logged in to use the app. Now I'd like to implement some CMS features, such as Blogs, Ratings,... how can I accomplish it, since CMS kit seems to be related only to public website? I added a "dummy" public website, because without the public web, abp cli it didn't create the necessary database migrations. Now I have the required tables, however I can't add e.g. the rating component since the ViewComponents namespace is Volo.CmsKit.Public.Web.Pages.CmsKit.Shared.Components.Rating and thereforce I can't access it from the "non-public" website.
What can I do to use CMS kit in non-public website?
Thanks and best Claus
Hello,
when I consume an AppService via REST, JsonProperty names are not applied. It always returns C# name in camelCase. I found the following issues, stating that it should have been fixed in 4.3: GitHub abp Support
However, the phenomenon still exists in 4.3.3:
Also tried to create a new test project with abp suite in 4.3.3, same result:
What am I missing?
Thanks an best regards Claus
Hello,
I'm currently developing a webshop. Therefore I thought of having the product list and order process in public website, while admin tasks should be in the backend interface.
My problem is that I can't get access to the entities from web public. I noticed that I can inject e.g. the IProductAppService in Controllers, however, I can't access JavaScript API Controllers. Something like
var productService = window.myWebShop.products.products;
...
doesn't work (of course in backend app it works).
Additionally, I use DevExtreme for ASP.net Core and here I also can't access API Controllers (since the backend has a different port, it creates a wrong Controller URL). So, this:
Html.DevExtreme().DataGrid<Product>()
.DataSource(d => d.Mvc()
.Controller("Product") // Application Service Name without 'AppService'
.LoadAction("GetList") // Method Name without 'Async'
.Key("id")
)
doesn't work, too.
I also tried to set RemoteServices of public website's appsettings.json to the location of the backend, but it didn't work either:
"RemoteServices": {
"Default": {
"BaseUrl": "https://localhost:44309"
}
},
Could you please point me into the right direction? I think I might have to register AbpServiceProxies somewhere?
Thanks and best regards Claus
Hello,
is it possible to add "public website" and "cms kit" modules to an existing application that was initially created without the public website? Or do I have to create a completely new project? The latter would require lots of work merging the two projects, therefore I was hoping to find a possibility to add those modules.
Thanks and best regards Claus
Hello,
I'm excitedly waiting for 4.3.0. Since preview release date was moved a couple of times, I wanted to try out the nightly builds. When I run:
abp switch-to-nightly
ABP nightly myget feed is added to the nuget.config:
[17:22:40 INF] ABP CLI (https://abp.io) [17:22:40 INF] Version 4.2.2 (Stable) [17:22:41 INF] Adding "https://www.myget.org/F/abp-nightly/api/v3/index.json" (ABP Nightly) to nuget sources...
However, VS can't resolve the Pro packages- neither from ABP Commercial Nuget feed nor from ABP Nightly feed:
What can I do to resolve the packages?
Thank you very much and best regards Claus