Hi,
See: https://stackoverflow-com.translate.goog/questions/77098132/error-generating-jwt-token-during-asp-net-core-web-api-authorization
Hi,
Here is the release blog post https://blog.abp.io/abp/announcing-abp-8-2-release-candidate
here is the migration guide https://docs.abp.io/en/abp/8.2/Migration-Guides/Abp-8_2
Hi,
You can make the Entity as a Host Entity
Then change the current tenant context when querying shared data https://docs.abp.io/en/abp/latest/Multi-Tenancy#change-the-current-tenant
using (CurrentTenant.Change(null)) // change to host
{
return await _productRepository.GetCountAsync();
}
Property 'JsonResult.SerializerSettings' must be an instance of type 'System.Text.Json.JsonSerializerOptions'.
See:
How do I change the UI for login page ?
See https://support.abp.io/QA/Questions/160/How-to-customize-an-ABP-project
Also, I want to keep login page as my landing page, how can I achieve that ?
You can add the route guard to the home component
https://docs.abp.io/en/abp/latest/UI/Angular/Permission-Management#permission-guard
okay
Hi,
You can try:
public class MyFeatureDefinitionProvider : FeatureDefinitionProvider
{
public override void Define(IFeatureDefinitionContext context)
{
var op = new List<string>(){"GROUP", "WAREHOUSE"};
var validate = new DropDownValueValidator(op);
var myGroup = context.AddGroup("MyApp");
myGroup.AddFeature(
"Options",
defaultValue: "GROUP",
displayName: new FixedLocalizableString("Options"),
description: new FixedLocalizableString("Options"),
valueType: new SelectionStringValueType(validate)
{
ItemSource = new StaticSelectionStringValueItemSource(
new LocalizableSelectionStringValueItem()
{
Value = "GROUP",
DisplayText = new LocalizableStringInfo("Test", "GROUP")
},new LocalizableSelectionStringValueItem()
{
Value = "WAREHOUSE",
DisplayText = new LocalizableStringInfo("Test", "WAREHOUSE")
}),
}
);
}
}
public class DropDownValueValidator : IValueValidator
{
private readonly List<string> _validOptions;
public DropDownValueValidator(List<string> validOptions)
{
Name = validOptions[0];
_validOptions = validOptions;
}
public bool IsValid(object? value)
{
if(value == null)
{
return false;
}
return _validOptions.Contains(value.ToString());
}
public string Name { get; }
public object? this[string key]
{
get => key;
set { key = (string)value; }
}
public IDictionary<string, object?> Properties { get; }
}