tenancy | Run multiple websites using the same Laravel installation

 by   tenancy PHP Version: v2.1.0 License: MIT

kandi X-RAY | tenancy Summary

kandi X-RAY | tenancy Summary

tenancy is a PHP library. tenancy has no bugs, it has no vulnerabilities, it has a Permissive License and it has medium support. You can download it from GitHub, GitLab.

Enabling awesome Software as a Service with the Laravel framework. This is the successor of hyn/multi-tenant. Feel free to show support by starring the project following progress via twitter and backing its development over at OpenCollective. Before you start, we highly recommend you to read the extensive online documentation.
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              tenancy has a medium active ecosystem.
              It has 1067 star(s) with 87 fork(s). There are 47 watchers for this library.
              OutlinedDot
              It had no major release in the last 12 months.
              There are 5 open issues and 78 have been closed. On average issues are closed in 62 days. There are 7 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of tenancy is v2.1.0

            kandi-Quality Quality

              tenancy has 0 bugs and 0 code smells.

            kandi-Security Security

              tenancy has no vulnerabilities reported, and its dependent libraries have no vulnerabilities reported.
              tenancy code analysis shows 0 unresolved vulnerabilities.
              There are 0 security hotspots that need review.

            kandi-License License

              tenancy is licensed under the MIT License. This license is Permissive.
              Permissive licenses have the least restrictions, and you can use them in most projects.

            kandi-Reuse Reuse

              tenancy releases are available to install and integrate.
              Installation instructions, examples and code snippets are available.
              It has 6902 lines of code, 662 functions and 304 files.
              It has low code complexity. Code complexity directly impacts maintainability of the code.

            Top functions reviewed by kandi - BETA

            kandi has reviewed tenancy and discovered the below as its top functions. This is intended to give you an instant insight into tenancy implemented functionality, and help decide if they suit your requirements.
            • Resolve tenant from drivers .
            • Updates a tenant .
            • Process a transaction .
            • Create a new tenant .
            • Run migrations .
            • Resolve all steps .
            • Get the default configuration .
            • Register the queue services .
            • Adds a path to the view .
            • Set tenant .
            Get all kandi verified functions for this library.

            tenancy Key Features

            No Key Features are available at this moment for tenancy.

            tenancy Examples and Code Snippets

            No Code Snippets are available at this moment for tenancy.

            Community Discussions

            QUESTION

            Configure Razor Pages for multi-tenancy, using IPageRouteModelConvention and separate tenant page folders
            Asked 2022-Mar-10 at 20:34

            I'm trying to configure Razor Pages routing (not Razor Views) and make it support multi-tenancy via directory-structure...

            So, I'd have a bunch of pages for different tenants, eg:

            ...

            ANSWER

            Answered 2022-Mar-09 at 03:26
            using Microsoft.AspNetCore.Mvc.RazorPages;
            using WebAppRazor.Services;
            
            var builder = WebApplication.CreateBuilder(args);
            
            builder.Services.AddScoped();
            // Add services to the container.
            builder.Services.AddRazorPages();
            ServiceProvider serviceProvider = builder.Services.BuildServiceProvider();
            var userRepository = serviceProvider.GetService();
            var a = userRepository.getString();
            

            Source https://stackoverflow.com/questions/71402504

            QUESTION

            Tenancy for Laravel - tinker throws up migration files when creating a new tenant
            Asked 2022-Mar-10 at 16:27

            I've taken over a project from a prev dev, and I'm trying to understand the tenancy for laravel package, we've past the point of no return on the project to use a new package and to be fair the package and domain is working well for the created subdomain put in by the previous dev, but when I use tinker to create a new tenant and domain, as described in the quick start doc, tinker creates the db, creates the domain and tenant but it seems to fetch a migration file from one of the subdomains too? Anyone every came across this before?

            ...

            ANSWER

            Answered 2022-Mar-10 at 16:27

            Some of your migration files have the same class name, which is not allowed.

            Try using anonymous classes instead and you won't run into this problem. This is possible since laravel 8.37

            Instead of

            Source https://stackoverflow.com/questions/71427439

            QUESTION

            Informing caller additional setup required before continuing
            Asked 2022-Feb-26 at 19:52

            Need help to understand standard flow for handling additional-information-required scenario.

            Context: We have a number of product implementations, all integrated with a central single sign-on server. A registered customer can opt to start using new products on-demand. But some of the products require the customer to carry out some one-off setup steps before they use the product - these steps are only needed the very first time of using the product.

            Consider a customer is on the page https://product-abc.ourdomain.com. And now clicks on a link within that product something like 'do something (note, this will redirect you to product-xyz)'. At this point the customer is redirected to https://product-xyz.ourdomain.com. Here we want to detect whether the customer is using the product for the first time and if yes, redirect the user to a setup page wherein we can prompt them to supply the product-specific additional information. On the other hand, if the customer is already configured for the product, they will just navigate into the product page and continue using it.

            I wanted to know if there is something similar to the 401 Unauthorized flow to handle this. With authentication flow,

            • A client tries accessing a protected resource.
            • The server checks the caller has requisite authentication and if not, returns 401 Unauthorized status code with additional details in the WWW-Authenticate header.
            • The client carries out authentication - say by integrating with the central single sign-on server - and then reattempts the original request, this time succeeding.

            I'm wondering if there is a similar flow like,

            • A client tries accessing a protected resource.
            • The server checks whether the client is OK to use it. In our case, if its the first time a customer is accessing the product, this check will determine additional setup is required. For example, the client has to supply us with their correspondence address so that we can set up a data tenancy for the specific customer. Here I would like to return a HTTP status code, say, 4xx Setup Required with additional information in a header, say, WWW-SetupInfo.
            • Once the initial-setup flow is completed, the customer will be redirected to the main product and carry on using it.

            The nearest status code that seems to match my usecase is 402 Payment Required, but product-xyz doesn't need any specific subscription or payment. We just need some product-specific additional information to do the initial configuration.

            I can handle it by doing custom implementation using 3xx redirect but I was wondering if there is a better way of handling it.

            Thanks for any pointers.

            ...

            ANSWER

            Answered 2022-Feb-26 at 19:52

            Unless you are using basic-authentication, you don't want to use a 401 Unauthorized" status code with a WWW-Authenticate` header. This built in mechanism in browsers has very limited functionality:

            • Always prompts for user name and password, with no mechanism to customize the process either with look and feel, or custom workflows. You say you want to use single-sign-on. 401 Unauthorized is not compatible with that.
            • Has no log-out mechanism
            • Has no session timeout mechanism

            As a result, almost all websites use logins based on forms and cookies. If somebody isn't logged in, you should use a 302 Temporary redirect to the login page.

            Similarly, if somebody doesn't have their initial setup completed to use a particular page, you would not use a special HTTP status. You would either present them with the a 200 OK page with the form asking for the data you need, or use a 302 Temporary redirect to take them to that form on another URL.

            Source https://stackoverflow.com/questions/71276848

            QUESTION

            How to set schema_translate_map in SQLAlchemy object in Flask app
            Asked 2022-Feb-19 at 23:10

            My app.py file

            ...

            ANSWER

            Answered 2022-Feb-19 at 23:10

            I found a way to accomplish it. This is what needed

            Source https://stackoverflow.com/questions/71099132

            QUESTION

            Is there a way to list all users across all tenants?
            Asked 2022-Jan-20 at 18:06

            In a multi-tenant ABP MVC app, there is a built-in endpoint to list users:

            GET: /api/identity/users

            This endpoint only shows users belonging to the Current Tenant.

            Is there a way to ignore the multi-tenancy filter as the 'host admin', to list all users, across all tenants?

            Similarly, can the 'host admin' create/ modify/ delete users in other tenants via the same api/identity/users endpoint?

            Or is writing a custom endpoint the only way?

            ...

            ANSWER

            Answered 2022-Jan-20 at 18:06

            You may not need to write a custom endpoint, but in this case, you need to override the existing service.

            Because there is a feature where you can disable the tenant filter wherever you want.

            In some cases, you may want to disable it and perform a query on all the data, without filtering for the current tenant.

            For more information: https://docs.abp.io/en/abp/latest/Multi-Tenancy#data-filtering-disable-the-multi-tenancy-filter

            You can implement this method in the relevant AppService's methods as follows:

            Source https://stackoverflow.com/questions/70789062

            QUESTION

            Terraform creating role with missing AccessKeyId
            Asked 2022-Jan-12 at 19:11

            Terraform is creating role and attaching it to the EC2 instance successfully. However, when I try to run commands with aws cli, it is giving error with missing AccessKeyId:

            aws ec2 describe-instances --debug

            ...

            ANSWER

            Answered 2022-Jan-12 at 19:11

            In the assume_role_policy of your IAM role

            Source https://stackoverflow.com/questions/70686995

            QUESTION

            Terraform. Access the current Oracle Cloud tenancy specified by provider
            Asked 2021-Dec-31 at 13:09

            I have an OCI provider for my Terraform script:

            ...

            ANSWER

            Answered 2021-Dec-31 at 13:09

            Since tenancy ID is already set in environment variable TF_VAR_tenancy_ocid you just need to declare a variable:

            Source https://stackoverflow.com/questions/70532974

            QUESTION

            AWS Cognito JWT attribute-based routing
            Asked 2021-Dec-10 at 21:18

            I'm new to AWS and it's services. What I want to achieve is a multi-tenancy SaaS application. What my concept looks like: I use Cognito for user authentication. There all users no matter what tenant they belong to should use one frontend to login. For the tenant-recognition I use a custom attribute "custom:tenant" which I get from the JWT when the login is successful. For the applicantion itself I want to use VPCs and to ensure encapsulation each tenant should have their own VPC.

            Example:

            • User A of Tenant 1 login and gets back JWT with claim "custom:tenant":"1" should be routed to VPC 1
            • User B of Tenant 2 login and gets back JWT with claim "custom:tenant":"2" should be routed to VPC 2

            Now my question is: how do I achieve this routing from the success of the login to the appropriate VPC? Do I need further Services for that or where do I find these settings?

            ...

            ANSWER

            Answered 2021-Dec-10 at 21:18

            There is a standard content based routing technique for routing based on the contents of JWTs. This type of thing is usually managed by a reverse proxy or API gateway placed in front of APIs, which runs some custom logic to read the JWT and route accordingly. This also keeps the plumbing outside of application components.

            EXAMPLE

            Here is an NGINX example coded in LUA, a high level scripting language, to read the JWT and extract a claim. In this example it is a zone whereas in your case it is a tenant ID:

            PREREQUISITES

            Not all middleware supports this type of routing though. Eg you won't be able to do it in a simple load balancer. One option might be to use NGINX as a cloud managed service though it will cost money. A good gateway in front of APIs is an important architectural component though, so see if your company feels it is worth investing in.

            Source https://stackoverflow.com/questions/70183831

            QUESTION

            Running query against all schemas in Postgres
            Asked 2021-Dec-09 at 21:02
            Context

            We do schema-based multi-tenancy in our Postgres DB. Each and every schema is associated to a different tenant and will have the exact same structure except for one schema named public.

            To obtain the list of all the relevant schemas, we can use:

            ...

            ANSWER

            Answered 2021-Dec-09 at 21:02

            You can define a Postgres procedure that uses dynamic commands, e.g.:

            Source https://stackoverflow.com/questions/70221689

            QUESTION

            Airflow DAGs recreation in each operator
            Asked 2021-Dec-06 at 08:35

            We are using Airflow 2.1.4 and running on Kubernetes.

            We have separated pods for web-server, scheduler and we are using Kubernetes executors.

            We are using variety of operator such as PythonOperator, KubernetesPodOperator etc.

            Our setup handles ~2K customers (businesses) and each one of them has it's own DAG.

            Our code looks something like:

            ...

            ANSWER

            Answered 2021-Nov-27 at 15:18

            Yes this is entirely expected. The DAGs are parsed by Airflow regularly (evey 30 second by default) so any top-level code (the one that is executed during parsing the file rather than "execute" methods of operators) is executed then.

            Simple answer (and best practice) is "do not use any heavy operations in the top-level code of your DAGs". Specifically do not use DB queries. But if you want some more specific answers and possible ways how you can handle it, there are dedicated chapters about it in Airflow documentation about best practices:

            In short there are three proposed ways:

            1. using env variables
            2. generating a configuration file (for example .json) from your DB automatically (periodically) by an external script and putting it next to your DAG and reading the json file by your DAG from there rather than using sql query.
            3. generating many DAG python files dynamically (for exmple using JINJA) also automatically and periodically using an external script.

            You could use either 2) or 3) to achive your goal I believe.

            Source https://stackoverflow.com/questions/70108018

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install tenancy

            To give this package a spin, install all components at once:.
            database drivers
            identification drivers
            affects
            hooks

            Support

            This repository is used for developing all tenancy packages. Contributors need to use this repository for implementing code. All other repositories are READ-ONLY and overwritten on each subsplit push. Please read our Governance documentation in case you'd like to get involved.
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries
            CLONE
          • HTTPS

            https://github.com/tenancy/tenancy.git

          • CLI

            gh repo clone tenancy/tenancy

          • sshUrl

            git@github.com:tenancy/tenancy.git

          • Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link