Auto-login via token coach_web_token au lancement

- capacitor.config.ts charge coachWebToken depuis coach-ios.local.json (gitignored)
- server.url devient https://coach.hypnotruck.ch/login?token=... → backend pose le cookie 1 an, redirige vers /
- Au prochain lancement, le cookie tient → /login?token redirige direct vers /
- coach-ios.local.json.example fourni pour setup Mac mini
This commit is contained in:
Sylvain Bettinelli
2026-05-05 19:15:59 +00:00
parent 1d82ec8b10
commit 3e71dbe3a3
4 changed files with 33 additions and 2 deletions

1
.gitignore vendored
View File

@@ -20,6 +20,7 @@ ios/App/public/
# Secrets # Secrets
.env .env
.env.local .env.local
coach-ios.local.json
*.p8 *.p8
*.p12 *.p12
*.mobileprovision *.mobileprovision

View File

@@ -31,11 +31,23 @@ Le code web n'est pas embarqué — l'app pointe vers la prod via `server.url` d
### 1. Cloner le repo sur le Mac mini ### 1. Cloner le repo sur le Mac mini
```bash ```bash
git clone git@gitea:sylvain/coach-ios.git git clone https://git.nexus.hypnotruck.ch/sylvain/coach-ios.git
cd coach-ios cd coach-ios
npm install npm install
``` ```
### 1bis. Configurer le token d'auth (auto-login)
Le repo ne contient **pas** le token `COACH_WEB_TOKEN` (gitignored). Crée le fichier sur le Mac :
```bash
cp coach-ios.local.json.example coach-ios.local.json
# Édite coach-ios.local.json et remplace par la vraie valeur
# (visible dans ~/.config/infomaniak.env sur le VPS, ligne export COACH_WEB_TOKEN=)
```
L'app utilisera ce token pour se connecter automatiquement à `coach.hypnotruck.ch/login?token=...` au lancement.
### 2. Générer les icônes & splash ### 2. Générer les icônes & splash
```bash ```bash

View File

@@ -1,4 +1,19 @@
import type { CapacitorConfig } from '@capacitor/cli'; import type { CapacitorConfig } from '@capacitor/cli';
import { readFileSync, existsSync } from 'fs';
import { resolve } from 'path';
// Token d'auth coach.hypnotruck.ch chargé depuis coach-ios.local.json (gitignored).
// Sur le Mac mini : créer ce fichier avec { "coachWebToken": "..." } avant de builder.
const localConfigPath = resolve(__dirname, 'coach-ios.local.json');
const localConfig = existsSync(localConfigPath)
? JSON.parse(readFileSync(localConfigPath, 'utf-8'))
: {};
const coachWebToken: string = localConfig.coachWebToken || '';
const baseUrl = 'https://coach.hypnotruck.ch';
const startUrl = coachWebToken
? `${baseUrl}/login?token=${encodeURIComponent(coachWebToken)}`
: baseUrl;
const config: CapacitorConfig = { const config: CapacitorConfig = {
appId: 'ch.hypnotruck.coach', appId: 'ch.hypnotruck.coach',
@@ -6,7 +21,7 @@ const config: CapacitorConfig = {
webDir: 'www', webDir: 'www',
server: { server: {
url: 'https://coach.hypnotruck.ch', url: startUrl,
cleartext: false, cleartext: false,
androidScheme: 'https', androidScheme: 'https',
}, },

View File

@@ -0,0 +1,3 @@
{
"coachWebToken": "REMPLACE_PAR_LA_VALEUR_DE_COACH_WEB_TOKEN"
}