gestion addin
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Signature\ProfileService;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
/** Profil de l'agent pour le volet de l'add-in (jeton Entra NAA). */
|
||||
class ProfileController extends Controller
|
||||
{
|
||||
public function show(Request $request, ProfileService $profiles): JsonResponse
|
||||
{
|
||||
return response()->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()));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user