Step-by-Step Guide to Filament Multi-Tenancy

แชร์
ฝัง
  • เผยแพร่เมื่อ 10 ธ.ค. 2024

ความคิดเห็น • 43

  • @Tuto1902
    @Tuto1902  ปีที่แล้ว +5

    WARNING *** PLEASE READ ***
    17:00 Tenant middleware no longer goes inside the ->middleware() section. This will result in Filament::getTenant() returning null. Instead, now you need to use the ->tenantMiddleware() function. Here's the documentation link so you can read all about it: filamentphp.com/docs/3.x/panels/tenancy#using-tenant-aware-middleware-to-apply-global-scopes

  • @jadersbr
    @jadersbr 2 หลายเดือนก่อน +1

    Thanks for share 🥇

    • @Tuto1902
      @Tuto1902  หลายเดือนก่อน

      No problem 👍

  • @shaungbhone8368
    @shaungbhone8368 2 หลายเดือนก่อน +1

    Thank you very much. You save my day. Can you show me the database?

    • @Tuto1902
      @Tuto1902  2 หลายเดือนก่อน

      Here's the entire code, including database migrations github.com/tuto1902/filament-multi-tenancy

  • @wakathepublic
    @wakathepublic 9 หลายเดือนก่อน +1

    can you make import excel, csv or another file for handling user in multi tenant ?

    • @Tuto1902
      @Tuto1902  9 หลายเดือนก่อน

      I’ll make a note for it. Thanks for the suggestion

  • @HamadAbdulla_7
    @HamadAbdulla_7 ปีที่แล้ว +1

    Thank you😍

    • @Tuto1902
      @Tuto1902  ปีที่แล้ว

      It is my absolute pleasure. I’m glad you find it helpful

  • @jensb5519
    @jensb5519 6 หลายเดือนก่อน

    Nice and clear tutorial! But is it possible to combine this with the Filament Shield plugin?

    • @Tuto1902
      @Tuto1902  6 หลายเดือนก่อน

      I think so. The way I see it, the shield plugin works as a second layer. First, can the user access the tenant. Second, what can the user do inside the tenant (Shield). I haven't tested this myself but I see no reason why it shouldn't work

  • @jonmason9024
    @jonmason9024 ปีที่แล้ว +2

    Is there a way to tap into whatever event is fired when a tenant is changed? I want to do something whenever a user changes the tenant, but can't find anything in the docs to see how to do it?

    • @Tuto1902
      @Tuto1902  ปีที่แล้ว

      I don't think there's a way to do that. At least none that I know of

    • @philately
      @philately 7 หลายเดือนก่อน +2

      @@Tuto1902 Actually, there is. Every time a new tenant is set as "active" an Filament\Events\TenantSet is fired. You can register a listener to it and you're good to go.

  • @FindWebX
    @FindWebX ปีที่แล้ว +1

    If the Jetstream Team, is similar to this? Thank you very much for valuable video❤❤❤

    • @Tuto1902
      @Tuto1902  ปีที่แล้ว

      I appreciate you watching and I'm glad you find it helpful.

  • @WawangBprnbp
    @WawangBprnbp ปีที่แล้ว

    that's very helpful, thank you, but I'm having problems inputting customer data, do I have to add team_id to the customer table, and what should the relationship be like? I don't really understand how it works

    • @Tuto1902
      @Tuto1902  ปีที่แล้ว +1

      It all depends on what you’re trying to do. If your customers are going to belong to just one team, then yes. You need a team_id in the customers table and the relationship is One to Many (one team has many customers). But if the customer can have access to multiple teams, then you need a pivot table (customer_team) and the relationship is Many to Many

    • @WawangBprnbp
      @WawangBprnbp ปีที่แล้ว

      okay tanks@@Tuto1902

  • @ruddra_nick_biswas
    @ruddra_nick_biswas 5 หลายเดือนก่อน +1

    Hello Can you help me with this! I want to disable user to create new team! admin will create team for them! how can I achieve that kind of functionality ??

    • @Tuto1902
      @Tuto1902  5 หลายเดือนก่อน +1

      Have you tried adding a TeamPolicy with a create() method?
      laravel.com/docs/11.x/authorization#policy-methods
      Filament will enforce any policy automatically.

  • @EvandroNeres-t8b
    @EvandroNeres-t8b 3 หลายเดือนก่อน

    What VS extensions are you using?

    • @Tuto1902
      @Tuto1902  3 หลายเดือนก่อน

      Catppuccin for VS Code, Catppuccin Icons and all the regular Intelephense extensions.

  • @augustocarvalhochavez3192
    @augustocarvalhochavez3192 ปีที่แล้ว

    I have a model called category but I would like it to be shown in all the authenticated user's teams since they can have several teams?

    • @Tuto1902
      @Tuto1902  ปีที่แล้ว

      Create a ManyToMany relationship between Category and Team. Keep in mind that filament will try to look for a relationship called team() in the Category model. But since you want a ManyToMany relationship, I would suggest a relationship called teams() and then modify the owner relationship name in the CategoryResource class
      protected static ?string $tenantOwnershipRelationshipName = 'teams';

    • @augustocarvalhochavez3192
      @augustocarvalhochavez3192 ปีที่แล้ว

      @@Tuto1902 Thank you very much for answering.
      So I edited the Resource and it worked for me.
      public static function getEloquentQuery(): Builder
      {
      $team_id= Auth::user()->teams->pluck('id');
      return Category::whereIn('team_id', $team_id);
      }

  • @rialmon
    @rialmon 11 หลายเดือนก่อน

    Hi Tuto, thank you very much for this tutorial! I have a question, would you like to help me?. I'm facing this error: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'db_name.team_user' doesn't exist. How do i fix it?

    • @rialmon
      @rialmon 11 หลายเดือนก่อน

      Tuto, i've just found the solution: i only needed to create a pivot table named team_user, by executing "php artisan make:migration create_team_user_table"; then i put into the schema both $table->integer('user_id') and $table->integer('team_id'); then, finally, i run the migration.

    • @Tuto1902
      @Tuto1902  11 หลายเดือนก่อน +1

      That works, but this doesn't enforce the foreign keys in the database. I would recommend using $table->foreignIdFor(App\Models\User::class) and $table->foreignIdFor(App\Models\Team::class). This creates the appropriate indexes and makes the table more read efficient.

  • @ZAGAfrica
    @ZAGAfrica หลายเดือนก่อน +1

    No Github Repo because there are gaps especially in your DB

    • @Tuto1902
      @Tuto1902  หลายเดือนก่อน

      Probably, I wasn't focused on DB but more on quick tenancy setup. If you can elaborate on the gaps you found, I would love to hear your feedback

  • @marianovallejos6542
    @marianovallejos6542 ปีที่แล้ว

    how solve nested relation ? All the tables need team_id record?

    • @Tuto1902
      @Tuto1902  11 หลายเดือนก่อน +1

      If the records Belong To a single team, yes. If the records can Belong To Many different teams, then you need a pivot table and probably adjust the owner relationship name in the resource class
      filamentphp.com/docs/3.x/panels/tenancy

  • @tahinuralam29
    @tahinuralam29 8 หลายเดือนก่อน

    How can I set the navigation bage count for the current tenant

    • @Tuto1902
      @Tuto1902  8 หลายเดือนก่อน

      I would just follow the docs. All queries made on resources should be scoped to the current tenant
      filamentphp.com/docs/3.x/panels/navigation#adding-a-badge-to-a-navigation-item
      As long as the model has the tenant relationships properly configured, everything should work as expected
      filamentphp.com/docs/3.x/panels/tenancy#configuring-the-tenant-relationships

  • @1234321marty
    @1234321marty ปีที่แล้ว

    How about global scope in model, can I still use it selected tenant instead of middlawere in resource?

    • @Tuto1902
      @Tuto1902  ปีที่แล้ว +1

      Yeah, that works too. I forgot to mention that option. That way you don’t need to fiddle with the panel configuration and it will give you the same results

    • @joeyboli
      @joeyboli ปีที่แล้ว

      Did it work for you, it doesnt work for me

  • @proskillscenter9589
    @proskillscenter9589 5 หลายเดือนก่อน

    are this method support multi domains ?

    • @Tuto1902
      @Tuto1902  3 หลายเดือนก่อน

      Nope, this only covers single domain multi-tenancy.