Base solution for your next web application

Activities of "flaskone"

thx

Hi, Hi, I downloaded my project's new release 13.3 of angular and .net core two days ago. On the angular project, I run the Yarn command. I got this error (@angular/[email protected]):

yarn yarn install v1.22.17 info No lockfile found. [1/4] Resolving packages... warning [email protected]: This package is no longer supported. Please migrate to @azure/msal-angular. warning eslint > @humanwhocodes/[email protected]: Use @eslint/config-array instead warning eslint > file-entry-cache > flat-cache > [email protected]: Rimraf versions prior to v4 are no longer supported warning eslint > file-entry-cache > flat-cache > rimraf > [email protected]: Glob versions prior to v9 are no longer supported warning eslint > @humanwhocodes/config-array > @humanwhocodes/[email protected]: Use @eslint/object-schema instead warning eslint > file-entry-cache > flat-cache > rimraf > glob > [email protected]: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. warning karma > [email protected]: Glob versions prior to v9 are no longer supported warning karma > [email protected]: Rimraf versions prior to v4 are no longer supported warning karma-coverage-istanbul-reporter > istanbul-lib-source-maps > [email protected]: Rimraf versions prior to v4 are no longer supported warning karma-coverage-istanbul-reporter > istanbul-lib-source-maps > rimraf > [email protected]: Glob versions prior to v9 are no longer supported warning shx > shelljs > [email protected]: Glob versions prior to v9 are no longer supported [2/4] Fetching packages... error @angular/[email protected]: The engine "node" is incompatible with this module. Expected version "^18.19.1 || ^20.11.1 || >=22.0.0". Got "20.10.0" error Found incompatible module. info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

Can it be a problem or not?

We would like to give tenants only limited option to manage permissions / roles. As part of the process, we have very granular permissions created in the solution, while only very limited part should be avaible for tenant to manage.

That is why we considered to deny tenants access to manage permissions but let them only manage some selected set or roles (which role configuration would remain on host level) but as far as we understand, assigning permissions to roles for particular tenants cannot be managed centrally on host level ? (could you please confirm) ?

So the scenario would be as follows: Host user can predefine and configure roles that could be used on the tenant level tenant user can assign a role to particular users but cannot see / edit granular permissions Or alternatively can we somehow filter the list of permissions available for tenant to configure to avoid confusion ?

Can this be done in the settings or does it need to be programmed? If coding, how do you approach it? Are there any tips?

Is it possible to prepare such a scenario and is it a good direction:

User logged as the host:

  • creates roles for Tenants,
  • assigns permissions to roles,
  • can see all roles for all tenants, edit, delete, etc.,

User logged within particular tenant:

  • can see only roles
  • (admin of tenant) can assign a user to roles (roles should work additively - if the user has 2 roles, it is enough some permission is granted only in one of them)

Hi, this link doesn't work:

When I try to add a new tenant I get message:

from log.txt description of this error:

ERROR 2024-03-05 13:50:41,970 [orker] Mvc.ExceptionHandling.AbpExceptionFilter - Setting value for 'Abp.Net.Mail.DefaultFromAddress' is null or empty! Abp.AbpException: Setting value for 'Abp.Net.Mail.DefaultFromAddress' is null or empty! at Abp.Net.Mail.EmailSenderConfiguration.GetNotEmptySettingValue(String name) at Abp.Net.Mail.EmailSenderConfiguration.get_DefaultFromAddress() at Abp.Net.Mail.EmailSenderBase.NormalizeMail(MailMessage mail) at Abp.Net.Mail.EmailSenderBase.SendAsync(MailMessage mail, Boolean normalize) at FlaskOne.Authorization.Users.UserEmailer.ReplaceBodyAndSendAsync(String emailAddress, String subject, StringBuilder emailTemplate, StringBuilder mailMessage) in D:\RW\PROGRAMING\PROJECTS\FLASK_ONE\SaaS\aspnet-core\src\FlaskOne.Core\Authorization\Users\UserEmailer.cs:line 486 at FlaskOne.Authorization.Users.UserEmailer.<>c__DisplayClass12_0.<<SendEmailActivationLinkAsync>b__0>d.MoveNext() in D:\RW\PROGRAMING\PROJECTS\FLASK_ONE\SaaS\aspnet-core\src\FlaskOne.Core\Authorization\Users\UserEmailer.cs:line 127 --- End of stack trace from previous location --- at Abp.Domain.Uow.UnitOfWorkManagerExtensions.WithUnitOfWorkAsync(IUnitOfWorkManager manager, Func1 action, UnitOfWorkOptions options) at FlaskOne.Authorization.Users.UserEmailer.SendEmailActivationLinkAsync(User user, String link, String plainPassword) in D:\RW\PROGRAMING\PROJECTS\FLASK_ONE\SaaS\aspnet-core\src\FlaskOne.Core\Authorization\Users\UserEmailer.cs:line 80 at FlaskOne.MultiTenancy.TenantManager.CreateWithAdminUserAsync(String tenancyName, String name, String adminPassword, String adminEmailAddress, String connectionString, Boolean isActive, Nullable1 editionId, Boolean shouldChangePasswordOnNextLogin, Boolean sendActivationEmail, Nullable1 subscriptionEndDate, Boolean isInTrialPeriod, String emailActivationLink, String adminName, String adminSurname) in D:\RW\PROGRAMING\PROJECTS\FLASK_ONE\SaaS\aspnet-core\src\FlaskOne.Core\MultiTenancy\TenantManager.cs:line 179 at FlaskOne.MultiTenancy.TenantRegistrationAppService.RegisterTenant(RegisterTenantInput input) in D:\RW\PROGRAMING\PROJECTS\FLASK_ONE\SaaS\aspnet-core\src\FlaskOne.Application\MultiTenancy\TenantRegistrationAppService.cs:line 101 at lambda_method2828(Closure, Object) at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask1 actionResultValueTask) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)

That's true. I don't want to fill in this data because my company email account uses two stages of authentication: a password and the Microsoft Authenticator application and it doesn't work in this case either. If I use a private email account where I only have the password, creating a new tenant works fine.

I need one of two solutions.

  1. Switch off this functionality for now,
  2. be able to use your account with double authentication.

Is this solution a good solution when I have a few different menus? I need a completely different menu for one tenant than for another.

For example, one tenant has a menu:

  • Tasks
    • View
    • Calculations

but the second tenant one has:

  • Project
    • Management
    • Generator

e.t.c.

In my case, it does not depend on editions.

I quote info from https://aspnetboilerplate.com/Pages/Documents/Feature-Management Most SaaS (multi-tenant) applications have editions (packages) that have different features. This way, they can provide different price and feature options to their tenants (customers).

Is this a good method to create different home menus for different tenants without using the rules and permissions? Now I use my class in angular XXXNavigationService and run it in getMenu from AppNavigationService. How to do it correctly.

Thanks, for your help, you're right I forgot.

Showing 1 to 10 of 20 entries