From 535ae71b68c758f161b45d727983db9188b3aed9 Mon Sep 17 00:00:00 2001 From: Hatim EL OUFIR Date: Sun, 25 Sep 2022 00:33:52 +0100 Subject: [PATCH 1/9] Company CRUD --- .../Livewire/Administration/Companies.php | 153 +++++++++++++++ .../Administration/CompaniesDialog.php | 184 ++++++++++++++++++ app/Models/Company.php | 26 +++ ...22_09_24_230950_create_companies_table.php | 37 ++++ lang/fr.json | 19 +- public/images/administration/companies.jpeg | Bin 0 -> 233311 bytes .../views/administration/companies.blade.php | 7 + .../views/components/administration.blade.php | 16 ++ .../administration/companies-dialog.blade.php | 19 ++ .../administration/companies.blade.php | 59 ++++++ routes/web.php | 1 + 11 files changed, 520 insertions(+), 1 deletion(-) create mode 100644 app/Http/Livewire/Administration/Companies.php create mode 100644 app/Http/Livewire/Administration/CompaniesDialog.php create mode 100644 app/Models/Company.php create mode 100644 database/migrations/2022_09_24_230950_create_companies_table.php create mode 100644 public/images/administration/companies.jpeg create mode 100644 resources/views/administration/companies.blade.php create mode 100644 resources/views/livewire/administration/companies-dialog.blade.php create mode 100644 resources/views/livewire/administration/companies.blade.php diff --git a/app/Http/Livewire/Administration/Companies.php b/app/Http/Livewire/Administration/Companies.php new file mode 100644 index 00000000..9e03d8c1 --- /dev/null +++ b/app/Http/Livewire/Administration/Companies.php @@ -0,0 +1,153 @@ +label(__('Logo')) + ->height(30), + + TextColumn::make('name') + ->label(__('Company name')) + ->searchable() + ->sortable(), + + TextColumn::make('created_at') + ->label(__('Created at')) + ->sortable() + ->searchable() + ->dateTime(), + ]; + } + + /** + * Table actions definition + * + * @return array + */ + protected function getTableActions(): array + { + return [ + Action::make('edit') + ->icon('heroicon-o-pencil') + ->link() + ->label(__('Edit company')) + ->action(fn(Company $record) => $this->updateCompany($record->id)) + ]; + } + + /** + * Table default sort column definition + * + * @return string|null + */ + protected function getDefaultTableSortColumn(): ?string + { + return 'created_at'; + } + + /** + * Table default sort direction definition + * + * @return string|null + */ + protected function getDefaultTableSortDirection(): ?string + { + return 'desc'; + } + + /** + * Show update company dialog + * + * @param $id + * @return void + */ + public function updateCompany($id) + { + $this->selectedCompany = Company::find($id); + $this->dispatchBrowserEvent('toggleCompanyModal'); + } + + /** + * Show create company dialog + * + * @return void + */ + public function createCompany() + { + $this->selectedCompany = new Company(); + $this->dispatchBrowserEvent('toggleCompanyModal'); + } + + /** + * Cancel and close company create / update dialog + * + * @return void + */ + public function cancelCompany() + { + $this->selectedCompany = null; + $this->dispatchBrowserEvent('toggleCompanyModal'); + } + + /** + * Event launched after a company is created / updated + * + * @return void + */ + public function companySaved() + { + $this->cancelCompany(); + } + + /** + * Event launched after a company is deleted + * + * @return void + */ + public function companyDeleted() + { + $this->companySaved(); + } +} diff --git a/app/Http/Livewire/Administration/CompaniesDialog.php b/app/Http/Livewire/Administration/CompaniesDialog.php new file mode 100644 index 00000000..f155d48b --- /dev/null +++ b/app/Http/Livewire/Administration/CompaniesDialog.php @@ -0,0 +1,184 @@ +form->fill([ + 'name' => $this->company->name, + 'logo' => $this->company->logo, + 'description' => $this->company->description, + 'is_disabled' => $this->company->is_disabled, + 'responsible_id' => $this->company->responsible_id, + ]); + } + + + public function render() + { + return view('livewire.administration.companies-dialog'); + } + + /** + * Form schema definition + * + * @return array + */ + protected function getFormSchema(): array + { + return [ + Grid::make() + ->schema([ + FileUpload::make('logo') + ->image() + ->maxSize(10240) + ->label(__('Logo')), + ]), + + TextInput::make('name') + ->label(__('Company name')) + ->maxLength(255) + ->unique(table: Company::class, column: 'name', ignorable: fn () => $this->company, callback: function (Unique $rule) { + return $rule->withoutTrashed(); + }) + ->required(), + + RichEditor::make('description') + ->label(__('Description')) + ->fileAttachmentsDisk(config('filesystems.default')) + ->fileAttachmentsDirectory('companies') + ->fileAttachmentsVisibility('private'), + + Select::make('responsible_id') + ->label(__('Responsible')) + ->searchable() + ->required() + ->options(User::all()->pluck('name', 'id')->toArray()), + + Toggle::make('is_disabled') + ->label(__('Disable access to this company')) + ]; + } + + /** + * Create / Update the company + * + * @return void + */ + public function save(): void + { + $data = $this->form->getState(); + if (!$this->company?->id) { + $company = Company::create([ + 'name' => $data['name'], + 'logo' => $data['logo'] ?? null, + 'description' => $data['description'] ?? null, + 'is_disabled' => $data['is_disabled'] ?? false, + 'responsible_id' => $data['responsible_id'], + ]); + Notification::make() + ->success() + ->title(__('Company created')) + ->body(__('The company has been created')) + ->send(); + } else { + $this->company->name = $data['name']; + $this->company->description = $data['description']; + $this->company->logo = $data['logo']; + $this->company->is_disabled = $data['is_disabled']; + $this->company->responsible_id = $data['responsible_id']; + $this->company->save(); + Notification::make() + ->success() + ->title(__('Company updated')) + ->body(__("The company's details has been updated")) + ->send(); + } + $this->emit('companySaved'); + } + + /** + * Delete an existing company + * + * @return void + */ + public function doDeleteCompany(): void + { + $this->company->delete(); + $this->deleteConfirmationOpened = false; + $this->emit('companyDeleted'); + Notification::make() + ->success() + ->title(__('Company deleted')) + ->body(__('The company has been deleted')) + ->send(); + } + + /** + * Cancel the deletion of a company + * + * @return void + */ + public function cancelDeleteCompany(): void + { + $this->deleteConfirmationOpened = false; + } + + /** + * Show the delete company confirmation dialog + * + * @return void + * @throws \Exception + */ + public function deleteCompany(): void + { + $this->deleteConfirmationOpened = true; + Notification::make() + ->warning() + ->title(__('Company deletion')) + ->body(__('Are you sure you want to delete this company?')) + ->actions([ + Action::make('confirm') + ->label(__('Confirm')) + ->color('danger') + ->button() + ->close() + ->emit('doDeleteCompany'), + Action::make('cancel') + ->label(__('Cancel')) + ->close() + ->emit('cancelDeleteCompany') + ]) + ->persistent() + ->send(); + } +} diff --git a/app/Models/Company.php b/app/Models/Company.php new file mode 100644 index 00000000..913e7155 --- /dev/null +++ b/app/Models/Company.php @@ -0,0 +1,26 @@ +belongsTo(User::class, 'responsible_id'); + } +} diff --git a/database/migrations/2022_09_24_230950_create_companies_table.php b/database/migrations/2022_09_24_230950_create_companies_table.php new file mode 100644 index 00000000..36332555 --- /dev/null +++ b/database/migrations/2022_09_24_230950_create_companies_table.php @@ -0,0 +1,37 @@ +id(); + $table->string('name'); + $table->string('logo')->nullable(); + $table->longText('description')->nullable(); + $table->boolean('is_disabled')->default(false); + $table->foreignId('responsible_id')->constrained('users'); + $table->softDeletes(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('companies'); + } +}; diff --git a/lang/fr.json b/lang/fr.json index 196af923..a78669ee 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -285,5 +285,22 @@ "Use the section below to chat with the speakers of this ticket": "Utilisez la section ci-dessous pour échanger avec les intervenants de ce ticket", "Type a message..": "Tapez un message..", "Send": "Envoyer", - "No messages yet!": "Aucun message pour le moment !" + "No messages yet!": "Aucun message pour le moment !", + "Company name": "Nom de l'entreprise", + "Logo": "Logo", + "Companies": "Entreprises", + "Below is the list of configured companies in :app": "Ci-dessous est la liste des entreprises configurées sur :app", + "Create a new company": "Créer une nouvelle entreprise", + "Disable access to this company": "Désactiver l'accès à cette entreprise", + "Company created": "Entreprise créée", + "The company has been created": "L'entreprise est créée avec succès", + "Company updated": "Entreprise mise à jour", + "The company's details has been updated": "L'entreprise est mise à jour avec succès", + "Company deleted": "Entreprise supprimée", + "The company has been deleted": "L'entreprise est supprimée avec succès", + "Company deletion": "Suppression de l'entreprise", + "Are you sure you want to delete this company?": "Êtes-vous sûr de vouloir supprimer cette entreprise ?", + "Companies Management": "Gestion des entreprises", + "Here you can show and manage the companies list configured on :app": "Ici vous pouvez visualiser et gérer la liste des entreprises de :app", + "Manage companies": "Gérer les entreprises" } diff --git a/public/images/administration/companies.jpeg b/public/images/administration/companies.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..a7f3d7fef73738154af1c509e7c9387d51590bfc GIT binary patch literal 233311 zcmce;1zc6n_b9q4K|twHq(KCc4ygkI0@96ii-2^)Ie-e%APv$WEg;=s&>`KWbc)2G z<=y}A>JJWu7<>gz06>2G2WOKG0Qcb_{`DW6Q9J-t`T_vy_#YfyDgfa406;~L zv6H>?+xhwV1mFW8UjPaSsHor%4Gr;!aRmVw*yvZ$!5=o(HB3y*Yghz0*RJ6Z5aZ+F z6W=5yy-7_)&CD!-^#At;=br#P3^Z=^UKAu602vPn1rO=G3E)Er7&;O{l79gbD%urv zjH}2fm>?Dj?H_GdP*Bm(F_4k2o{t0AC`bS@E($2%z~fIFR{WiWJEh zEo{`Qc)wavX@NhauKV-wc|0GfPqeLXMSfBIvlI+dV5jj8M81QO`tJqRKWTrRp|qy| z3%Q#Rc(p&e_x@KndOG6yNdLGY4VC!MYj^O$D`|03y5ju0V3fipFld91BA(msuUr3B zic$ecn5N1xe^5RKuqSlB3PYUVA^`s(j zjMEI4jEGN&O#Dei$)T_aAmLCxz=70-3jso+=|VqS{wh$Z@o@Bvz+PkyF&g~Ai&CMC zg!Ara1*Rw6hl%{b|EUQc5w@wm#koYFM?j1ivKYBVf)ya%2$bM}Mbz8}L@h4ybqb;c zK}td8q9l+USih+J^Y8!FV^cf(j*<5d!zr341u(4fStrB3IAw-Lk>aaqorPyxxH-_5s)0cKTSTz8?1l= z*G|8UC{Y#Eem(;n=wD-tXh82eV%(V*L8Sp0ounTlFn{kpSAictPQ5Hn6~eGUKhf63sycs^^+aW(55|VGAew z#)WD^4O8c#21Ek3WDlq`kvIoJ$lSN`vA5n}5joK9glR!2m$SZz>D2 z1C1qH_TtLF52&6py z#Hads2MwX#{CR|B0-qptIq9H~vR*_lkpyA?Cil-t0`Q%|*#W};z%o?Yc{lN(p0o=k zL}}xnbCe~Xn|a&c8*$wq*xqHFx%n=aDOd#kL-dbd_#BmH?Vgc&@RW&bH5GwHMsE?D z38!SI0RT#|HC_yF1o96&r{rivwpIpqmM?X{Z(ilf{2{umJ(v&16#{mtaW77V(ul6S8?LmSpdPKZBdAk1S@*q+$eZW?f{dC2&i?O6zI8?w^e4m!Vw+)4H%MbVR3lk zz#r{L>6T}k+Y-+u>;0Putl)5PV-WH^iZ{4GQlo(HgJu+_j(9!Q+;W5@11JmB@I$b? z+8DKR*A>X{!;I+Ie@qn0jNz?xw+v?=H@S`F3tf8 z91GQ4eeD#ZTE?rQm#QC}d)^4j#`MLEFG@H?9RQA(o03YNwpz(E@FEKHMlZ1aYR2aJ z)aGnGP=i19XHyZe`2nh9fEf5~}z`2Pm-&YE79b=}*@vgG08; ztRpBalBF#&=d-gQ=zd{FY~H)if6m*B%fJg2-VQ?XExfbykdt#T-Bao6yD=vB^d#lw--es{?;MaBZNo*0;Kn0$P|)fHgp{g?8yj0^uf+6k)T< zywq)oq&ET$0&{cCj~t>~Fx8Y~O4$ zg0aXvc`xt2v+M@nLb$ib&{fn622zuv8i2MJH}9<)wk z;0d{T*JQ6x)a`{$#;P_$j7;3z|9$}YR>L)R-?2nNNkVSytIInp#%1nR7^7kx3sj)yI?mDJUkb z#WJeR>?(xi_D?G`M9N40^RI%0D^2`@u31)vh+S57Nyg0)OV<%gk5@Qi9MSMxR<)t| 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�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 + + Administration - Companies + + @livewire('administration.companies') + + diff --git a/resources/views/components/administration.blade.php b/resources/views/components/administration.blade.php index 8ba1b980..76f94839 100644 --- a/resources/views/components/administration.blade.php +++ b/resources/views/components/administration.blade.php @@ -16,6 +16,22 @@ +

    +
    +
    +
    @lang('Companies Management')
    +

    @lang('Here you can show and manage the companies list configured on :app', [ + 'app' => config('app.name') + ])

    + +
    +
    +
    diff --git a/resources/views/livewire/administration/companies-dialog.blade.php b/resources/views/livewire/administration/companies-dialog.blade.php new file mode 100644 index 00000000..4df2318e --- /dev/null +++ b/resources/views/livewire/administration/companies-dialog.blade.php @@ -0,0 +1,19 @@ +
    +
    + {{ $this->form }} +
    + +
    + + @if($company->id) + + @endif +
    +
    diff --git a/resources/views/livewire/administration/companies.blade.php b/resources/views/livewire/administration/companies.blade.php new file mode 100644 index 00000000..a5786353 --- /dev/null +++ b/resources/views/livewire/administration/companies.blade.php @@ -0,0 +1,59 @@ +
    +
    +
    + + + @lang('Go back to administration') + + + @lang('Companies') + + + @lang('Below is the list of configured companies in :app', [ + 'app' => config('app.name') + ]) + +
    + +
    +
    +
    +
    + {{ $this->table }} +
    +
    + + +
    + + + + @push('scripts') + + @endpush +
    diff --git a/routes/web.php b/routes/web.php index 7ace65c2..40b69063 100644 --- a/routes/web.php +++ b/routes/web.php @@ -52,6 +52,7 @@ // Administration Route::view('/administration', 'administration')->name('administration'); Route::view('/administration/users', 'administration.users')->name('administration.users'); + Route::view('/administration/companies', 'administration.companies')->name('administration.companies'); Route::view('/administration/ticket-statuses', 'administration.ticket-statuses')->name('administration.ticket-statuses'); Route::view('/administration/ticket-priorities', 'administration.ticket-priorities')->name('administration.ticket-priorities'); Route::view('/administration/ticket-types', 'administration.ticket-types')->name('administration.ticket-types'); From 9459e4730ee05f7f0f2846f2da038557c78ff826 Mon Sep 17 00:00:00 2001 From: Hatim EL OUFIR Date: Sun, 25 Sep 2022 00:41:17 +0100 Subject: [PATCH 2/9] Design enhancement --- .../Livewire/Administration/Companies.php | 6 +++ .../views/components/administration.blade.php | 38 +++++++++---------- 2 files changed, 25 insertions(+), 19 deletions(-) diff --git a/app/Http/Livewire/Administration/Companies.php b/app/Http/Livewire/Administration/Companies.php index 9e03d8c1..a67ed4c2 100644 --- a/app/Http/Livewire/Administration/Companies.php +++ b/app/Http/Livewire/Administration/Companies.php @@ -3,6 +3,7 @@ namespace App\Http\Livewire\Administration; use App\Models\Company; +use App\Tables\Columns\UserColumn; use Filament\Tables\Actions\Action; use Filament\Tables\Columns\ImageColumn; use Filament\Tables\Columns\TextColumn; @@ -53,6 +54,11 @@ protected function getTableColumns(): array ->searchable() ->sortable(), + UserColumn::make('responsible') + ->label(__('Responsible')) + ->searchable() + ->sortable(), + TextColumn::make('created_at') ->label(__('Created at')) ->sortable() diff --git a/resources/views/components/administration.blade.php b/resources/views/components/administration.blade.php index 76f94839..24a3a3d7 100644 --- a/resources/views/components/administration.blade.php +++ b/resources/views/components/administration.blade.php @@ -1,8 +1,8 @@ -
    +
    -
    -
    -
    +
    +
    +
    @lang('User Management')

    @lang('Here you can show and manage the users list configured on :app', [ 'app' => config('app.name') @@ -16,9 +16,9 @@

    -
    -
    -
    +
    +
    +
    @lang('Companies Management')

    @lang('Here you can show and manage the companies list configured on :app', [ 'app' => config('app.name') @@ -32,9 +32,9 @@

    -
    -
    -
    +
    +
    +
    @lang('Statuses Management')

    @lang('Here you can show and manage the tickets statuses list configured on :app', [ 'app' => config('app.name') @@ -48,9 +48,9 @@

    -
    -
    -
    +
    +
    +
    @lang('Priorities Management')

    @lang('Here you can show and manage the tickets priorities list configured on :app', [ 'app' => config('app.name') @@ -64,9 +64,9 @@

    -
    -
    -
    +
    +
    +
    @lang('Types Management')

    @lang('Here you can show and manage the tickets types list configured on :app', [ 'app' => config('app.name') @@ -80,9 +80,9 @@

    -
    -
    -
    +
    +
    +
    @lang('Activity logs')

    @lang('Here you can see all activity logs of :app', [ 'app' => config('app.name') From 556a76f271de2643dcc976fd44d252ff0533e24a Mon Sep 17 00:00:00 2001 From: Hatim EL OUFIR Date: Sun, 25 Sep 2022 00:44:36 +0100 Subject: [PATCH 3/9] Design enhancement: Add company activated icon --- app/Http/Livewire/Administration/Companies.php | 10 ++++++++++ lang/fr.json | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/Http/Livewire/Administration/Companies.php b/app/Http/Livewire/Administration/Companies.php index a67ed4c2..046e3add 100644 --- a/app/Http/Livewire/Administration/Companies.php +++ b/app/Http/Livewire/Administration/Companies.php @@ -5,6 +5,7 @@ use App\Models\Company; use App\Tables\Columns\UserColumn; use Filament\Tables\Actions\Action; +use Filament\Tables\Columns\BooleanColumn; use Filament\Tables\Columns\ImageColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Concerns\InteractsWithTable; @@ -59,6 +60,15 @@ protected function getTableColumns(): array ->searchable() ->sortable(), + BooleanColumn::make('is_disabled') + ->label(__('Company activated')) + ->trueIcon('heroicon-o-x-circle') + ->falseIcon('heroicon-o-check-circle') + ->trueColor('danger') + ->falseColor('success') + ->searchable() + ->sortable(), + TextColumn::make('created_at') ->label(__('Created at')) ->sortable() diff --git a/lang/fr.json b/lang/fr.json index a78669ee..08455fe1 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -302,5 +302,6 @@ "Are you sure you want to delete this company?": "Êtes-vous sûr de vouloir supprimer cette entreprise ?", "Companies Management": "Gestion des entreprises", "Here you can show and manage the companies list configured on :app": "Ici vous pouvez visualiser et gérer la liste des entreprises de :app", - "Manage companies": "Gérer les entreprises" + "Manage companies": "Gérer les entreprises", + "Company activated": "Entreprise activée" } From 0c98d2a40f574b5128feed514403053ab90a30f4 Mon Sep 17 00:00:00 2001 From: Hatim EL OUFIR Date: Sun, 25 Sep 2022 00:48:40 +0100 Subject: [PATCH 4/9] Update demo data: include companies --- database/help_desk.pgsql.sql | 4 +++- database/help_desk.sql | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/database/help_desk.pgsql.sql b/database/help_desk.pgsql.sql index e9276d66..bd034c37 100644 --- a/database/help_desk.pgsql.sql +++ b/database/help_desk.pgsql.sql @@ -81,4 +81,6 @@ VALUES (1, 'Improvement', '#dbeafe', '#3b82f6', 'fa-arrow-up', NULL, '2022-09-19 (5, 'Bug', '#ef4444', '#fee2e2', 'fa-bug', NULL, '2022-09-19 10:37:37', '2022-09-19 11:31:04', 'bug'); - +INSERT INTO companies (id, name, logo, description, is_disabled, responsible_id, deleted_at, created_at, updated_at) VALUES +(1, 'Google', 'AdMZvIIRz0ZAggtLBzo7GKOTdrSTIq-metaZ29vZ2xlbG9nb19jb2xvcl8yNzJ4OTJkcC5wbmc=-.png', '

    Google is an American technology services company founded in 1998 in Silicon Valley, California, by Larry Page and Sergey Brin, creators of the Google search engine. It has been a subsidiary of the Alphabet company since August 2015.

    ', false, 4, NULL, '2022-09-24 23:31:50', '2022-09-24 23:44:50'), +(2, 'Meta', 'sVFt9gfVmnab5BSYsQZ39EVrfcvqGt-metaTWV0YV9QbGF0Zm9ybXNfSW5jLl9sb2dvLnN2Zy5wbmc=-.png', '

    Meta Platforms, Inc., better known by the trade name Meta, is an American company created in 2004 by Mark Zuckerberg. It is one of the giants of the Web, grouped under the acronym GAFAM, alongside Google, Apple, Amazon and Microsoft.

    ', true, 5, NULL, '2022-09-24 23:46:26', '2022-09-24 23:46:47'); diff --git a/database/help_desk.sql b/database/help_desk.sql index 7eef3af7..b775d50b 100644 --- a/database/help_desk.sql +++ b/database/help_desk.sql @@ -82,4 +82,8 @@ VALUES (1, 'Improvement', '#dbeafe', '#3b82f6', 'fa-arrow-up', NULL, '2022-09-19 'task'), (5, 'Bug', '#ef4444', '#fee2e2', 'fa-bug', NULL, '2022-09-19 10:37:37', '2022-09-19 11:31:04', 'bug'); +INSERT INTO `companies` (`id`, `name`, `logo`, `description`, `is_disabled`, `responsible_id`, `deleted_at`, `created_at`, `updated_at`) VALUES +(1, 'Google', 'AdMZvIIRz0ZAggtLBzo7GKOTdrSTIq-metaZ29vZ2xlbG9nb19jb2xvcl8yNzJ4OTJkcC5wbmc=-.png', '

    Google is an American technology services company founded in 1998 in Silicon Valley, California, by Larry Page and Sergey Brin, creators of the Google search engine. It has been a subsidiary of the Alphabet company since August 2015.

    ', 0, 4, NULL, '2022-09-24 23:31:50', '2022-09-24 23:44:50'), +(2, 'Meta', 'sVFt9gfVmnab5BSYsQZ39EVrfcvqGt-metaTWV0YV9QbGF0Zm9ybXNfSW5jLl9sb2dvLnN2Zy5wbmc=-.png', '

    Meta Platforms, Inc., better known by the trade name Meta, is an American company created in 2004 by Mark Zuckerberg. It is one of the giants of the Web, grouped under the acronym GAFAM, alongside Google, Apple, Amazon and Microsoft.

    ', 1, 5, NULL, '2022-09-24 23:46:26', '2022-09-24 23:46:47'); + SET foreign_key_checks = 1; From 2361c0e894a67f3ed6a6c87a8792e148b6810994 Mon Sep 17 00:00:00 2001 From: Hatim EL OUFIR Date: Sun, 25 Sep 2022 00:50:13 +0100 Subject: [PATCH 5/9] Update demo data: remove companies logo --- database/help_desk.pgsql.sql | 4 ++-- database/help_desk.sql | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/database/help_desk.pgsql.sql b/database/help_desk.pgsql.sql index bd034c37..6f682d21 100644 --- a/database/help_desk.pgsql.sql +++ b/database/help_desk.pgsql.sql @@ -82,5 +82,5 @@ VALUES (1, 'Improvement', '#dbeafe', '#3b82f6', 'fa-arrow-up', NULL, '2022-09-19 INSERT INTO companies (id, name, logo, description, is_disabled, responsible_id, deleted_at, created_at, updated_at) VALUES -(1, 'Google', 'AdMZvIIRz0ZAggtLBzo7GKOTdrSTIq-metaZ29vZ2xlbG9nb19jb2xvcl8yNzJ4OTJkcC5wbmc=-.png', '

    Google is an American technology services company founded in 1998 in Silicon Valley, California, by Larry Page and Sergey Brin, creators of the Google search engine. It has been a subsidiary of the Alphabet company since August 2015.

    ', false, 4, NULL, '2022-09-24 23:31:50', '2022-09-24 23:44:50'), -(2, 'Meta', 'sVFt9gfVmnab5BSYsQZ39EVrfcvqGt-metaTWV0YV9QbGF0Zm9ybXNfSW5jLl9sb2dvLnN2Zy5wbmc=-.png', '

    Meta Platforms, Inc., better known by the trade name Meta, is an American company created in 2004 by Mark Zuckerberg. It is one of the giants of the Web, grouped under the acronym GAFAM, alongside Google, Apple, Amazon and Microsoft.

    ', true, 5, NULL, '2022-09-24 23:46:26', '2022-09-24 23:46:47'); +(1, 'Google', null, '

    Google is an American technology services company founded in 1998 in Silicon Valley, California, by Larry Page and Sergey Brin, creators of the Google search engine. It has been a subsidiary of the Alphabet company since August 2015.

    ', false, 4, NULL, '2022-09-24 23:31:50', '2022-09-24 23:44:50'), +(2, 'Meta', null, '

    Meta Platforms, Inc., better known by the trade name Meta, is an American company created in 2004 by Mark Zuckerberg. It is one of the giants of the Web, grouped under the acronym GAFAM, alongside Google, Apple, Amazon and Microsoft.

    ', true, 5, NULL, '2022-09-24 23:46:26', '2022-09-24 23:46:47'); diff --git a/database/help_desk.sql b/database/help_desk.sql index b775d50b..424bdd46 100644 --- a/database/help_desk.sql +++ b/database/help_desk.sql @@ -83,7 +83,7 @@ VALUES (1, 'Improvement', '#dbeafe', '#3b82f6', 'fa-arrow-up', NULL, '2022-09-19 (5, 'Bug', '#ef4444', '#fee2e2', 'fa-bug', NULL, '2022-09-19 10:37:37', '2022-09-19 11:31:04', 'bug'); INSERT INTO `companies` (`id`, `name`, `logo`, `description`, `is_disabled`, `responsible_id`, `deleted_at`, `created_at`, `updated_at`) VALUES -(1, 'Google', 'AdMZvIIRz0ZAggtLBzo7GKOTdrSTIq-metaZ29vZ2xlbG9nb19jb2xvcl8yNzJ4OTJkcC5wbmc=-.png', '

    Google is an American technology services company founded in 1998 in Silicon Valley, California, by Larry Page and Sergey Brin, creators of the Google search engine. It has been a subsidiary of the Alphabet company since August 2015.

    ', 0, 4, NULL, '2022-09-24 23:31:50', '2022-09-24 23:44:50'), -(2, 'Meta', 'sVFt9gfVmnab5BSYsQZ39EVrfcvqGt-metaTWV0YV9QbGF0Zm9ybXNfSW5jLl9sb2dvLnN2Zy5wbmc=-.png', '

    Meta Platforms, Inc., better known by the trade name Meta, is an American company created in 2004 by Mark Zuckerberg. It is one of the giants of the Web, grouped under the acronym GAFAM, alongside Google, Apple, Amazon and Microsoft.

    ', 1, 5, NULL, '2022-09-24 23:46:26', '2022-09-24 23:46:47'); +(1, 'Google', null, '

    Google is an American technology services company founded in 1998 in Silicon Valley, California, by Larry Page and Sergey Brin, creators of the Google search engine. It has been a subsidiary of the Alphabet company since August 2015.

    ', 0, 4, NULL, '2022-09-24 23:31:50', '2022-09-24 23:44:50'), +(2, 'Meta', null, '

    Meta Platforms, Inc., better known by the trade name Meta, is an American company created in 2004 by Mark Zuckerberg. It is one of the giants of the Web, grouped under the acronym GAFAM, alongside Google, Apple, Amazon and Microsoft.

    ', 1, 5, NULL, '2022-09-24 23:46:26', '2022-09-24 23:46:47'); SET foreign_key_checks = 1; From 17658aa9a423330569f3afc34e16d197a9ff08ef Mon Sep 17 00:00:00 2001 From: Hatim EL OUFIR Date: Sun, 25 Sep 2022 00:51:28 +0100 Subject: [PATCH 6/9] Update translation fr.json --- lang/fr.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lang/fr.json b/lang/fr.json index 08455fe1..0b2655c3 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -303,5 +303,6 @@ "Companies Management": "Gestion des entreprises", "Here you can show and manage the companies list configured on :app": "Ici vous pouvez visualiser et gérer la liste des entreprises de :app", "Manage companies": "Gérer les entreprises", - "Company activated": "Entreprise activée" + "Company activated": "Entreprise activée", + "Edit company": "Modifier l'entreprise" } From eed6921c635b8da9901d17e4784bab0d1d2e308a Mon Sep 17 00:00:00 2001 From: Hatim EL OUFIR Date: Sun, 25 Sep 2022 01:05:54 +0100 Subject: [PATCH 7/9] Design enhancement: companies dialog --- .../Administration/CompaniesDialog.php | 52 ++++++++++++------- 1 file changed, 32 insertions(+), 20 deletions(-) diff --git a/app/Http/Livewire/Administration/CompaniesDialog.php b/app/Http/Livewire/Administration/CompaniesDialog.php index f155d48b..4b51f25e 100644 --- a/app/Http/Livewire/Administration/CompaniesDialog.php +++ b/app/Http/Livewire/Administration/CompaniesDialog.php @@ -56,21 +56,39 @@ public function render() protected function getFormSchema(): array { return [ - Grid::make() + + Grid::make(5) ->schema([ - FileUpload::make('logo') - ->image() - ->maxSize(10240) - ->label(__('Logo')), - ]), - TextInput::make('name') - ->label(__('Company name')) - ->maxLength(255) - ->unique(table: Company::class, column: 'name', ignorable: fn () => $this->company, callback: function (Unique $rule) { - return $rule->withoutTrashed(); - }) - ->required(), + Grid::make(1) + ->columnSpan(2) + ->schema([ + FileUpload::make('logo') + ->image() + ->maxSize(10240) + ->label(__('Logo')), + ]), + + Grid::make(1) + ->columnSpan(3) + ->schema([ + + TextInput::make('name') + ->label(__('Company name')) + ->maxLength(255) + ->unique(table: Company::class, column: 'name', ignorable: fn () => $this->company, callback: function (Unique $rule) { + return $rule->withoutTrashed(); + }) + ->required(), + + Select::make('responsible_id') + ->label(__('Responsible')) + ->searchable() + ->required() + ->options(User::all()->pluck('name', 'id')->toArray()), + ]), + + ]), RichEditor::make('description') ->label(__('Description')) @@ -78,14 +96,8 @@ protected function getFormSchema(): array ->fileAttachmentsDirectory('companies') ->fileAttachmentsVisibility('private'), - Select::make('responsible_id') - ->label(__('Responsible')) - ->searchable() - ->required() - ->options(User::all()->pluck('name', 'id')->toArray()), - Toggle::make('is_disabled') - ->label(__('Disable access to this company')) + ->label(__('Disable access to this company')), ]; } From 1fcf417812e46617c62c65509ac961f7e509f5ea Mon Sep 17 00:00:00 2001 From: Hatim EL OUFIR Date: Sun, 25 Sep 2022 17:38:59 +0100 Subject: [PATCH 8/9] Spatie permissions integration --- app/Http/Livewire/Administration/Users.php | 15 +- .../Livewire/Administration/UsersDialog.php | 112 +++++++++--- app/Http/Livewire/Analytics.php | 4 +- app/Http/Livewire/Kanban.php | 4 +- app/Http/Livewire/Projects.php | 2 +- app/Http/Livewire/Tickets.php | 4 +- app/Http/Livewire/TicketsDialog.php | 2 +- app/Http/Middleware/CanAccessTicket.php | 4 +- app/Jobs/CommentCreatedJob.php | 4 +- app/Jobs/TicketCreatedJob.php | 2 +- app/Jobs/TicketUpdatedJob.php | 4 +- app/Models/Project.php | 2 +- app/Models/User.php | 6 +- app/View/Components/MainMenu.php | 18 +- app/helpers.php | 101 +---------- composer.json | 3 +- composer.lock | 86 +++++++++- config/permission.php | 161 ++++++++++++++++++ config/system.php | 78 --------- ..._09_25_154331_create_permission_tables.php | 141 +++++++++++++++ ...22_09_25_163436_remove_role_from_users.php | 32 ++++ database/seeders/DatabaseSeeder.php | 1 + database/seeders/FontAwesomeFreeSeeder.php | 4 +- database/seeders/PermissionsSeeder.php | 47 +++++ lang/fr.json | 6 +- .../views/components/main-menu.blade.php | 51 +----- .../views/livewire/projects-dialog.blade.php | 2 +- resources/views/livewire/projects.blade.php | 4 +- .../livewire/ticket-details/content.blade.php | 2 +- .../ticket-details/priority.blade.php | 2 +- .../ticket-details/responsible.blade.php | 2 +- .../livewire/ticket-details/status.blade.php | 2 +- .../livewire/ticket-details/title.blade.php | 2 +- .../livewire/ticket-details/type.blade.php | 2 +- resources/views/livewire/tickets.blade.php | 4 +- 35 files changed, 619 insertions(+), 297 deletions(-) create mode 100644 config/permission.php create mode 100644 database/migrations/2022_09_25_154331_create_permission_tables.php create mode 100644 database/migrations/2022_09_25_163436_remove_role_from_users.php create mode 100644 database/seeders/PermissionsSeeder.php diff --git a/app/Http/Livewire/Administration/Users.php b/app/Http/Livewire/Administration/Users.php index 6db099f5..9bf9aa9d 100644 --- a/app/Http/Livewire/Administration/Users.php +++ b/app/Http/Livewire/Administration/Users.php @@ -4,10 +4,12 @@ use App\Models\User; use App\Notifications\UserCreatedNotification; +use Filament\Forms\Components\TagsInput; use Filament\Notifications\Notification; use Filament\Tables\Actions\Action; use Filament\Tables\Columns\BadgeColumn; use Filament\Tables\Columns\BooleanColumn; +use Filament\Tables\Columns\TagsColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Concerns\InteractsWithTable; use Filament\Tables\Contracts\HasTable; @@ -51,18 +53,17 @@ protected function getTableColumns(): array ->searchable() ->sortable(), - BadgeColumn::make('role') - ->label(__('Role')) - ->searchable() - ->sortable() - ->enum(roles_list()) - ->colors(roles_list_badges()), - BooleanColumn::make('isAccountActivated') ->label(__('Account activated')) ->sortable() ->searchable(), + TagsColumn::make('permissions.name') + ->label(__('Permissions')) + ->limit(1) + ->searchable() + ->sortable(), + TextColumn::make('created_at') ->label(__('Created at')) ->sortable() diff --git a/app/Http/Livewire/Administration/UsersDialog.php b/app/Http/Livewire/Administration/UsersDialog.php index 89666ad8..0af7a7d7 100644 --- a/app/Http/Livewire/Administration/UsersDialog.php +++ b/app/Http/Livewire/Administration/UsersDialog.php @@ -4,14 +4,23 @@ use App\Models\User; use App\Notifications\UserCreatedNotification; +use Filament\Forms\Components\Checkbox; +use Filament\Forms\Components\CheckboxList; +use Filament\Forms\Components\Grid; +use Filament\Forms\Components\MultiSelect; +use Filament\Forms\Components\Placeholder; use Filament\Forms\Components\Select; +use Filament\Forms\Components\TagsInput; use Filament\Forms\Components\TextInput; use Filament\Forms\Concerns\InteractsWithForms; use Filament\Forms\Contracts\HasForms; use Filament\Notifications\Actions\Action; use Filament\Notifications\Notification; +use Illuminate\Support\HtmlString; use Livewire\Component; use Ramsey\Uuid\Uuid; +use Spatie\Permission\Models\Permission; +use Closure; class UsersDialog extends Component implements HasForms { @@ -22,11 +31,14 @@ class UsersDialog extends Component implements HasForms protected $listeners = ['doDeleteUser', 'cancelDeleteUser']; - public function mount(): void { + public array $permissions; + + public function mount(): void + { $this->form->fill([ 'name' => $this->user->name, 'email' => $this->user->email, - 'role' => $this->user->role, + 'permissions' => $this->user->permissions->pluck('id')->toArray(), ]); } @@ -44,40 +56,91 @@ public function render() protected function getFormSchema(): array { return [ - TextInput::make('name') - ->label(__('Full name')) - ->maxLength(255) - ->required(), - - TextInput::make('email') - ->label(__('Email address')) - ->email() - ->unique(table: User::class, column: 'email', ignorable: fn () => $this->user->id ? $this->user : null) - ->required(), - - Select::make('role') - ->label(__('Role')) + Grid::make() + ->schema([ + TextInput::make('name') + ->label(__('Full name')) + ->maxLength(255) + ->required(), + + TextInput::make('email') + ->label(__('Email address')) + ->email() + ->unique(table: User::class, column: 'email', ignorable: fn() => $this->user->id ? $this->user : null) + ->required(), + ]), + + Grid::make() + ->extraAttributes([ + 'class' => 'border-t border-gray-200 pt-5 mt-5' + ]) + ->schema([ + Select::make('same_permissions_as') + ->label(__('Use same permissions of')) + ->helperText(__("Update the permissions of this user based on another user's permissions")) + ->searchable() + ->options(User::all()->pluck('name', 'id')->toArray()) + ->reactive() + ->afterStateUpdated(function (Closure $set, Closure $get) { + if ($get('same_permissions_as')) { + $user = User::find($get('same_permissions_as')); + $set('permissions', $user->permissions->pluck('id')->toArray()); + } + }) + ]), + + Placeholder::make('permissions_buttons') + ->content(new HtmlString(' +
    + + +
    + ')), + + CheckboxList::make('permissions') + ->label(__('Permissions')) ->required() - ->searchable() - ->options(roles_list()) + ->columns(3) + ->options(Permission::orderBy('name')->get()->pluck('name', 'id')->toArray()) ]; } + /** + * Assign all permissions + * + * @return void + */ + public function assignAllPermissions(): void + { + $this->permissions = Permission::all()->pluck('id')->toArray(); + } + + /** + * Remove all assigned permissions + * + * @return void + */ + public function removeAllPermissions(): void + { + $this->permissions = []; + } + /** * Create / Update the user * * @return void */ - public function save(): void { + public function save(): void + { $data = $this->form->getState(); if (!$this->user?->id) { $user = User::create([ 'name' => $data['name'], 'email' => $data['email'], - 'role' => $data['role'], 'password' => bcrypt(uniqid()), 'register_token' => Uuid::uuid4()->toString() ]); + $user->syncPermissions($data['permissions']); $user->notify(new UserCreatedNotification($user)); Notification::make() ->success() @@ -87,8 +150,8 @@ public function save(): void { } else { $this->user->name = $data['name']; $this->user->email = $data['email']; - $this->user->role = $data['role']; $this->user->save(); + $this->user->syncPermissions($data['permissions']); Notification::make() ->success() ->title(__('User updated')) @@ -103,7 +166,8 @@ public function save(): void { * * @return void */ - public function doDeleteUser(): void { + public function doDeleteUser(): void + { $this->user->delete(); $this->deleteConfirmationOpened = false; $this->emit('userDeleted'); @@ -119,7 +183,8 @@ public function doDeleteUser(): void { * * @return void */ - public function cancelDeleteUser(): void { + public function cancelDeleteUser(): void + { $this->deleteConfirmationOpened = false; } @@ -129,7 +194,8 @@ public function cancelDeleteUser(): void { * @return void * @throws \Exception */ - public function deleteUser(): void { + public function deleteUser(): void + { $this->deleteConfirmationOpened = true; Notification::make() ->warning() diff --git a/app/Http/Livewire/Analytics.php b/app/Http/Livewire/Analytics.php index fb0b5d67..e8df96a7 100644 --- a/app/Http/Livewire/Analytics.php +++ b/app/Http/Livewire/Analytics.php @@ -55,7 +55,7 @@ private function loadNotAssignedTickets(): void private function loadTicketsAssignments(): void { $query = Ticket::query(); - if (has_all_permissions(auth()->user(), 'view-own-tickets') && !has_all_permissions(auth()->user(), 'view-all-tickets')) { + if (auth()->user()->can('View own tickets') && !auth()->user()->can('View all tickets')) { $query->where(function ($query) { $query->where('owner_id', auth()->user()->id) ->orWhere('responsible_id', auth()->user()->id); @@ -78,7 +78,7 @@ private function loadTicketsAssignments(): void private function loadTicketsByStatuses(): void { $query = Ticket::query(); - if (has_all_permissions(auth()->user(), 'view-own-tickets') && !has_all_permissions(auth()->user(), 'view-all-tickets')) { + if (auth()->user()->can('View own tickets') && !auth()->user()->can('View all tickets')) { $query->where(function ($query) { $query->where('owner_id', auth()->user()->id) ->orWhere('responsible_id', auth()->user()->id); diff --git a/app/Http/Livewire/Kanban.php b/app/Http/Livewire/Kanban.php index 4d24157a..b458bdaf 100644 --- a/app/Http/Livewire/Kanban.php +++ b/app/Http/Livewire/Kanban.php @@ -38,7 +38,7 @@ protected function records(): Collection { $query = Ticket::query(); $query->withCount('comments'); - if (has_all_permissions(auth()->user(), 'view-own-tickets') && !has_all_permissions(auth()->user(), 'view-all-tickets')) { + if (auth()->user()->can('View own tickets') && !auth()->user()->can('View all tickets')) { $query->where(function ($query) { $query->where('owner_id', auth()->user()->id) ->orWhere('responsible_id', auth()->user()->id); @@ -116,7 +116,7 @@ protected function styles(): array public function onStatusChanged($recordId, $statusId, $fromOrderedIds, $toOrderedIds): void { $ticket = Ticket::find($recordId); - if ((has_all_permissions(auth()->user(), 'update-all-tickets') || (has_all_permissions(auth()->user(), 'update-own-tickets') && ($ticket->owner_id === auth()->user() || $ticket->responsible_id === auth()->user()->id))) && has_all_permissions(auth()->user(), 'change-status-tickets')) { + if ((auth()->user()->can('Update all tickets') || (auth()->user()->can('Update own tickets') && ($ticket->owner_id === auth()->user() || $ticket->responsible_id === auth()->user()->id))) && auth()->user()->can('Change status tickets')) { $before = __(config('system.statuses.' . $ticket->status . '.title')) ?? '-'; $ticket->status = $statusId; $ticket->save(); diff --git a/app/Http/Livewire/Projects.php b/app/Http/Livewire/Projects.php index 58eb7ec0..d5886a62 100644 --- a/app/Http/Livewire/Projects.php +++ b/app/Http/Livewire/Projects.php @@ -38,7 +38,7 @@ protected function getTableQuery(): Builder|Relation { $query = Project::query(); $query->withCount('tickets'); - if (has_all_permissions(auth()->user(), 'view-own-projects') && !has_all_permissions(auth()->user(), 'view-all-projects')) { + if (auth()->user()->can('View own projects') && !auth()->user()->can('View all projects')) { $query->where(function ($query) { $query->where('owner_id', auth()->user()->id) ->orWhereHas('tickets', function ($query) { diff --git a/app/Http/Livewire/Tickets.php b/app/Http/Livewire/Tickets.php index 1af5692e..12ee4733 100644 --- a/app/Http/Livewire/Tickets.php +++ b/app/Http/Livewire/Tickets.php @@ -49,7 +49,7 @@ public function render() { $query = Ticket::query(); $query->withCount('comments'); - if (has_all_permissions(auth()->user(), 'view-own-tickets') && !has_all_permissions(auth()->user(), 'view-all-tickets')) { + if (auth()->user()->can('View own tickets') && !auth()->user()->can('View all tickets')) { $query->where(function ($query) { $query->where('owner_id', auth()->user()->id) ->orWhere('responsible_id', auth()->user()->id); @@ -118,7 +118,7 @@ protected function getFormSchema(): array ->placeholder(__('Project')) ->options(function () { $query = Project::query(); - if (has_all_permissions(auth()->user(), 'view-own-projects') && !has_all_permissions(auth()->user(), 'view-all-projects')) { + if (auth()->user()->can('View own projects') && !auth()->user()->can('View all projects')) { $query->where('owner_id', auth()->user()->id); } return $query->get()->pluck('name', 'id'); diff --git a/app/Http/Livewire/TicketsDialog.php b/app/Http/Livewire/TicketsDialog.php index 86a163ab..aed4d9fb 100644 --- a/app/Http/Livewire/TicketsDialog.php +++ b/app/Http/Livewire/TicketsDialog.php @@ -52,7 +52,7 @@ protected function getFormSchema(): array ->searchable() ->options(function () { $query = Project::query(); - if (has_all_permissions(auth()->user(), 'view-own-projects') && !has_all_permissions(auth()->user(), 'view-all-projects')) { + if (auth()->user()->can('View own projects') && !auth()->user()->can('View all projects')) { $query->where('owner_id', auth()->user()->id); } return $query->get()->pluck('name', 'id'); diff --git a/app/Http/Middleware/CanAccessTicket.php b/app/Http/Middleware/CanAccessTicket.php index 76597bf9..f7bee674 100644 --- a/app/Http/Middleware/CanAccessTicket.php +++ b/app/Http/Middleware/CanAccessTicket.php @@ -19,10 +19,10 @@ public function handle(Request $request, Closure $next) { $ticket = $request->route('ticket'); if (!( - has_all_permissions(auth()->user(), 'view-all-tickets') + auth()->user()->can('View all tickets') || ( - has_all_permissions(auth()->user(), 'view-own-tickets') + auth()->user()->can('View own tickets') && in_array(auth()->user()->id, [$ticket->owner_id, $ticket->responsible_id]) ) )) { diff --git a/app/Jobs/CommentCreatedJob.php b/app/Jobs/CommentCreatedJob.php index de21ee59..8c18a22e 100644 --- a/app/Jobs/CommentCreatedJob.php +++ b/app/Jobs/CommentCreatedJob.php @@ -39,9 +39,9 @@ public function handle() $users = User::whereNull('register_token')->get(); foreach ($users as $user) { if ( - (has_all_permissions($user, 'view-all-tickets') && $this->comment->owner_id !== $user->id) + (auth()->user()->can('View all tickets') && $this->comment->owner_id !== $user->id) || - (has_all_permissions($user, 'view-own-tickets') && ($this->comment->ticket->owner_id === $user->id || $this->comment->ticket->responsible_id === $user->id) && $this->comment->owner_id !== $user->id) + (auth()->user()->can('View own tickets') && ($this->comment->ticket->owner_id === $user->id || $this->comment->ticket->responsible_id === $user->id) && $this->comment->owner_id !== $user->id) ) { $user->notify(new CommentCreateNotification($this->comment, $user)); } diff --git a/app/Jobs/TicketCreatedJob.php b/app/Jobs/TicketCreatedJob.php index b345cf78..3c1525de 100644 --- a/app/Jobs/TicketCreatedJob.php +++ b/app/Jobs/TicketCreatedJob.php @@ -37,7 +37,7 @@ public function handle() { $users = User::whereNull('register_token')->get(); foreach ($users as $user) { - if (has_all_permissions($user, 'view-all-tickets') && $this->ticket->owner_id !== $user->id) { + if (auth()->user()->can('View all tickets') && $this->ticket->owner_id !== $user->id) { $user->notify(new TicketCreatedNotification($this->ticket, $user)); } } diff --git a/app/Jobs/TicketUpdatedJob.php b/app/Jobs/TicketUpdatedJob.php index 30692b18..2bad3bca 100644 --- a/app/Jobs/TicketUpdatedJob.php +++ b/app/Jobs/TicketUpdatedJob.php @@ -49,9 +49,9 @@ public function handle() $users = User::whereNull('register_token')->where('id', '<>', $this->user->id)->get(); foreach ($users as $u) { if ( - (has_all_permissions($u, 'view-all-tickets') && $this->ticket->owner_id !== $u->id) + (auth()->user()->can('View all tickets') && $this->ticket->owner_id !== $u->id) || - (has_all_permissions($u, 'view-own-tickets') && ($this->ticket->owner_id === $u->id || $this->ticket->responsible_id === $u->id) && $this->ticket->owner_id !== $u->id) + (auth()->user()->can('View own tickets') && ($this->ticket->owner_id === $u->id || $this->ticket->responsible_id === $u->id) && $this->ticket->owner_id !== $u->id) ) { $u->notify(new TicketUpdatedNotification($this->ticket, $this->field, $this->before, $this->after, $this->user)); } diff --git a/app/Models/Project.php b/app/Models/Project.php index 6bffc23a..3f7edb8e 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -44,7 +44,7 @@ public function tickets(): HasMany public function favoriteUsers(): BelongsToMany { $query = $this->belongsToMany(User::class, 'favorite_projects', 'project_id', 'user_id'); - if (has_all_permissions(auth()->user(), 'view-own-projects') && !has_all_permissions(auth()->user(), 'view-all-projects')) { + if (auth()->user()->can('View own projects') && !auth()->user()->can('View all projects')) { $query->where('user_id', auth()->user()->id); } return $query; diff --git a/app/Models/User.php b/app/Models/User.php index 0a141460..1d3c0723 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -16,10 +16,11 @@ use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; +use Spatie\Permission\Traits\HasRoles; class User extends Authenticatable implements HasLogsActivity { - use HasApiTokens, HasFactory, Notifiable, CanResetPassword, SoftDeletes, LogsActivity, HasAvatarUrl; + use HasApiTokens, HasFactory, Notifiable, CanResetPassword, SoftDeletes, LogsActivity, HasAvatarUrl, HasRoles; /** * The attributes that are mass assignable. @@ -30,7 +31,6 @@ class User extends Authenticatable implements HasLogsActivity 'name', 'email', 'password', - 'role', 'register_token', 'locale', ]; @@ -80,7 +80,7 @@ public function assignedTickets(): HasMany public function favoriteProjects(): BelongsToMany { $query = $this->belongsToMany(Project::class, 'favorite_projects', 'user_id', 'project_id'); - if (has_all_permissions(auth()->user(), 'view-own-projects') && !has_all_permissions(auth()->user(), 'view-all-projects')) { + if (auth()->user()->can('View own projects') && !auth()->user()->can('View all projects')) { $query->where('user_id', auth()->user()->id); } return $query; diff --git a/app/View/Components/MainMenu.php b/app/View/Components/MainMenu.php index 7c35769e..e0ee0bc2 100644 --- a/app/View/Components/MainMenu.php +++ b/app/View/Components/MainMenu.php @@ -26,37 +26,43 @@ public function __construct() 'title' => 'Overview', 'icon' => 'fa-table-columns', 'always_shown' => true, - 'show_notification_indicator' => false + 'show_notification_indicator' => false, + 'permission' => '' ], 'analytics' => [ 'title' => 'Analytics', 'icon' => 'fa-chart-bar', 'always_shown' => false, - 'show_notification_indicator' => false + 'show_notification_indicator' => false, + 'permission' => 'Can view Analytics page' ], 'tickets' => [ 'title' => 'Tickets', 'icon' => 'fa-ticket', 'always_shown' => false, - 'show_notification_indicator' => false + 'show_notification_indicator' => false, + 'permission' => 'Can view tickets page' ], 'kanban' => [ 'title' => 'Kanban Board', 'icon' => 'fa-clipboard-check', 'always_shown' => false, - 'show_notification_indicator' => false + 'show_notification_indicator' => false, + 'permission' => 'Can view Kanban page' ], 'administration' => [ 'title' => 'Administration', 'icon' => 'fa-cogs', 'always_shown' => false, - 'show_notification_indicator' => false + 'show_notification_indicator' => false, + 'permission' => 'Can view Administration page' ], 'notifications' => [ 'title' => 'Notifications', 'icon' => 'fa-bell', 'always_shown' => true, - 'show_notification_indicator' => true + 'show_notification_indicator' => true, + 'permission' => '' ], ]; } diff --git a/app/helpers.php b/app/helpers.php index 190f6517..84922c6e 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -6,101 +6,6 @@ use App\Models\User; use Illuminate\Contracts\Auth\Authenticatable; -if (!function_exists('roles_list')) { - /** - * Return roles list as an array of KEY (role id) => VALUE (role title) - * - * @return array - */ - function roles_list(): array - { - $roles = []; - foreach (config('system.roles') as $key => $value) { - $roles[$key] = __($value['title']); - } - return $roles; - } -} - -if (!function_exists('roles_list_badges')) { - /** - * Return roles list as an array of KEY (role id) => VALUE (role title) - * - * @return array - */ - function roles_list_badges(): array - { - $roles = []; - foreach (config('system.roles') as $key => $value) { - $roles[$value['badge-color']] = $key; - } - return $roles; - } -} - -if (!function_exists('has_all_permissions')) { - /** - * Check if the user has all the permissions passed as parameters - * - * @param User|Authenticatable $user - * @param ...$permissions - * @return bool - */ - function has_all_permissions(User|Authenticatable $user, ...$permissions): bool - { - if ($user->role) { - $role = config('system.roles.' . $user->role); - if ($role) { - return sizeof(array_intersect($role['permissions']['functions'], $permissions)) === sizeof($permissions); - } - return false; - } - return false; - } -} - -if (!function_exists('has_any_permissions')) { - /** - * Check if the user has any of the permissions passed as parameters - * - * @param User|Authenticatable $user - * @param ...$permissions - * @return bool - */ - function has_any_permissions(User|Authenticatable $user, ...$permissions): bool - { - if ($user->role) { - $role = config('system.roles.' . $user->role); - if ($role) { - return sizeof(array_intersect($role['permissions']['functions'], $permissions)); - } - return false; - } - return false; - } -} - -if (!function_exists('can_access_page')) { - /** - * Check if the user can access the pages passed as parameters - * - * @param User|Authenticatable $user - * @param ...$pages - * @return bool - */ - function can_access_page(User|Authenticatable $user, ...$pages): bool - { - if ($user->role) { - $role = config('system.roles.' . $user->role); - if ($role) { - return sizeof(array_intersect($role['permissions']['pages'], $pages)); - } - return false; - } - return false; - } -} - if (!function_exists('statuses_list')) { /** * Return statuses list as an array of KEY (status id) => VALUE (status title) @@ -177,10 +82,10 @@ function types_list(): array */ function locales(): array { - $roles = []; + $locales = []; foreach (config('system.locales') as $key => $value) { - $roles[$key] = __($value); + $locales[$key] = __($value); } - return $roles; + return $locales; } } diff --git a/composer.json b/composer.json index 45958a28..36bc3a59 100644 --- a/composer.json +++ b/composer.json @@ -17,7 +17,8 @@ "laravel/tinker": "^2.7", "livewire/livewire": "^2.10", "phpsa/filament-password-reveal": "^1.1", - "spatie/laravel-activitylog": "^4.5" + "spatie/laravel-activitylog": "^4.5", + "spatie/laravel-permission": "^5.5" }, "require-dev": { "fakerphp/faker": "^1.9.1", diff --git a/composer.lock b/composer.lock index 6787d447..0421e44a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "66b739442c43a1297dbf8d7c2d2d7cd2", + "content-hash": "354575329f6cd81ed3fde350bff1670f", "packages": [ { "name": "akaunting/laravel-money", @@ -4204,6 +4204,88 @@ ], "time": "2022-09-07T14:31:31+00:00" }, + { + "name": "spatie/laravel-permission", + "version": "5.5.5", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-permission.git", + "reference": "f2303a70be60919811ca8afc313e8244fda00974" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-permission/zipball/f2303a70be60919811ca8afc313e8244fda00974", + "reference": "f2303a70be60919811ca8afc313e8244fda00974", + "shasum": "" + }, + "require": { + "illuminate/auth": "^7.0|^8.0|^9.0", + "illuminate/container": "^7.0|^8.0|^9.0", + "illuminate/contracts": "^7.0|^8.0|^9.0", + "illuminate/database": "^7.0|^8.0|^9.0", + "php": "^7.3|^8.0|^8.1" + }, + "require-dev": { + "orchestra/testbench": "^5.0|^6.0|^7.0", + "phpunit/phpunit": "^9.4", + "predis/predis": "^1.1" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\Permission\\PermissionServiceProvider" + ] + }, + "branch-alias": { + "dev-main": "5.x-dev", + "dev-master": "5.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\Permission\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Permission handling for Laravel 6.0 and up", + "homepage": "https://github.com/spatie/laravel-permission", + "keywords": [ + "acl", + "laravel", + "permission", + "permissions", + "rbac", + "roles", + "security", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-permission/issues", + "source": "https://github.com/spatie/laravel-permission/tree/5.5.5" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2022-06-29T23:11:42+00:00" + }, { "name": "symfony/console", "version": "v6.1.4", @@ -9296,5 +9378,5 @@ "php": "^8.0.2" }, "platform-dev": [], - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.2.0" } diff --git a/config/permission.php b/config/permission.php new file mode 100644 index 00000000..5b6e184c --- /dev/null +++ b/config/permission.php @@ -0,0 +1,161 @@ + [ + + /* + * When using the "HasPermissions" trait from this package, we need to know which + * Eloquent model should be used to retrieve your permissions. Of course, it + * is often just the "Permission" model but you may use whatever you like. + * + * The model you want to use as a Permission model needs to implement the + * `Spatie\Permission\Contracts\Permission` contract. + */ + + 'permission' => Spatie\Permission\Models\Permission::class, + + /* + * When using the "HasRoles" trait from this package, we need to know which + * Eloquent model should be used to retrieve your roles. Of course, it + * is often just the "Role" model but you may use whatever you like. + * + * The model you want to use as a Role model needs to implement the + * `Spatie\Permission\Contracts\Role` contract. + */ + + 'role' => Spatie\Permission\Models\Role::class, + + ], + + 'table_names' => [ + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles. We have chosen a basic + * default value but you may easily change it to any table you like. + */ + + 'roles' => 'roles', + + /* + * When using the "HasPermissions" trait from this package, we need to know which + * table should be used to retrieve your permissions. We have chosen a basic + * default value but you may easily change it to any table you like. + */ + + 'permissions' => 'permissions', + + /* + * When using the "HasPermissions" trait from this package, we need to know which + * table should be used to retrieve your models permissions. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'model_has_permissions' => 'model_has_permissions', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your models roles. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'model_has_roles' => 'model_has_roles', + + /* + * When using the "HasRoles" trait from this package, we need to know which + * table should be used to retrieve your roles permissions. We have chosen a + * basic default value but you may easily change it to any table you like. + */ + + 'role_has_permissions' => 'role_has_permissions', + ], + + 'column_names' => [ + /* + * Change this if you want to name the related pivots other than defaults + */ + 'role_pivot_key' => null, //default 'role_id', + 'permission_pivot_key' => null, //default 'permission_id', + + /* + * Change this if you want to name the related model primary key other than + * `model_id`. + * + * For example, this would be nice if your primary keys are all UUIDs. In + * that case, name this `model_uuid`. + */ + + 'model_morph_key' => 'model_id', + + /* + * Change this if you want to use the teams feature and your related model's + * foreign key is other than `team_id`. + */ + + 'team_foreign_key' => 'team_id', + ], + + /* + * When set to true, the method for checking permissions will be registered on the gate. + * Set this to false, if you want to implement custom logic for checking permissions. + */ + + 'register_permission_check_method' => true, + + /* + * When set to true the package implements teams using the 'team_foreign_key'. If you want + * the migrations to register the 'team_foreign_key', you must set this to true + * before doing the migration. If you already did the migration then you must make a new + * migration to also add 'team_foreign_key' to 'roles', 'model_has_roles', and + * 'model_has_permissions'(view the latest version of package's migration file) + */ + + 'teams' => false, + + /* + * When set to true, the required permission names are added to the exception + * message. This could be considered an information leak in some contexts, so + * the default setting is false here for optimum safety. + */ + + 'display_permission_in_exception' => false, + + /* + * When set to true, the required role names are added to the exception + * message. This could be considered an information leak in some contexts, so + * the default setting is false here for optimum safety. + */ + + 'display_role_in_exception' => false, + + /* + * By default wildcard permission lookups are disabled. + */ + + 'enable_wildcard_permission' => false, + + 'cache' => [ + + /* + * By default all permissions are cached for 24 hours to speed up performance. + * When permissions or roles are updated the cache is flushed automatically. + */ + + 'expiration_time' => \DateInterval::createFromDateString('24 hours'), + + /* + * The cache key used to store all permissions. + */ + + 'key' => 'spatie.permission.cache', + + /* + * You may optionally indicate a specific cache driver to use for permission and + * role caching using any of the `store` drivers listed in the cache.php config + * file. Using 'default' here means to use the `default` set in cache.php. + */ + + 'store' => 'default', + ], +]; diff --git a/config/system.php b/config/system.php index bd7807ed..b1f3bd9d 100644 --- a/config/system.php +++ b/config/system.php @@ -15,82 +15,4 @@ 'fr' => 'Français' ], - /* - |-------------------------------------------------------------------------- - | Users statuses configuration - |-------------------------------------------------------------------------- - | - | This value is the configured roles assigned to users while creating / - | updating them, you can change it as you like - | - | 'text-color' and 'bg-color' are tailwindcss based css classes - | 'badge-color' uses the colors defined on 'tailwind.config.js' - | 'permissions' contains the rights to access "pages" and "functions" - | 'pages' contains the pages accessible by the role - | -> Same declared in App\View\Components\MainMenu component) - | 'functions' contains the functionnalities accessible by the role - | - | Available permissions: - | - Pages: analytics, tickets, administration - | - Functions: - | - view-all-projects: View all configured projects - | - update-all-projects: Update all configured projects - | - delete-all-projects: Delete all configured projects - | - create-projects: Create a new project - | - view-own-projects: View assigned projects - | - update-own-projects: Update assigned projects - | - delete-own-projects: Delete assigned projects - | - view-all-tickets: View all configured tickets - | - update-all-tickets: Update all configured tickets - | - delete-all-tickets: Delete all configured tickets - | - create-tickets: Create a new ticket - | - view-own-tickets: View assigned tickets - | - update-own-tickets: Update assigned tickets - | - delete-own-tickets: Delete assigned tickets - | - assign-tickets: Assign tickets to responsibles - | - change-status-tickets: Change tickets status - | - */ - 'roles' => [ - 'administrator' => [ - 'title' => 'Administrator', - 'text-color' => 'bg-red-50', - 'bg-color' => 'text-red-500', - 'badge-color' => 'danger', - 'permissions' => [ - 'pages' => ['analytics', 'tickets', 'kanban', 'administration'], - 'functions' => [ - 'view-all-projects', 'update-all-projects', 'delete-all-projects', 'create-projects', - 'view-all-tickets', 'update-all-tickets', 'delete-all-tickets', 'create-tickets', 'assign-tickets', 'change-status-tickets' - ] - ] - ], - 'employee' => [ - 'title' => 'Employee', - 'text-color' => 'bg-gray-50', - 'bg-color' => 'text-gray-500', - 'badge-color' => 'warning', - 'permissions' => [ - 'pages' => ['analytics', 'tickets', 'kanban'], - 'functions' => [ - 'view-own-projects', - 'view-own-tickets', 'update-own-tickets', 'delete-own-tickets', 'create-tickets', 'assign-tickets', 'change-status-tickets' - ] - ] - ], - 'customer' => [ - 'title' => 'Customer', - 'text-color' => 'bg-blue-50', - 'bg-color' => 'text-blue-500', - 'badge-color' => 'primary', - 'permissions' => [ - 'pages' => ['analytics', 'tickets', 'kanban'], - 'functions' => [ - 'view-own-projects', - 'view-own-tickets', 'update-own-tickets', 'delete-own-tickets', 'create-tickets' - ] - ] - ], - ], - ]; diff --git a/database/migrations/2022_09_25_154331_create_permission_tables.php b/database/migrations/2022_09_25_154331_create_permission_tables.php new file mode 100644 index 00000000..04c3278b --- /dev/null +++ b/database/migrations/2022_09_25_154331_create_permission_tables.php @@ -0,0 +1,141 @@ +bigIncrements('id'); // permission id + $table->string('name'); // For MySQL 8.0 use string('name', 125); + $table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125); + $table->timestamps(); + + $table->unique(['name', 'guard_name']); + }); + + Schema::create($tableNames['roles'], function (Blueprint $table) use ($teams, $columnNames) { + $table->bigIncrements('id'); // role id + if ($teams || config('permission.testing')) { // permission.testing is a fix for sqlite testing + $table->unsignedBigInteger($columnNames['team_foreign_key'])->nullable(); + $table->index($columnNames['team_foreign_key'], 'roles_team_foreign_key_index'); + } + $table->string('name'); // For MySQL 8.0 use string('name', 125); + $table->string('guard_name'); // For MySQL 8.0 use string('guard_name', 125); + $table->timestamps(); + if ($teams || config('permission.testing')) { + $table->unique([$columnNames['team_foreign_key'], 'name', 'guard_name']); + } else { + $table->unique(['name', 'guard_name']); + } + }); + + Schema::create($tableNames['model_has_permissions'], function (Blueprint $table) use ($tableNames, $columnNames, $teams) { + $table->unsignedBigInteger(PermissionRegistrar::$pivotPermission); + + $table->string('model_type'); + $table->unsignedBigInteger($columnNames['model_morph_key']); + $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_permissions_model_id_model_type_index'); + + $table->foreign(PermissionRegistrar::$pivotPermission) + ->references('id') // permission id + ->on($tableNames['permissions']) + ->onDelete('cascade'); + if ($teams) { + $table->unsignedBigInteger($columnNames['team_foreign_key']); + $table->index($columnNames['team_foreign_key'], 'model_has_permissions_team_foreign_key_index'); + + $table->primary([$columnNames['team_foreign_key'], PermissionRegistrar::$pivotPermission, $columnNames['model_morph_key'], 'model_type'], + 'model_has_permissions_permission_model_type_primary'); + } else { + $table->primary([PermissionRegistrar::$pivotPermission, $columnNames['model_morph_key'], 'model_type'], + 'model_has_permissions_permission_model_type_primary'); + } + + }); + + Schema::create($tableNames['model_has_roles'], function (Blueprint $table) use ($tableNames, $columnNames, $teams) { + $table->unsignedBigInteger(PermissionRegistrar::$pivotRole); + + $table->string('model_type'); + $table->unsignedBigInteger($columnNames['model_morph_key']); + $table->index([$columnNames['model_morph_key'], 'model_type'], 'model_has_roles_model_id_model_type_index'); + + $table->foreign(PermissionRegistrar::$pivotRole) + ->references('id') // role id + ->on($tableNames['roles']) + ->onDelete('cascade'); + if ($teams) { + $table->unsignedBigInteger($columnNames['team_foreign_key']); + $table->index($columnNames['team_foreign_key'], 'model_has_roles_team_foreign_key_index'); + + $table->primary([$columnNames['team_foreign_key'], PermissionRegistrar::$pivotRole, $columnNames['model_morph_key'], 'model_type'], + 'model_has_roles_role_model_type_primary'); + } else { + $table->primary([PermissionRegistrar::$pivotRole, $columnNames['model_morph_key'], 'model_type'], + 'model_has_roles_role_model_type_primary'); + } + }); + + Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) { + $table->unsignedBigInteger(PermissionRegistrar::$pivotPermission); + $table->unsignedBigInteger(PermissionRegistrar::$pivotRole); + + $table->foreign(PermissionRegistrar::$pivotPermission) + ->references('id') // permission id + ->on($tableNames['permissions']) + ->onDelete('cascade'); + + $table->foreign(PermissionRegistrar::$pivotRole) + ->references('id') // role id + ->on($tableNames['roles']) + ->onDelete('cascade'); + + $table->primary([PermissionRegistrar::$pivotPermission, PermissionRegistrar::$pivotRole], 'role_has_permissions_permission_id_role_id_primary'); + }); + + app('cache') + ->store(config('permission.cache.store') != 'default' ? config('permission.cache.store') : null) + ->forget(config('permission.cache.key')); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + $tableNames = config('permission.table_names'); + + if (empty($tableNames)) { + throw new \Exception('Error: config/permission.php not found and defaults could not be merged. Please publish the package configuration before proceeding, or drop the tables manually.'); + } + + Schema::drop($tableNames['role_has_permissions']); + Schema::drop($tableNames['model_has_roles']); + Schema::drop($tableNames['model_has_permissions']); + Schema::drop($tableNames['roles']); + Schema::drop($tableNames['permissions']); + } +} diff --git a/database/migrations/2022_09_25_163436_remove_role_from_users.php b/database/migrations/2022_09_25_163436_remove_role_from_users.php new file mode 100644 index 00000000..0895bd4f --- /dev/null +++ b/database/migrations/2022_09_25_163436_remove_role_from_users.php @@ -0,0 +1,32 @@ +dropColumn('role'); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->string('role'); + }); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 7873482a..ac587451 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -15,5 +15,6 @@ class DatabaseSeeder extends Seeder public function run() { $this->call(FontAwesomeFreeSeeder::class); + $this->call(PermissionsSeeder::class); } } diff --git a/database/seeders/FontAwesomeFreeSeeder.php b/database/seeders/FontAwesomeFreeSeeder.php index bfe87ab6..451d2fa5 100644 --- a/database/seeders/FontAwesomeFreeSeeder.php +++ b/database/seeders/FontAwesomeFreeSeeder.php @@ -1476,7 +1476,9 @@ class FontAwesomeFreeSeeder extends Seeder public function run() { foreach (self::icons as $icon) { - Icon::create(['icon' => $icon]); + if (!Icon::where('icon', $icon)->count()) { + Icon::create(['icon' => $icon]); + } } } } diff --git a/database/seeders/PermissionsSeeder.php b/database/seeders/PermissionsSeeder.php new file mode 100644 index 00000000..a09fad39 --- /dev/null +++ b/database/seeders/PermissionsSeeder.php @@ -0,0 +1,47 @@ +count()) { + Permission::create(['name' => $permission]); + } + } + } +} diff --git a/lang/fr.json b/lang/fr.json index 0b2655c3..80ff4c90 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -304,5 +304,9 @@ "Here you can show and manage the companies list configured on :app": "Ici vous pouvez visualiser et gérer la liste des entreprises de :app", "Manage companies": "Gérer les entreprises", "Company activated": "Entreprise activée", - "Edit company": "Modifier l'entreprise" + "Edit company": "Modifier l'entreprise", + "Use same permissions of": "Utiliser les mêmes permission que", + "Update the permissions of this user based on another user's permissions": "Mettre à jour les permissions de cet utilisateur en se basant sur les permissions d'un autre utilisateur", + "Assign all permissions": "Assigner toutes les permissions", + "Remove all permissions": "Enlever toutes les permissions" } diff --git a/resources/views/components/main-menu.blade.php b/resources/views/components/main-menu.blade.php index 768df9b5..e2031544 100644 --- a/resources/views/components/main-menu.blade.php +++ b/resources/views/components/main-menu.blade.php @@ -34,7 +34,7 @@ - @if($project->id && (has_all_permissions(auth()->user(), 'delete-all-projects') || (has_all_permissions(auth()->user(), 'delete-own-projects') && $project->owner_id === auth()->user()->id))) + @if($project->id && (auth()->user()->can('Delete all projects') || (auth()->user()->can('Delete own projects') && $project->owner_id === auth()->user()->id))) diff --git a/resources/views/livewire/projects.blade.php b/resources/views/livewire/projects.blade.php index 8f9abbbc..95bc5d7b 100644 --- a/resources/views/livewire/projects.blade.php +++ b/resources/views/livewire/projects.blade.php @@ -10,11 +10,11 @@ ])
    - @if(has_all_permissions(auth()->user(), 'create-projects')) + @can('Create projects') - @endif + @endCan
    @if(auth()->user()->favoriteProjects()->count())
    diff --git a/resources/views/livewire/ticket-details/content.blade.php b/resources/views/livewire/ticket-details/content.blade.php index ec36c18a..1902e3a2 100644 --- a/resources/views/livewire/ticket-details/content.blade.php +++ b/resources/views/livewire/ticket-details/content.blade.php @@ -20,7 +20,7 @@
    {!! $ticket->content !!}
    - @if(has_all_permissions(auth()->user(), 'update-all-tickets') || (has_all_permissions(auth()->user(), 'update-own-tickets') && ($ticket->owner_id === auth()->user() || $ticket->responsible_id === auth()->user()->id))) + @if(auth()->user()->can('update all tickets') || (auth()->user()->can('Update own tickets') && ($ticket->owner_id === auth()->user() || $ticket->responsible_id === auth()->user()->id))) diff --git a/resources/views/livewire/ticket-details/priority.blade.php b/resources/views/livewire/ticket-details/priority.blade.php index e26ecc50..d80e8c72 100644 --- a/resources/views/livewire/ticket-details/priority.blade.php +++ b/resources/views/livewire/ticket-details/priority.blade.php @@ -18,7 +18,7 @@ @else
    - @if(has_all_permissions(auth()->user(), 'update-all-tickets') || (has_all_permissions(auth()->user(), 'update-own-tickets') && ($ticket->owner_id === auth()->user() || $ticket->responsible_id === auth()->user()->id))) + @if(auth()->user()->can('update all tickets') || (auth()->user()->can('Update own tickets') && ($ticket->owner_id === auth()->user() || $ticket->responsible_id === auth()->user()->id))) diff --git a/resources/views/livewire/ticket-details/responsible.blade.php b/resources/views/livewire/ticket-details/responsible.blade.php index c7ab5598..0d6ae8c8 100644 --- a/resources/views/livewire/ticket-details/responsible.blade.php +++ b/resources/views/livewire/ticket-details/responsible.blade.php @@ -27,7 +27,7 @@ @else @lang('Not assigned yet!') @endif - @if((has_all_permissions(auth()->user(), 'update-all-tickets') || (has_all_permissions(auth()->user(), 'update-own-tickets') && ($ticket->owner_id === auth()->user() || $ticket->responsible_id === auth()->user()->id))) && has_all_permissions(auth()->user(), 'assign-tickets')) + @if((auth()->user()->can('update all tickets') || (auth()->user()->can('Update own tickets') && ($ticket->owner_id === auth()->user() || $ticket->responsible_id === auth()->user()->id))) && has_all_permissions(auth()->user(), 'assign-tickets')) diff --git a/resources/views/livewire/ticket-details/status.blade.php b/resources/views/livewire/ticket-details/status.blade.php index a47eec0a..9eb96114 100644 --- a/resources/views/livewire/ticket-details/status.blade.php +++ b/resources/views/livewire/ticket-details/status.blade.php @@ -18,7 +18,7 @@ @else
    - @if((has_all_permissions(auth()->user(), 'update-all-tickets') || (has_all_permissions(auth()->user(), 'update-own-tickets') && ($ticket->owner_id === auth()->user() || $ticket->responsible_id === auth()->user()->id))) && has_all_permissions(auth()->user(), 'change-status-tickets')) + @if((auth()->user()->can('update all tickets') || (auth()->user()->can('Update own tickets') && ($ticket->owner_id === auth()->user() || $ticket->responsible_id === auth()->user()->id))) && has_all_permissions(auth()->user(), 'change-status-tickets')) diff --git a/resources/views/livewire/ticket-details/title.blade.php b/resources/views/livewire/ticket-details/title.blade.php index 74280e61..32243f85 100644 --- a/resources/views/livewire/ticket-details/title.blade.php +++ b/resources/views/livewire/ticket-details/title.blade.php @@ -20,7 +20,7 @@ {{ $ticket->title }} - @if(has_all_permissions(auth()->user(), 'update-all-tickets') || (has_all_permissions(auth()->user(), 'update-own-tickets') && ($ticket->owner_id === auth()->user() || $ticket->responsible_id === auth()->user()->id))) + @if(auth()->user()->can('update all tickets') || (auth()->user()->can('Update own tickets') && ($ticket->owner_id === auth()->user() || $ticket->responsible_id === auth()->user()->id))) diff --git a/resources/views/livewire/ticket-details/type.blade.php b/resources/views/livewire/ticket-details/type.blade.php index ee1b522f..a37a36e1 100644 --- a/resources/views/livewire/ticket-details/type.blade.php +++ b/resources/views/livewire/ticket-details/type.blade.php @@ -18,7 +18,7 @@ @else
    - @if(has_all_permissions(auth()->user(), 'update-all-tickets') || (has_all_permissions(auth()->user(), 'update-own-tickets') && ($ticket->owner_id === auth()->user() || $ticket->responsible_id === auth()->user()->id))) + @if(auth()->user()->can('update all tickets') || (auth()->user()->can('Update own tickets') && ($ticket->owner_id === auth()->user() || $ticket->responsible_id === auth()->user()->id))) diff --git a/resources/views/livewire/tickets.blade.php b/resources/views/livewire/tickets.blade.php index 98680f64..56c0d5d0 100644 --- a/resources/views/livewire/tickets.blade.php +++ b/resources/views/livewire/tickets.blade.php @@ -13,11 +13,11 @@ ])
    - @if(has_all_permissions(auth()->user(), 'create-tickets')) + @can('Create tickets') - @endif + @endCan
    From 8a253530dd102bd28abf364c0528bee080d3848d Mon Sep 17 00:00:00 2001 From: Hatim EL OUFIR Date: Sun, 25 Sep 2022 18:53:39 +0100 Subject: [PATCH 9/9] Spatie permissions integration (finalization) --- app/Core/LogsActivity.php | 2 +- .../Livewire/Administration/Companies.php | 17 +- .../Administration/CompaniesDialog.php | 75 +++++--- app/Http/Livewire/Administration/Users.php | 51 +++++- .../Livewire/Administration/UsersDialog.php | 65 +++++-- app/Http/Livewire/Auth/ActivateAccount.php | 1 + app/Models/Company.php | 6 + app/Models/CompanyUser.php | 27 +++ app/Models/User.php | 10 ++ app/View/Components/MainMenu.php | 2 +- ...9_25_165452_create_company_users_table.php | 33 ++++ database/seeders/PermissionsSeeder.php | 15 ++ lang/fr.json | 6 +- resources/css/app.scss | 6 + .../views/components/administration.blade.php | 164 ++++++++++-------- .../administration/companies-dialog.blade.php | 4 +- .../administration/companies.blade.php | 8 +- .../ticket-priorities-dialog.blade.php | 2 +- .../ticket-statuses-dialog.blade.php | 2 +- .../ticket-types-dialog.blade.php | 2 +- .../administration/users-dialog.blade.php | 4 +- .../livewire/administration/users.blade.php | 8 +- 22 files changed, 378 insertions(+), 132 deletions(-) create mode 100644 app/Models/CompanyUser.php create mode 100644 database/migrations/2022_09_25_165452_create_company_users_table.php diff --git a/app/Core/LogsActivity.php b/app/Core/LogsActivity.php index 26811e91..4314b0fb 100644 --- a/app/Core/LogsActivity.php +++ b/app/Core/LogsActivity.php @@ -22,7 +22,7 @@ public function getActivitylogOptions(): LogOptions ->logOnly($this->getFillable()) ->setDescriptionForEvent(fn(string $eventName) => new HtmlString( '
    ' - . auth()->user()->name . " " . $eventName . " " . $this->fromCamelCase((new \ReflectionClass($this))->getShortName()) . " " . $this + . (auth()->user()->name ?? '') . " " . $eventName . " " . $this->fromCamelCase((new \ReflectionClass($this))->getShortName()) . " " . $this . ' ' . __('See details') . '' . '
    ' )); diff --git a/app/Http/Livewire/Administration/Companies.php b/app/Http/Livewire/Administration/Companies.php index 046e3add..2f82beea 100644 --- a/app/Http/Livewire/Administration/Companies.php +++ b/app/Http/Livewire/Administration/Companies.php @@ -7,6 +7,7 @@ use Filament\Tables\Actions\Action; use Filament\Tables\Columns\BooleanColumn; use Filament\Tables\Columns\ImageColumn; +use Filament\Tables\Columns\TagsColumn; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Concerns\InteractsWithTable; use Filament\Tables\Contracts\HasTable; @@ -35,7 +36,14 @@ public function render() */ protected function getTableQuery(): Builder|Relation { - return Company::query(); + $query = Company::query(); + if (auth()->user()->can('View own companies') && !auth()->user()->can('View all companies')) { + $query->where('responsible_id', auth()->user()->id); + } elseif (!auth()->user()->can('View all companies')) { + // Get empty list + $query->whereNull('id'); + } + return $query; } /** @@ -69,6 +77,12 @@ protected function getTableColumns(): array ->searchable() ->sortable(), + TagsColumn::make('users.name') + ->label(__('Company users')) + ->limit(1) + ->searchable() + ->sortable(), + TextColumn::make('created_at') ->label(__('Created at')) ->sortable() @@ -89,6 +103,7 @@ protected function getTableActions(): array ->icon('heroicon-o-pencil') ->link() ->label(__('Edit company')) + ->visible(fn () => auth()->user()->can('Update companies')) ->action(fn(Company $record) => $this->updateCompany($record->id)) ]; } diff --git a/app/Http/Livewire/Administration/CompaniesDialog.php b/app/Http/Livewire/Administration/CompaniesDialog.php index 4b51f25e..8eec6a5b 100644 --- a/app/Http/Livewire/Administration/CompaniesDialog.php +++ b/app/Http/Livewire/Administration/CompaniesDialog.php @@ -2,12 +2,15 @@ namespace App\Http\Livewire\Administration; +use App\Models\CompanyUser; use App\Models\Icon; use App\Models\Company; use App\Models\User; +use Filament\Forms\Components\CheckboxList; use Filament\Forms\Components\ColorPicker; use Filament\Forms\Components\FileUpload; use Filament\Forms\Components\Grid; +use Filament\Forms\Components\MultiSelect; use Filament\Forms\Components\RichEditor; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; @@ -39,6 +42,7 @@ public function mount(): void 'description' => $this->company->description, 'is_disabled' => $this->company->is_disabled, 'responsible_id' => $this->company->responsible_id, + 'users' => $this->company->users->pluck('id')->toArray() ]); } @@ -60,33 +64,33 @@ protected function getFormSchema(): array Grid::make(5) ->schema([ - Grid::make(1) - ->columnSpan(2) - ->schema([ - FileUpload::make('logo') - ->image() - ->maxSize(10240) - ->label(__('Logo')), - ]), - - Grid::make(1) - ->columnSpan(3) - ->schema([ - - TextInput::make('name') - ->label(__('Company name')) - ->maxLength(255) - ->unique(table: Company::class, column: 'name', ignorable: fn () => $this->company, callback: function (Unique $rule) { - return $rule->withoutTrashed(); - }) - ->required(), - - Select::make('responsible_id') - ->label(__('Responsible')) - ->searchable() - ->required() - ->options(User::all()->pluck('name', 'id')->toArray()), - ]), + Grid::make(1) + ->columnSpan(2) + ->schema([ + FileUpload::make('logo') + ->image() + ->maxSize(10240) + ->label(__('Logo')), + ]), + + Grid::make(1) + ->columnSpan(3) + ->schema([ + + TextInput::make('name') + ->label(__('Company name')) + ->maxLength(255) + ->unique(table: Company::class, column: 'name', ignorable: fn() => $this->company, callback: function (Unique $rule) { + return $rule->withoutTrashed(); + }) + ->required(), + + Select::make('responsible_id') + ->label(__('Responsible')) + ->searchable() + ->required() + ->options(User::all()->pluck('name', 'id')->toArray()), + ]), ]), @@ -98,6 +102,10 @@ protected function getFormSchema(): array Toggle::make('is_disabled') ->label(__('Disable access to this company')), + + MultiSelect::make('users') + ->label(__('Company users')) + ->options(User::all()->pluck('name', 'id')->toArray()) ]; } @@ -117,6 +125,12 @@ public function save(): void 'is_disabled' => $data['is_disabled'] ?? false, 'responsible_id' => $data['responsible_id'], ]); + foreach ($data['users'] as $user) { + CompanyUser::create([ + 'company_id' => $company->id, + 'user_id' => $user + ]); + } Notification::make() ->success() ->title(__('Company created')) @@ -129,6 +143,13 @@ public function save(): void $this->company->is_disabled = $data['is_disabled']; $this->company->responsible_id = $data['responsible_id']; $this->company->save(); + CompanyUser::where('company_id', $this->company->id)->delete(); + foreach ($data['users'] as $user) { + CompanyUser::create([ + 'company_id' => $this->company->id, + 'user_id' => $user + ]); + } Notification::make() ->success() ->title(__('Company updated')) diff --git a/app/Http/Livewire/Administration/Users.php b/app/Http/Livewire/Administration/Users.php index 9bf9aa9d..0d5642fd 100644 --- a/app/Http/Livewire/Administration/Users.php +++ b/app/Http/Livewire/Administration/Users.php @@ -2,6 +2,7 @@ namespace App\Http\Livewire\Administration; +use App\Models\Company; use App\Models\User; use App\Notifications\UserCreatedNotification; use Filament\Forms\Components\TagsInput; @@ -13,6 +14,7 @@ use Filament\Tables\Columns\TextColumn; use Filament\Tables\Concerns\InteractsWithTable; use Filament\Tables\Contracts\HasTable; +use Filament\Tables\Filters\SelectFilter; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Relations\Relation; use Livewire\Component; @@ -37,7 +39,18 @@ public function render() */ protected function getTableQuery(): Builder|Relation { - return User::query(); + $query = User::query(); + if (auth()->user()->can('View company users') && !auth()->user()->can('View all users')) { + $query->whereHas('companies', fn ($query) => + $query->whereIn('companies.id', + auth()->user()->ownCompanies->pluck('id')->toArray() + ) + ); + } elseif (!auth()->user()->can('View all users')) { + // Get empty list + $query->whereNull('id'); + } + return $query; } /** @@ -61,6 +74,13 @@ protected function getTableColumns(): array TagsColumn::make('permissions.name') ->label(__('Permissions')) ->limit(1) + ->visible(fn () => auth()->user()->can('Assign permissions')) + ->searchable() + ->sortable(), + + TagsColumn::make('companies.name') + ->label(__('Companies')) + ->limit(1) ->searchable() ->sortable(), @@ -85,13 +105,14 @@ protected function getTableActions(): array ->link() ->color('warning') ->label(__('Resend activation email')) - ->visible(fn(User $record) => $record->register_token) + ->visible(fn(User $record) => $record->register_token && auth()->user()->can('Update users')) ->action(fn(User $record) => $this->resendActivationEmail($record->id)), Action::make('edit') ->icon('heroicon-o-pencil') ->link() ->label(__('Edit user')) + ->visible(fn () => auth()->user()->can('Update users')) ->action(fn(User $record) => $this->updateUser($record->id)) ]; } @@ -116,6 +137,32 @@ protected function getDefaultTableSortDirection(): ?string return 'desc'; } + /** + * Table filters definition + * + * @return array + */ + protected function getTableFilters(): array + { + return [ + SelectFilter::make('isAccountActivated') + ->label(__('Account activated')) + ->placeholder(__('All users')) + ->options([ + 'yes' => __('Yes'), + 'no' => __('No'), + ]) + ->query(function ($state, $query) { + if ($state['value'] === 'yes') { + $query->whereNull('register_token'); + } + if ($state['value'] === 'no') { + $query->whereNotNull('register_token'); + } + }) + ]; + } + /** * Show update user dialog * diff --git a/app/Http/Livewire/Administration/UsersDialog.php b/app/Http/Livewire/Administration/UsersDialog.php index 0af7a7d7..7a0992c6 100644 --- a/app/Http/Livewire/Administration/UsersDialog.php +++ b/app/Http/Livewire/Administration/UsersDialog.php @@ -2,6 +2,8 @@ namespace App\Http\Livewire\Administration; +use App\Models\Company; +use App\Models\CompanyUser; use App\Models\User; use App\Notifications\UserCreatedNotification; use Filament\Forms\Components\Checkbox; @@ -9,6 +11,7 @@ use Filament\Forms\Components\Grid; use Filament\Forms\Components\MultiSelect; use Filament\Forms\Components\Placeholder; +use Filament\Forms\Components\Radio; use Filament\Forms\Components\Select; use Filament\Forms\Components\TagsInput; use Filament\Forms\Components\TextInput; @@ -38,6 +41,7 @@ public function mount(): void $this->form->fill([ 'name' => $this->user->name, 'email' => $this->user->email, + 'locale' => $this->user->locale ?? config('app.locale'), 'permissions' => $this->user->permissions->pluck('id')->toArray(), ]); } @@ -70,6 +74,21 @@ protected function getFormSchema(): array ->required(), ]), + Grid::make(2) + ->schema([ + Radio::make('locale') + ->label(__('Default language')) + ->options(locales()) + ->columnSpan(2) + ->required(), + + Select::make('company') + ->label(__('Company')) + ->columnSpan(1) + ->visible(fn() => !$this->user?->id && (auth()->user()->can('View own companies') && !auth()->user()->can('View all companies'))) + ->options(fn() => auth()->user()->ownCompanies->pluck('name', 'id')->toArray()), + ]), + Grid::make() ->extraAttributes([ 'class' => 'border-t border-gray-200 pt-5 mt-5' @@ -79,7 +98,16 @@ protected function getFormSchema(): array ->label(__('Use same permissions of')) ->helperText(__("Update the permissions of this user based on another user's permissions")) ->searchable() - ->options(User::all()->pluck('name', 'id')->toArray()) + ->options(function () { + $query = User::query(); + if (auth()->user()->can('View own companies') && !auth()->user()->can('View all companies')) { + $query->whereHas('companies', fn($query) => $query->whereIn('companies.id', + auth()->user()->ownCompanies->pluck('id')->toArray() + ) + ); + } + return $query->get()->pluck('name', 'id')->toArray(); + }) ->reactive() ->afterStateUpdated(function (Closure $set, Closure $get) { if ($get('same_permissions_as')) { @@ -89,17 +117,16 @@ protected function getFormSchema(): array }) ]), - Placeholder::make('permissions_buttons') - ->content(new HtmlString(' + CheckboxList::make('permissions') + ->label(__('Permissions')) + ->hint(new HtmlString('
    + |
    - ')), - - CheckboxList::make('permissions') - ->label(__('Permissions')) - ->required() + ')) + ->visible(fn() => auth()->user()->can('Assign permissions')) ->columns(3) ->options(Permission::orderBy('name')->get()->pluck('name', 'id')->toArray()) ]; @@ -137,26 +164,44 @@ public function save(): void $user = User::create([ 'name' => $data['name'], 'email' => $data['email'], + 'locale' => $data['locale'], 'password' => bcrypt(uniqid()), 'register_token' => Uuid::uuid4()->toString() ]); - $user->syncPermissions($data['permissions']); + $user->syncPermissions($this->permissions); $user->notify(new UserCreatedNotification($user)); Notification::make() ->success() ->title(__('User created')) ->body(__('An email has been sent to the user')) ->send(); + if (isset($data['company'])) { + CompanyUser::create([ + 'user_id' => $user->id, + 'company_id' => $data['company'] + ]); + } } else { $this->user->name = $data['name']; $this->user->email = $data['email']; + $this->user->locale = $data['locale']; $this->user->save(); - $this->user->syncPermissions($data['permissions']); + $this->user->syncPermissions($this->permissions); Notification::make() ->success() ->title(__('User updated')) ->body(__('The user\'s details has been updated')) ->send(); + + if ($this->user->id == auth()->user()->id) { + session()->put('locale', $this->user->locale); + } + if (isset($data['company'])) { + CompanyUser::create([ + 'user_id' => $this->user->id, + 'company_id' => $data['company'] + ]); + } } $this->emit('userSaved'); } diff --git a/app/Http/Livewire/Auth/ActivateAccount.php b/app/Http/Livewire/Auth/ActivateAccount.php index 1def97de..f1e0a85d 100644 --- a/app/Http/Livewire/Auth/ActivateAccount.php +++ b/app/Http/Livewire/Auth/ActivateAccount.php @@ -63,6 +63,7 @@ public function activate(): void $this->user->save(); $this->user->notify(new UserActivatedNotification()); Auth::login($this->user); + session()->put('locale', $this->user->locale); redirect()->to(route('home')); } } diff --git a/app/Models/Company.php b/app/Models/Company.php index 913e7155..87d93c92 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -5,6 +5,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\SoftDeletes; class Company extends Model @@ -23,4 +24,9 @@ public function responsible(): BelongsTo { return $this->belongsTo(User::class, 'responsible_id'); } + + public function users(): BelongsToMany + { + return $this->belongsToMany(User::class, 'company_users', 'company_id', 'user_id'); + } } diff --git a/app/Models/CompanyUser.php b/app/Models/CompanyUser.php new file mode 100644 index 00000000..d828e3d3 --- /dev/null +++ b/app/Models/CompanyUser.php @@ -0,0 +1,27 @@ +belongsTo(User::class); + } + + public function company(): BelongsTo + { + return $this->belongsTo(Company::class); + } +} diff --git a/app/Models/User.php b/app/Models/User.php index 1d3c0723..3adbf15f 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -107,4 +107,14 @@ public function isAccountActivated(): Attribute get: fn() => $this->register_token == null ); } + + public function ownCompanies(): HasMany + { + return $this->hasMany(Company::class, 'responsible_id'); + } + + public function companies(): BelongsToMany + { + return $this->belongsToMany(Company::class, 'company_users', 'user_id', 'company_id'); + } } diff --git a/app/View/Components/MainMenu.php b/app/View/Components/MainMenu.php index e0ee0bc2..ac012a76 100644 --- a/app/View/Components/MainMenu.php +++ b/app/View/Components/MainMenu.php @@ -41,7 +41,7 @@ public function __construct() 'icon' => 'fa-ticket', 'always_shown' => false, 'show_notification_indicator' => false, - 'permission' => 'Can view tickets page' + 'permission' => 'Can view Tickets page' ], 'kanban' => [ 'title' => 'Kanban Board', diff --git a/database/migrations/2022_09_25_165452_create_company_users_table.php b/database/migrations/2022_09_25_165452_create_company_users_table.php new file mode 100644 index 00000000..77f712a3 --- /dev/null +++ b/database/migrations/2022_09_25_165452_create_company_users_table.php @@ -0,0 +1,33 @@ +id(); + $table->foreignId('user_id')->constrained('users'); + $table->foreignId('company_id')->constrained('companies'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('company_users'); + } +}; diff --git a/database/seeders/PermissionsSeeder.php b/database/seeders/PermissionsSeeder.php index a09fad39..c60ae1c0 100644 --- a/database/seeders/PermissionsSeeder.php +++ b/database/seeders/PermissionsSeeder.php @@ -29,6 +29,21 @@ class PermissionsSeeder extends Seeder 'Can view Tickets page', 'Can view Kanban page', 'Can view Administration page', + 'View all users', + 'View company users', + 'Create users', + 'Update users', + 'Delete users', + 'Assign permissions', + 'View all companies', + 'View own companies', + 'Create companies', + 'Update companies', + 'Delete companies', + 'Manage ticket statuses', + 'Manage ticket priorities', + 'Manage ticket types', + 'View activity log', ]; /** diff --git a/lang/fr.json b/lang/fr.json index 80ff4c90..7c18c3e6 100644 --- a/lang/fr.json +++ b/lang/fr.json @@ -308,5 +308,9 @@ "Use same permissions of": "Utiliser les mêmes permission que", "Update the permissions of this user based on another user's permissions": "Mettre à jour les permissions de cet utilisateur en se basant sur les permissions d'un autre utilisateur", "Assign all permissions": "Assigner toutes les permissions", - "Remove all permissions": "Enlever toutes les permissions" + "Remove all permissions": "Enlever toutes les permissions", + "Company users": "Utilisateurs de l'entreprise", + "Yes": "Oui", + "No": "Non", + "All users": "Tous les utilisateurs" } diff --git a/resources/css/app.scss b/resources/css/app.scss index c996c870..6315e790 100644 --- a/resources/css/app.scss +++ b/resources/css/app.scss @@ -85,3 +85,9 @@ table { } } } + +.modal-container { + @apply w-full overflow-y-auto max-h-screen p-5; + + max-height: calc(100vh - 200px); +} diff --git a/resources/views/components/administration.blade.php b/resources/views/components/administration.blade.php index 24a3a3d7..172a296a 100644 --- a/resources/views/components/administration.blade.php +++ b/resources/views/components/administration.blade.php @@ -1,99 +1,111 @@
    -
    -
    -
    -
    @lang('User Management')
    -

    @lang('Here you can show and manage the users list configured on :app', [ + @if(auth()->user()->hasAnyPermission(['View all users', 'View company users'])) +

    +
    +
    +
    @lang('User Management')
    +

    @lang('Here you can show and manage the users list configured on :app', [ 'app' => config('app.name') ])

    -
    -
    + @endif -
    -
    -
    -
    @lang('Companies Management')
    -

    @lang('Here you can show and manage the companies list configured on :app', [ - 'app' => config('app.name') - ])

    -
    - - @lang('Manage companies') - - + @if(auth()->user()->hasAnyPermission(['View all companies', 'View own companies'])) +
    +
    +
    +
    @lang('Companies Management')
    +

    @lang('Here you can show and manage the companies list configured on :app', [ + 'app' => config('app.name') + ])

    +
    -
    + @endcan -
    -
    -
    -
    @lang('Statuses Management')
    -

    @lang('Here you can show and manage the tickets statuses list configured on :app', [ - 'app' => config('app.name') - ])

    -
    - - @lang('Manage statuses') - - + @can('Manage ticket statuses') +
    +
    +
    +
    @lang('Statuses Management')
    +

    @lang('Here you can show and manage the tickets statuses list configured on :app', [ + 'app' => config('app.name') + ])

    +
    -
    + @endcan -
    -
    -
    -
    @lang('Priorities Management')
    -

    @lang('Here you can show and manage the tickets priorities list configured on :app', [ - 'app' => config('app.name') - ])

    -
    - - @lang('Manage priorities') - - + @can('Manage ticket priorities') +
    +
    +
    +
    @lang('Priorities Management')
    +

    @lang('Here you can show and manage the tickets priorities list configured on :app', [ + 'app' => config('app.name') + ])

    +
    -
    + @endcan -
    -
    -
    -
    @lang('Types Management')
    -

    @lang('Here you can show and manage the tickets types list configured on :app', [ - 'app' => config('app.name') - ])

    -
    - - @lang('Manage types') - - + @can('Manage ticket types') +
    +
    +
    +
    @lang('Types Management')
    +

    @lang('Here you can show and manage the tickets types list configured on :app', [ + 'app' => config('app.name') + ])

    +
    -
    + @endcan -
    -
    -
    -
    @lang('Activity logs')
    -

    @lang('Here you can see all activity logs of :app', [ - 'app' => config('app.name') - ])

    -
    - - @lang('See details') - - + @can('View activity log') +
    +
    +
    +
    @lang('Activity logs')
    +

    @lang('Here you can see all activity logs of :app', [ + 'app' => config('app.name') + ])

    +
    -
    + @endcan
    diff --git a/resources/views/livewire/administration/companies-dialog.blade.php b/resources/views/livewire/administration/companies-dialog.blade.php index 4df2318e..8224f10b 100644 --- a/resources/views/livewire/administration/companies-dialog.blade.php +++ b/resources/views/livewire/administration/companies-dialog.blade.php @@ -1,5 +1,5 @@
    -
    + @@ -10,7 +10,7 @@
    - @if($company->id) + @if($company->id && auth()->user()->can('Delete companies')) diff --git a/resources/views/livewire/administration/companies.blade.php b/resources/views/livewire/administration/companies.blade.php index a5786353..79f07699 100644 --- a/resources/views/livewire/administration/companies.blade.php +++ b/resources/views/livewire/administration/companies.blade.php @@ -14,9 +14,11 @@ ])
    - + @can('Create companies') + + @endcan
    diff --git a/resources/views/livewire/administration/ticket-priorities-dialog.blade.php b/resources/views/livewire/administration/ticket-priorities-dialog.blade.php index 03d1cf2e..689b092e 100644 --- a/resources/views/livewire/administration/ticket-priorities-dialog.blade.php +++ b/resources/views/livewire/administration/ticket-priorities-dialog.blade.php @@ -1,5 +1,5 @@ -
    + diff --git a/resources/views/livewire/administration/ticket-statuses-dialog.blade.php b/resources/views/livewire/administration/ticket-statuses-dialog.blade.php index f5fd3220..2c1af7e8 100644 --- a/resources/views/livewire/administration/ticket-statuses-dialog.blade.php +++ b/resources/views/livewire/administration/ticket-statuses-dialog.blade.php @@ -1,5 +1,5 @@ -
    + diff --git a/resources/views/livewire/administration/ticket-types-dialog.blade.php b/resources/views/livewire/administration/ticket-types-dialog.blade.php index d12dda68..d7401cde 100644 --- a/resources/views/livewire/administration/ticket-types-dialog.blade.php +++ b/resources/views/livewire/administration/ticket-types-dialog.blade.php @@ -1,5 +1,5 @@ -
    + diff --git a/resources/views/livewire/administration/users-dialog.blade.php b/resources/views/livewire/administration/users-dialog.blade.php index 76694a84..bd7d7339 100644 --- a/resources/views/livewire/administration/users-dialog.blade.php +++ b/resources/views/livewire/administration/users-dialog.blade.php @@ -1,5 +1,5 @@ -
    + @@ -10,7 +10,7 @@
    - @if($user->id) + @if($user->id && auth()->user()->can('Delete users')) diff --git a/resources/views/livewire/administration/users.blade.php b/resources/views/livewire/administration/users.blade.php index bf05fdb2..d7063199 100644 --- a/resources/views/livewire/administration/users.blade.php +++ b/resources/views/livewire/administration/users.blade.php @@ -14,9 +14,11 @@ ])
    - + @can('Create users') + + @endcan