json($profiles->profile($request->attributes->get('directory_user'))) ->header('Cache-Control', 'private, no-store'); } /** * PUT { fields: { mobile: "06…" | null, … }, hidden: ["bureau"], reply_variant?: short|full|none|null } * null = revenir à l'annuaire ; « hidden » = ne pas afficher le champ (les chaînes vides * étant converties en null par Laravel, le masquage passe par cette liste explicite). */ public function update(Request $request, ProfileService $profiles): JsonResponse { $user = $request->attributes->get('directory_user'); $fields = $request->input('fields', []); $hidden = $request->input('hidden', []); abort_unless(is_array($fields) && is_array($hidden), 422, 'fields doit être un objet et hidden une liste.'); foreach ($hidden as $key) { if (is_string($key)) { $fields[$key] = ''; } } $profiles->update( $user, $fields, $request->input('reply_variant'), $request->exists('reply_variant'), (string) ($user->mail ?? $user->user_principal_name), ); return response()->json($profiles->profile($user->fresh())); } }