Abp Version 9.3
Specified module 'app' does not exist. Looked in the following directories: /src/app/book /src/app/app /src/app /src
yarn ng generate module author --module app --routing --route authors
(Tutorial)I activated the Google external provider in one of my projects. If the user logs in with a local login when isActive=false
, the warning "You are not allowed to log in! Your account is inactive or needs to confirm your email/phone number
" is given. If the same user logs in with Google, they stay on the login page but the same warning message should come but it does not.
Hello,
I am currently working on customizing the MVC Register page in my ABP Framework project. I have added a custom JavaScript file named cregister.js
to handle additional client-side logic. However, when I deploy the project, I encounter the following error:
Volo.Abp.AbpException: Could not find file '/Pages/Account/cregister.js'
I have created the cregister.js
file and placed it in the /Pages/Account/
directory.
I have updated the Register.cshtml
file to include the script bundle configuration as follows:
@section scripts { <abp-script-bundle name="@typeof(Volo.Abp.Account.Public.Web.Pages.Account.RegisterModel).FullName"> <abp-script type="@typeof(ZxcvbnScriptContributor)"/> <abp-script src="/Pages/Account/PasswordComplexityIndicator.js"/> <abp-script src="/scripts/cregister.js"/> </abp-script-bundle> } }
I have also configured the bundle in the HttpApiHostModule.cs file as follows:
Configure<AbpBundlingOptions>(options =>
{
options
.ScriptBundles
.Configure(typeof(RegisterModel).FullName, bundle => {
bundle.AddFiles(
"/Pages/Account/cregister.js"
);
});
});
Actually, according to this link, I shouldn't need a bundle configuration for a single file. I don't get any errors while debugging, but I get this error on the server?
In an ABP application where email verification is mandatory, when a user clicks the 'verify' button during registration, a confirmation token email is sent from confirmuser.js. Then, the confirmation status is checked every 3 seconds using setInterval. However, there’s currently no timeout mechanism. Instead, it might be better to use WebSocket or setTimeout (for example, checking up to 20 times every 3 seconds). Additionally, if a 'Resend' button is displayed when the timeout expires, users can resend the confirmation email, creating a more flexible and user-friendly experience. Thanks.
I need to make SMS (ISmsSender implementation) and other implementations that call API in one of my applications. In which existing project should I create the such concrete classes that require these operations or should I add a new project (Class library) for these operations?
I created my project via Abp Studio. But SampleDomainTests not appear in my Test Explorer, so I cannot run unit test. I think Abp studio is generating the test code incorrectly.
using System.Threading.Tasks;
using Shouldly;
using Volo.Abp.Identity;
using Volo.Abp.Modularity;
using Xunit;
namespace Ekol.Abc.Samples;
/* This is just an example test class.
* Normally, you don't test code of the modules you are using
* (like IdentityUserManager here).
* Only test your own domain services.
*/
public abstract class SampleDomainTests<TStartupModule> : AbcDomainTestBase<TStartupModule>
where TStartupModule : IAbpModule
{
private readonly IIdentityUserRepository _identityUserRepository;
private readonly IdentityUserManager _identityUserManager;
protected SampleDomainTests()
{
_identityUserRepository = GetRequiredService<IIdentityUserRepository>();
_identityUserManager = GetRequiredService<IdentityUserManager>();
}
[Fact]
public async Task Should_Set_Email_Of_A_User()
{
IdentityUser adminUser;
/* Need to manually start Unit Of Work because
* FirstOrDefaultAsync should be executed while db connection / context is available.
*/
await WithUnitOfWorkAsync(async () =>
{
adminUser = await _identityUserRepository
.FindByNormalizedUserNameAsync("ADMIN");
await _identityUserManager.SetEmailAsync(adminUser, "newemail@abp.io");
await _identityUserRepository.UpdateAsync(adminUser);
});
adminUser = await _identityUserRepository.FindByNormalizedUserNameAsync("ADMIN");
adminUser.Email.ShouldBe("newemail@abp.io");
}
}
The "remember me" feature, whether it is authorization code or resource owner password, does not work properly in Angular. It is said that work is being done here, but it has not been fixed.
Accept: / Accept-Encoding: gzip, deflate, br Accept-Language: en Cache-Control: no-cache Connection: keep-alive Content-Length: 81 Content-Type: application/x-www-form-urlencoded Cookie: .AspNetCore.Culture=c%3Dtr%7Cuic%3Dtr; __tenant=39f7b3e6-b1a7-61af-ec9f-cc85613d2ec4 Host: localhost:44397 User-Agent: PostmanRuntime/7.40.0 Postman-Token: bb994fdb-b047-4a2f-b267-fe49fac1dbe8
HostModule:( I don't use Multitenancy)
//if (MultiTenancyConsts.IsEnabled)
//{
// app.UseMultiTenancy();
//}
When I try to get a token from Postman, I get the error "tenant not found". But I don't use Multitenancy feature. (Cookies is cleaned)
I have an abp project consisting of the addresses https://online.abc.com (angular) and https://online-api.abc.com. Additionally, I have another abp project using https://account.abc.com as an external login. In other words, when a user wants to log in, they are redirected to https://account.abc.com and log in successfully. However, when they log out, the call to https://online-api.abc.com/connect/endsession is made for logout. Despite wanting to log out from https://account.abc.com as well (meaning, calling https://account.abc.com/connect/endsession), it doesn't log out. How can I achieve this?
online.abc.com HostModule : (Enable Local Login = false)
context.Services.AddAuthentication().AddAbpOpenIdConnect("oidc", options =>
{
options.Authority = configuration["ExternalProvider:Authority"];
options.RequireHttpsMetadata = Convert.ToBoolean(configuration["ExternalProvider:RequireHttpsMetadata"]); ;
options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
options.ClientId = configuration["ExternalProvider:ClientId"];
options.ClientSecret = configuration["ExternalProvider:ClientSecret"];
options.UsePkce = true;
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("role");
options.Scope.Add("email");
options.Scope.Add("phone");
options.ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "sub");
});