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; }
}
 
                                