Переглянути джерело

users - sync utenti tenant / master per modifica da tenant

ferrari 1 місяць тому
батько
коміт
01f520512c

+ 4 - 3
app/Http/Livewire/Presence.php

@@ -436,14 +436,15 @@ class Presence extends Component
             }
             $status = $has_presence->status;
             // cerca nel master con ::on('mysql')
-            $user_instructor = \Illuminate\Foundation\Auth\User::on('mysql')->find($has_presence->user_id);
+            $user_instructor = \App\Models\User::where('master_user_id', $has_presence->user_id)->first();
             $instructor = $user_instructor?->name;
 
+            $additional_user_instructor = $has_presence->instructor;
+
             if ($has_presence->court_id > 0) {
                 $court = \App\Models\Court::findOrFail($has_presence->court_id)->name;
             }
-            if ($has_presence->instructor_id > 0 && $has_presence->instructor_id !== $has_presence->user_id) {
-                $additional_user_instructor = \App\Models\User::find($has_presence->instructor_id);
+            if ($additional_user_instructor && $additional_user_instructor->master_user_id !== $has_presence->user_id) {
                 $additional_instructor = $additional_user_instructor?->name . ' ' . $additional_user_instructor?->cognome;
             }
             if (!is_null($has_presence->notes)) {

+ 1 - 2
app/Http/Livewire/PresenceReport.php

@@ -298,8 +298,7 @@ class PresenceReport extends Component
 
         $court = $presence->court?->name ?? '';
 
-        // cerca nel master con ::on('mysql')
-        $user_instructor = \Illuminate\Foundation\Auth\User::on('mysql')->find($presence->user_id);
+        $user_instructor = \App\Models\User::where('master_user_id', $presence->user_id)->first();
         $main_instructor = $user_instructor?->name;
 
         $instructorParts = [

+ 51 - 240
app/Http/Livewire/User.php

@@ -20,6 +20,7 @@ class User extends Component
     public $records, $name, $cognome, $email, $password, $oldPassword, $level, $enabled, $dataId, $update = false, $add = false, $oldEmail = null;
     public $userExists = false;
     public $password_confirmation;
+    public $master_user_id = null;
 
     protected $rules = [
         'name' => 'required',
@@ -64,164 +65,6 @@ class User extends Component
         }
     }
 
-    /**
-     * Create or update user in master database
-     */
-    private function syncUserToMasterDatabase($userData, $action = 'create', $oldEmail = null)
-    {
-        try {
-            Log::info('Syncing user to master database', [
-                'action' => $action,
-                'email' => $userData['email'],
-                'old_email' => $oldEmail
-            ]);
-
-            $masterConfig = [
-                'driver' => 'mysql',
-                'host' => env('DB_HOST', '127.0.0.1'),
-                'port' => env('DB_PORT', '3306'),
-                'database' => env('DB_DATABASE'),
-                'username' => env('DB_USERNAME'),
-                'password' => env('DB_PASSWORD'),
-                'charset' => 'utf8mb4',
-                'collation' => 'utf8mb4_unicode_ci',
-                'prefix' => '',
-                'strict' => true,
-                'engine' => null,
-            ];
-
-            config(['database.connections.master_sync' => $masterConfig]);
-
-            $currentUser = Auth::user();
-
-            $masterData = [
-                'name' => $userData['name'],
-                'email' => $userData['email'],
-                'password' => $userData['password'],
-                'tenant_database' => $currentUser->tenant_database,
-                'tenant_username' => $currentUser->tenant_username,
-                'tenant_password' => $currentUser->tenant_password,
-                'tenant_host' => '127.0.0.1',
-                'created_at' => now(),
-                'updated_at' => now()
-            ];
-
-            if ($action === 'create') {
-                $inserted = DB::connection('master_sync')
-                    ->table('users')
-                    ->insert($masterData);
-
-                if ($inserted) {
-                    Log::info('Successfully created user in master database', [
-                        'email' => $userData['email'],
-                        'tenant_database' => $currentUser->tenant_database
-                    ]);
-                    return true;
-                } else {
-                    Log::warning('Failed to create user in master database', [
-                        'email' => $userData['email']
-                    ]);
-                    return false;
-                }
-            } elseif ($action === 'update') {
-                $searchEmail = $oldEmail ?: $userData['email'];
-
-                unset($masterData['created_at']);
-
-                $updated = DB::connection('master_sync')
-                    ->table('users')
-                    ->where('email', $searchEmail)
-                    ->update($masterData);
-
-                if ($updated) {
-                    Log::info('Successfully updated user in master database', [
-                        'old_email' => $searchEmail,
-                        'new_email' => $userData['email']
-                    ]);
-                    return true;
-                } else {
-                    Log::warning('No user found in master database to update', [
-                        'search_email' => $searchEmail
-                    ]);
-                    return false;
-                }
-            }
-        } catch (\Exception $e) {
-            Log::error('Failed to sync user to master database', [
-                'action' => $action,
-                'email' => $userData['email'],
-                'error' => $e->getMessage(),
-                'trace' => $e->getTraceAsString()
-            ]);
-            return false;
-        } finally {
-            // Clean up the temporary connection
-            try {
-                DB::purge('master_sync');
-            } catch (\Exception $e) {
-                // Ignore cleanup errors
-            }
-        }
-    }
-
-    /**
-     * Delete user from master database
-     */
-    private function deleteUserFromMasterDatabase($email)
-    {
-        try {
-            Log::info('Deleting user from master database', [
-                'email' => $email
-            ]);
-
-            $masterConfig = [
-                'driver' => 'mysql',
-                'host' => env('DB_HOST', '127.0.0.1'),
-                'port' => env('DB_PORT', '3306'),
-                'database' => env('DB_DATABASE'),
-                'username' => env('DB_USERNAME'),
-                'password' => env('DB_PASSWORD'),
-                'charset' => 'utf8mb4',
-                'collation' => 'utf8mb4_unicode_ci',
-                'prefix' => '',
-                'strict' => true,
-                'engine' => null,
-            ];
-
-            config(['database.connections.master_delete' => $masterConfig]);
-
-            $deleted = DB::connection('master_delete')
-                ->table('users')
-                ->where('email', $email)
-                ->delete();
-
-            if ($deleted) {
-                Log::info('Successfully deleted user from master database', [
-                    'email' => $email,
-                    'rows_affected' => $deleted
-                ]);
-                return true;
-            } else {
-                Log::warning('No user found in master database to delete', [
-                    'email' => $email
-                ]);
-                return false;
-            }
-        } catch (\Exception $e) {
-            Log::error('Failed to delete user from master database', [
-                'email' => $email,
-                'error' => $e->getMessage(),
-                'trace' => $e->getTraceAsString()
-            ]);
-            return false;
-        } finally {
-            try {
-                DB::purge('master_delete');
-            } catch (\Exception $e) {
-            }
-        }
-    }
-
     /**
      * Send welcome email to new user
      */
@@ -296,6 +139,7 @@ class User extends Component
             return false;
         }
     }
+
     public function sendSimpleWelcomeEmail($email, $userData)
     {
         try {
@@ -311,7 +155,6 @@ class User extends Component
             $message .= "Grazie e benvenuto!\n";
             $message .= "Il team di " . $userData['company'];
 
-            // Send simple text email
             mail($email, $subject, $message, [
                 'From' => config('mail.from.address'),
                 'Reply-To' => config('mail.from.address'),
@@ -327,6 +170,7 @@ class User extends Component
             return false;
         }
     }
+
     public function resetFields()
     {
         $this->name = '';
@@ -337,6 +181,7 @@ class User extends Component
         $this->oldPassword = '';
         $this->level = 0;
         $this->enabled = true;
+        $this->master_user_id = null;
         $this->emit('load-data-table');
     }
 
@@ -344,7 +189,7 @@ class User extends Component
     {
         $this->logCurrentDatabase('Before fetching users in render()');
 
-        $this->records = \App\Models\User::select('id', 'name', 'cognome', 'email', 'password', 'level', 'enabled')->get();
+        $this->records = \App\Models\User::select('id', 'name', 'cognome', 'email', 'password', 'level', 'enabled', 'master_user_id')->get();
 
         $this->logCurrentDatabase('After fetching users in render()');
 
@@ -410,7 +255,6 @@ class User extends Component
 
         try {
             $plainPassword = $this->password;
-
             $hashedPassword = bcrypt($this->password);
 
             $user = \App\Models\User::create([
@@ -419,13 +263,17 @@ class User extends Component
                 'email' => $this->email,
                 'password' => $hashedPassword,
                 'level' => $this->level,
-                'enabled' => $this->enabled
+                'enabled' => $this->enabled,
+                'master_user_id' => null,
             ]);
 
             $this->logCurrentDatabase('After creating user in tenant database');
 
+            $this->master_user_id = $user->fresh()->master_user_id;
+
             Log::info('User created successfully in tenant database', [
                 'user_id' => $user->id,
+                'master_user_id' => $this->master_user_id,
                 'name' => $this->name,
                 'cognome' => $this->cognome,
                 'email' => $this->email,
@@ -434,43 +282,30 @@ class User extends Component
                 'database' => DB::connection()->getDatabaseName()
             ]);
 
-            $masterSyncSuccess = $this->syncUserToMasterDatabase([
+            $emailSent = $this->sendWelcomeEmail([
                 'name' => $this->name,
                 'cognome' => $this->cognome,
                 'email' => $this->email,
-                'password' => $hashedPassword,
-                'level' => $this->level,
-                'enabled' => $this->enabled
-            ], 'create');
+                'level' => $this->level
+            ], $plainPassword);
 
-            if ($masterSyncSuccess) {
-                $emailSent = $this->sendWelcomeEmail([
+            if (!$emailSent) {
+                Log::info('HTML email failed, trying simple email', ['email' => $this->email]);
+                $emailSent = $this->sendSimpleWelcomeEmail($this->email, [
                     'name' => $this->name,
                     'cognome' => $this->cognome,
                     'email' => $this->email,
-                    'level' => $this->level
-                ], $plainPassword);
-
-                if (!$emailSent) {
-                    Log::info('HTML email failed, trying simple email', ['email' => $this->email]);
-                    $emailSent = $this->sendSimpleWelcomeEmail($this->email, [
-                        'name' => $this->name,
-                        'cognome' => $this->cognome,
-                        'email' => $this->email,
-                        'password' => $plainPassword,
-                        'level' => $this->level,
-                        'company' => 'Leezard',
-                        'login_url' => url('/')
-                    ]);
-                }
+                    'password' => $plainPassword,
+                    'level' => $this->level,
+                    'company' => 'Leezard',
+                    'login_url' => url('/'),
+                ]);
+            }
 
-                if ($emailSent) {
-                    session()->flash('success', 'Utente creato e email di benvenuto inviata con successo');
-                } else {
-                    session()->flash('success', 'Utente creato ma errore nell\'invio dell\'email. Controlla i log per dettagli.');
-                }
+            if ($emailSent) {
+                session()->flash('success', 'Utente creato e email di benvenuto inviata con successo');
             } else {
-                session()->flash('success', 'Utente creato nel database tenant ma errore nella sincronizzazione master');
+                session()->flash('success', 'Utente creato ma errore nell\'invio dell\'email. Controlla i log per dettagli.');
             }
 
             $this->resetFields();
@@ -520,12 +355,13 @@ class User extends Component
                 $this->add = false;
                 $this->enabled = $user->enabled;
                 $this->userExists = true;
-                // Store old email for master database update
                 $this->oldEmail = $user->email;
+                $this->master_user_id = $user->master_user_id;
             }
 
             Log::info('User edit loaded', [
                 'user_id' => $id,
+                'master_user_id' => $this->master_user_id,
                 'name' => $this->name,
                 'cognome' => $this->cognome,
                 'email' => $this->email,
@@ -545,7 +381,6 @@ class User extends Component
         }
     }
 
-
     public function update()
     {
         $this->logCurrentDatabase('Start of update() method');
@@ -555,36 +390,39 @@ class User extends Component
             'cognome' => 'required',
             'email' => 'required|email',
             'password' => 'nullable|min:6',
-            'password_confirmation' => 'required|same:password'
         ];
 
+        if ($this->master_user_id == Auth::user()->id) {
+            $rules['password_confirmation'] = 'required_with:password|same:password';
+        }
+
         $this->validate($rules, $this->messages);
 
         try {
             $currentUser = \App\Models\User::findOrFail($this->dataId);
-            $oldEmail = $currentUser->email;
-            $oldName = $currentUser->name;
-
-            $updateData = [
-                'name' => $this->name,
-                'cognome' => $this->cognome,
-                'email' => $this->email,
-                'level' => $this->level,
-                'enabled' => $this->enabled
-            ];
 
             $passwordChanged = !empty($this->password);
+
+            $currentUser->name = $this->name;
+            $currentUser->cognome = $this->cognome;
+            $currentUser->email = $this->email;
+            $currentUser->level = $this->level;
+            $currentUser->enabled = $this->enabled;
+
             if ($passwordChanged) {
-                $hashedPassword = bcrypt($this->password);
-                $updateData['password'] = $hashedPassword;
+                $currentUser->password = bcrypt($this->password);
             }
 
-            \App\Models\User::whereId($this->dataId)->update($updateData);
+            $currentUser->save();
+
+            $currentUser = $currentUser->fresh();
+            $this->master_user_id = $currentUser->master_user_id;
 
             $this->logCurrentDatabase('After updating user');
 
             Log::info('User updated successfully in tenant database', [
                 'user_id' => $this->dataId,
+                'master_user_id' => $this->master_user_id,
                 'name' => $this->name,
                 'cognome' => $this->cognome,
                 'email' => $this->email,
@@ -594,22 +432,6 @@ class User extends Component
                 'database' => DB::connection()->getDatabaseName()
             ]);
 
-            $emailChanged = $oldEmail !== $this->email;
-            $nameChanged = $oldName !== $this->name;
-
-            if ($emailChanged || $nameChanged || $passwordChanged) {
-                $masterData = [
-                    'name' => $this->name,
-                    'email' => $this->email
-                ];
-
-                if ($passwordChanged) {
-                    $masterData['password'] = $hashedPassword;
-                }
-
-                $this->syncUserToMasterDatabase($masterData, 'update', $oldEmail);
-            }
-
             session()->flash('success', 'Dato aggiornato');
             $this->resetFields();
             $this->update = false;
@@ -669,9 +491,11 @@ class User extends Component
             $userEmail = $user->email;
             $userName = $user->name;
             $userCognome = $user->cognome;
+            $masterUserId = $user->master_user_id;
 
             Log::info('Found user for deletion', [
                 'user_id' => $id,
+                'master_user_id' => $masterUserId,
                 'user_email' => $userEmail,
                 'user_name' => $userName . ' ' . $userCognome
             ]);
@@ -684,27 +508,14 @@ class User extends Component
 
             $this->logCurrentDatabase('After deleting user from tenant');
 
-            Log::info('User deleted successfully from tenant database', [
+            Log::info('User deleted successfully from tenant database; master sync delegated to observer', [
                 'user_id' => $id,
+                'master_user_id' => $masterUserId,
                 'user_email' => $userEmail,
                 'database' => DB::connection()->getDatabaseName()
             ]);
 
-            $masterDeleted = $this->deleteUserFromMasterDatabase($userEmail);
-
-            if ($masterDeleted) {
-                Log::info('User deleted from both databases successfully', [
-                    'user_id' => $id,
-                    'user_email' => $userEmail
-                ]);
-                session()->flash('success', "Utente {$userName} {$userCognome} eliminato con successo");
-            } else {
-                Log::warning('User deleted from tenant but failed to delete from master', [
-                    'user_id' => $id,
-                    'user_email' => $userEmail
-                ]);
-                session()->flash('success', "Utente eliminato dal database tenant, ma errore nella sincronizzazione master");
-            }
+            session()->flash('success', "Utente {$userName} {$userCognome} eliminato con successo");
 
             $this->emit('userDeleted');
             $this->emit('load-data-table');
@@ -722,14 +533,14 @@ class User extends Component
         }
     }
 
-
     private function canEditUser($userId)
     {
         $currentUser = Auth::user();
 
         if ($currentUser->level == 0) {
             $targetUser = \App\Models\User::find($userId);
-            return $targetUser && $targetUser->email != 'admin@admin.com';
+            // return $targetUser && $targetUser->email != 'admin@admin.com';
+            return $targetUser;
         }
 
         return $userId == $currentUser->id;

+ 1 - 0
app/Models/User.php

@@ -28,6 +28,7 @@ class User extends Authenticatable
         'enabled',
         'first_login_completed',
         'first_login_at',
+        'master_user_id',
     ];
 
     /**

+ 36 - 0
app/Observers/UserObserver.php

@@ -0,0 +1,36 @@
+<?php
+
+namespace App\Observers;
+
+use App\Models\User;
+use App\Services\TenantUserMasterSyncService;
+use Illuminate\Support\Facades\Log;
+
+class UserObserver
+{
+    public function saved(User $user): void
+    {
+        try {
+            app(TenantUserMasterSyncService::class)->sync($user);
+        } catch (\Throwable $e) {
+            Log::error('UserObserver sync failed', [
+                'tenant_user_id' => $user->id,
+                'email' => $user->email,
+                'error' => $e->getMessage(),
+            ]);
+        }
+    }
+
+    public function deleting(User $user): void
+    {
+        try {
+            app(TenantUserMasterSyncService::class)->delete($user);
+        } catch (\Throwable $e) {
+            Log::error('UserObserver delete sync failed', [
+                'tenant_user_id' => $user->id,
+                'email' => $user->email,
+                'error' => $e->getMessage(),
+            ]);
+        }
+    }
+}

+ 3 - 0
app/Providers/AppServiceProvider.php

@@ -4,6 +4,8 @@ namespace App\Providers;
 
 use Illuminate\Support\ServiceProvider;
 use Illuminate\Support\Facades\URL;
+use App\Models\User;
+use App\Observers\UserObserver;
 
 class AppServiceProvider extends ServiceProvider
 {
@@ -25,5 +27,6 @@ class AppServiceProvider extends ServiceProvider
     public function boot()
     {
             //URL::forceScheme('https');
+        User::observe(UserObserver::class);
     }
 }

+ 112 - 0
app/Services/TenantUserMasterSyncService.php

@@ -0,0 +1,112 @@
+<?php
+
+namespace App\Services;
+
+use App\Models\User;
+use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Log;
+
+class TenantUserMasterSyncService
+{
+    public function sync(User $tenantUser): ?int
+    {
+        $masterConfig = [
+            'driver' => 'mysql',
+            'host' => env('DB_HOST', '127.0.0.1'),
+            'port' => env('DB_PORT', '3306'),
+            'database' => env('DB_DATABASE'),
+            'username' => env('DB_USERNAME'),
+            'password' => env('DB_PASSWORD'),
+            'charset' => 'utf8mb4',
+            'collation' => 'utf8mb4_unicode_ci',
+            'prefix' => '',
+            'strict' => true,
+            'engine' => null,
+        ];
+
+        config(['database.connections.master_sync' => $masterConfig]);
+
+        $authUser = Auth::user();
+
+        $masterData = [
+            'name' => $tenantUser->name,
+            'email' => $tenantUser->email,
+            'password' => $tenantUser->password,
+            'tenant_database' => $authUser?->tenant_database,
+            'tenant_username' => $authUser?->tenant_username,
+            'tenant_password' => $authUser?->tenant_password,
+            'tenant_host' => '127.0.0.1',
+            'updated_at' => now(),
+        ];
+
+        $masterQuery = DB::connection('master_sync')->table('users');
+        $masterUser = null;
+
+        if (!empty($tenantUser->master_user_id)) {
+            $masterUser = (clone $masterQuery)->where('id', $tenantUser->master_user_id)->first();
+        }
+
+        if (!$masterUser && !empty($tenantUser->email)) {
+            $masterUser = (clone $masterQuery)->where('email', $tenantUser->email)->first();
+        }
+
+        if ($masterUser) {
+            if (!empty($tenantUser->password)) {
+                $masterData['password'] = $tenantUser->password;
+            }
+
+            (clone $masterQuery)->where('id', $masterUser->id)->update($masterData);
+
+            if ((int) $tenantUser->master_user_id !== (int) $masterUser->id) {
+                $tenantUser->forceFill([
+                    'master_user_id' => $masterUser->id,
+                ])->saveQuietly();
+            }
+
+            return (int) $masterUser->id;
+        }
+
+        $masterData['password'] = $tenantUser->password;
+        $masterData['created_at'] = now();
+
+        $masterId = (clone $masterQuery)->insertGetId($masterData);
+
+        $tenantUser->forceFill([
+            'master_user_id' => $masterId,
+        ])->saveQuietly();
+
+        return (int) $masterId;
+    }
+
+    public function delete(User $tenantUser): bool
+    {
+        $masterConfig = [
+            'driver' => 'mysql',
+            'host' => env('DB_HOST', '127.0.0.1'),
+            'port' => env('DB_PORT', '3306'),
+            'database' => env('DB_DATABASE'),
+            'username' => env('DB_USERNAME'),
+            'password' => env('DB_PASSWORD'),
+            'charset' => 'utf8mb4',
+            'collation' => 'utf8mb4_unicode_ci',
+            'prefix' => '',
+            'strict' => true,
+            'engine' => null,
+        ];
+
+        config(['database.connections.master_sync' => $masterConfig]);
+
+        $query = DB::connection('master_sync')->table('users');
+
+        if (!empty($tenantUser->master_user_id)) {
+            return $query->where('id', $tenantUser->master_user_id)->delete() > 0;
+        }
+
+        if (!empty($tenantUser->email)) {
+            return $query->where('email', $tenantUser->email)->delete() > 0;
+        }
+
+        return false;
+    }
+}

+ 1 - 1
database/migrations/2026_03_13_114850_add_discipline_to_courses.php

@@ -26,7 +26,7 @@ return new class extends TenantMigration
     public function down()
     {
         Schema::table('courses', function (Blueprint $table) {
-            $table->unsignedBigInteger('discipline_id')->nullable();
+            $table->dropColumn('discipline_id');
         });
     }
 };

+ 32 - 0
database/migrations/2026_03_15_154227_add_master_user_id_to_users.php

@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+use App\Database\Migrations\TenantMigration;
+
+return new class extends TenantMigration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('users', function (Blueprint $table) {
+            $table->unsignedBigInteger('master_user_id')->nullable();
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('users', function (Blueprint $table) {
+            $table->dropColumn('master_user_id');
+        });
+    }
+};

+ 18 - 2
resources/views/layouts/app.blade.php

@@ -245,11 +245,27 @@
             @endphp
             </h3>
 
+            @php
+                $user = Auth::user();
+                $user_name = Auth::user()->name;
+                $user_level = Auth::user()->level;
+
+                $user_tenant = \App\Models\User::where('master_user_id', $user->id)->first();
+                if ($user_tenant) {
+                    $user_name = $user_tenant->name;
+                    $user_level = $user_tenant->level;
+                }
+                $levels = [
+                    0 => 'Admin',
+                    1 => 'Worker',
+                    2 => 'Istruttore',
+                ];
+            @endphp
             <div class="header--userprofile d-flex align-items-center" style="cursor: pointer;">
                 <div class="header--userprofile-icon">
-                    <h3 style="font-size:1.50rem;color:var(--color-blu)">{{substr(Auth::user()->name, 0, 1)}}</h3>
+                    <h3 style="font-size:1.50rem;color:var(--color-blu)">{{substr($user_name, 0, 1)}}</h3>
                 </div>
-                <a id="link-popover" data-bs-toggle="popover" data-bs-placement="bottom" data-bs-content="Bottom popover">{{Auth::user()->name}} <small>{{Auth::user()->level == 0 ? 'Admin' : 'Worker'}}</small></a>
+                <a id="link-popover" data-bs-toggle="popover" data-bs-placement="bottom" data-bs-content="Bottom popover">{{$user_name}} <small>{{$levels[$user_level] ?? ''}}</small></a>
             </div>
 
         </div>

+ 13 - 5
resources/views/livewire/user.blade.php

@@ -57,10 +57,12 @@
                             <td>
                                 @php
                                     $currentUser = Auth::user();
-                                    $isCurrentUser = $record->id == $currentUser->id;
+                                    $isCurrentUser = $record->master_user_id == $currentUser->id;
                                     $isAdmin = $currentUser->level == 0;
-                                    $canEdit = $record->email != 'admin@admin.com' && ($isAdmin || $isCurrentUser);
-                                    $canDelete = $record->email != 'admin@admin.com' && $isAdmin && !$isCurrentUser;
+                                    // $canEdit = $record->email != 'admin@admin.com' && ($isAdmin || $isCurrentUser);
+                                    $canEdit = ($isAdmin || $isCurrentUser);
+                                    // $canDelete = $record->email != 'admin@admin.com' && $isAdmin && !$isCurrentUser;
+                                    $canDelete = $isAdmin && !$isCurrentUser;
                                 @endphp
 
                                 @if($canEdit)
@@ -80,10 +82,10 @@
         </section>
 
     @else
+    <a class="btn--ui lightGrey" href="/users"><i class="fa-solid fa-arrow-left"></i></a><br><br>
 
         <div class="container">
 
-            <a class="btn--ui lightGrey" href="/users"><i class="fa-solid fa-arrow-left"></i></a><br><br>
 
             @if (session()->has('error'))
                 <div class="alert alert-danger" role="alert">
@@ -118,7 +120,13 @@
 
                             @php
                                 $currentUser = Auth::user();
-                                $isEditingOwnProfile = $update && isset($dataId) && $currentUser->id == $dataId;
+                                $isEditingOwnProfile = false;
+                                if (isset($dataId)) {
+                                    $currentTenantUser = \App\Models\User::where('master_user_id', $currentUser->id)->first();
+                                    if ($currentTenantUser) {
+                                        $isEditingOwnProfile = $update && $currentTenantUser->id == $dataId;
+                                    }
+                                }
                                 $canEditEmailAndPassword = $add || $isEditingOwnProfile;
                             @endphp