Files
Ressources-relationnel/app/Http/Controllers/DownloadController.php
T
sam 507d77246c
CI - Intégration continue / quality-and-tests (push) Successful in 3m16s
CD - Déploiement continu / deploy (push) Successful in 3m7s
feat: page publique de téléchargement des applications mobiles
Page /telecharger avec deux cartes (Android / iOS). Pour chaque plateforme,
utilise en priorité un lien de store (MOBILE_*_URL) sinon le binaire déposé
dans public/downloads/ (.apk / .ipa), et affiche "Bientôt disponible" à défaut.

- config/mobile.php + .env.example (URLs/versions)
- DownloadController + vue telecharger + lien dans le header (public)
- public/downloads/ (README) ; binaires ignorés par git
- tests: accès public, lien store prioritaire, indisponibilité

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 22:55:15 +02:00

44 lines
1.3 KiB
PHP

<?php
namespace App\Http\Controllers;
class DownloadController extends Controller
{
// Page publique de téléchargement des applications mobiles
public function index()
{
return view('telecharger', [
'android' => $this->resoudre('android'),
'ios' => $this->resoudre('ios'),
]);
}
/**
* Détermine, pour une plateforme, le lien de téléchargement et sa disponibilité.
*
* @return array{version: string, url: string|null, disponible: bool}
*/
private function resoudre(string $plateforme): array
{
$config = config("mobile.{$plateforme}");
if (! is_array($config)) {
$config = [];
}
$version = is_string($config['version'] ?? null) ? $config['version'] : '1.0.0';
$url = (is_string($config['url'] ?? null) && $config['url'] !== '') ? $config['url'] : null;
$file = is_string($config['file'] ?? null) ? $config['file'] : null;
// À défaut d'URL explicite, on propose le fichier précompilé s'il existe.
if ($url === null && $file !== null && file_exists(public_path($file))) {
$url = asset($file);
}
return [
'version' => $version,
'url' => $url,
'disponible' => $url !== null,
];
}
}