diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 81dbd14..027e7f9 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -76,6 +76,21 @@ class UserController extends Controller if (!empty($validated['roles'])) { $user->syncRoles($validated['roles']); + + // Update the 'created' log to include roles + $activity = \Spatie\Activitylog\Models\Activity::where('subject_type', get_class($user)) + ->where('subject_id', $user->id) + ->where('event', 'created') + ->latest() + ->first(); + + if ($activity) { + $roleNames = $user->roles()->pluck('display_name')->join(', '); + $properties = $activity->properties; + $properties['attributes']['role_id'] = $roleNames; + $activity->properties = $properties; + $activity->save(); + } } return redirect()->route('users.index')->with('success', '使用者建立成功'); @@ -102,6 +117,7 @@ class UserController extends Controller public function update(Request $request, string $id) { $user = User::findOrFail($id); + $oldRoles = $user->roles()->pluck('display_name')->join(', '); $validated = $request->validate([ 'name' => ['required', 'string', 'max:255'], @@ -128,6 +144,20 @@ class UserController extends Controller if (isset($validated['roles'])) { $user->syncRoles($validated['roles']); + + $newRoles = $user->roles()->pluck('display_name')->join(', '); + + if ($oldRoles !== $newRoles) { + activity() + ->performedOn($user) + ->causedBy(auth()->user()) + ->event('updated') + ->withProperties([ + 'attributes' => ['role_id' => $newRoles], + 'old' => ['role_id' => $oldRoles], + ]) + ->log('updated'); + } } return redirect()->route('users.index')->with('success', '使用者更新成功');