Private Relay fournit des adresses e-mail générées à utiliser à la place des adresses e-mail personnelles.
Les destinataires recevront toujours des e-mails, mais Private Relay empêche que leur adresse e-mail personnelle ne soit collectée, puis achetée, vendue, échangée ou combinée avec d'autres données pour les identifier, les suivre et/ou les cibler personnellement.
Veuillez vous référer à nos normes de codage pour les styles de code, les conventions de dénomination et autres méthodologies.
sudo apt install postgresql libpq-dev python3-dev
brew install postgresql libpq
sudo dnf install libpq-devel python3-devel
Clonez et accédez au répertoire :
git clone --recurse-submodules https://github.com/mozilla/fx-private-relay.git
cd fx-private-relay
Créez et activez un environnement virtuel :
Systèmes basés sur Unix :
virtualenv env
source env/bin/activate
Fenêtres :
python -m venv env
source env/Scripts/activate
Si vous n'utilisez pas Git Bash sous Windows, au lieu de saisir source env/Scripts/activate
, tapez .envScriptsactivate
.
Remarque : Si vous utilisez Windows et recevez un message d'erreur indiquant que l'exécution des scripts est désactivée sur votre ordinateur, accédez au PowerShell Windows et tapez Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted
, puis réessayez.
Configuration requise pour installer Python et Node :
pip install -r requirements.txt
cd frontend
npm install
cd ../
Remarque : si vous utilisez Windows, vous pouvez rencontrer un problème avec l'utilisation des variables d'environnement dans les scripts npm. Vous pouvez forcer npm à utiliser git-bash : npm config set script-shell "C:\Program Files\Git\bin\bash.exe"
. C'est l'emplacement par défaut, votre installation peut être différente.
Copiez le fichier .env
pour la configuration decouple
:
cp .env-dist .env
Ajoutez une valeur SECRET_KEY
à .env
:
SECRET_KEY =secret-key-should-be-different-for-every-install
Migrer la base de données :
python manage.py migrate
Créer un superutilisateur :
python manage.py createsuperuser
Exécutez le back-end :
python manage.py runserver
et dans un autre terminal, construisez le frontend :
cd frontend
npm run watch
Les documents suivants vous aideront à démarrer le développement et incluront la création de nouvelles chaînes à traduire. Voir Traduction et localisation pour des informations générales sur la localisation de Relay.
Nous utilisons un sous-module git pour les fichiers de messages traduits. L'étape d'installation --recurse-submodules
devrait déjà amener les fichiers de messages dans votre répertoire de travail, mais vous souhaiterez peut-être également mettre à jour les traductions après l'installation. La façon la plus simple de procéder est de :
git submodule update --remote
Pour mettre à jour automatiquement le sous-module lors de l'exécution git pull
ou d'autres commandes :
git config --global submodule.recurse true
Le répertoire privaterelay/locales
est un dépôt git comme les autres, donc pour apporter des modifications aux messages :
Apportez toutes les modifications dont vous avez besoin dans privaterelay/locales/en
pendant que vous travaillez.
cd privaterelay/locales/en
git branch message-updates-yyyymmdd
git push -u origin message-updates-yyyymmdd
Vous pouvez ensuite ouvrir une pull request depuis la branche message-updates-yyyymmdd
vers la branche main
du dépôt l10n.
Si vous n'êtes pas encore prêt à soumettre certaines chaînes pour traduction, vous pouvez provisoirement les ajouter à frontend/pendingTranslations.ftl
. Les chaînes de ce fichier apparaîtront jusqu'à ce que les chaînes avec le même ID soient ajoutées au référentiel l10n.
De même, il existe un pending_locales/pending.ftl
où les chaînes temporaires des paramètres régionaux du backend peuvent être stockées. Une fois que les chaînes de la demande d'extraction dans le dépôt l10n ont été fusionnées dans le dépôt Relay, ces chaînes respectives doivent être supprimées de pending_locales/pending.ftl
pour éviter l'échec des tests CircleCI.
Pour valider les mises à jour des traductions de l'application (par exemple, avant une version), nous devons valider la mise à jour de ce sous-module. Ainsi, si les traductions mises à jour sont prêtes à être validées dans l'application, vous pouvez git add
le sous-module comme n'importe quel autre fichier :
git add privaterelay/locales
Vous pouvez ensuite valider et pousser pour définir le référentiel d'applications sur la version mise à jour du sous-module de traductions :
git push
Un processus automatisé met à jour le sous-module quotidiennement, en intégrant toutes les nouvelles modifications et traductions de l'équipe de localisation.
Pour activer l'authentification des comptes Mozilla sur votre serveur local, vous pouvez utiliser l'application OAuth « Firefox Private Relay local dev » sur comptes.stage.mozaws.net.
Pour ce faire :
Définissez ADMIN_ENABLED=True
dans votre fichier .env
Arrêtez le serveur s'il est en cours d'exécution et ajoutez les tables d'administration avec :
python manage.py migrate
Exécutez le serveur, maintenant avec les points de terminaison /admin
:
python manage.py runserver
Accédez à la page d'administration de Django pour modifier le site par défaut.
Remplacez example.com
par 127.0.0.1:8000
et cliquez sur Enregistrer.
Accédez à la page d'administration de l'application sociale Django-allauth, connectez-vous avec le compte superutilisateur que vous avez créé ci-dessus et ajoutez une application sociale pour les comptes Firefox :
Champ | Valeur |
---|---|
Fournisseur | Comptes Mozilla |
Nom | accounts.stage.mozaws.net |
Identifiant client | 9ebfe2c2f9ea3c58 |
Clé secrète | Demandez-le à la chaîne Slack #fx-private-relay-eng |
Sites | 127.0.0.1:8000 -> Sites choisis |
Vous pouvez désormais vous connecter à http://127.0.0.1:8000/ avec un FxA.
Remarque : le module complémentaire se trouve dans un référentiel distinct. Consultez-le pour plus d’informations sur la mise en route.
Le module complémentaire ajoute l'interface utilisateur de Firefox pour générer et remplir automatiquement les adresses e-mail sur le Web. L'exécution du module complémentaire localement lui permet de communiquer avec votre serveur local ( 127.0.0.1:8000
) au lieu du serveur de production ( relay.firefox.com
).
npm run watch
surveille le répertoire frontend/src
et construit le frontend lorsqu'il détecte des changements. Cependant, la création d’une version de production prend juste assez de temps pour interrompre votre flux de développement. Il est donc également possible d'exécuter le front-end sur un serveur séparé qui recompile uniquement les modules modifiés, et n'applique pas d'optimisations de production. Pour ce faire, au lieu de npm run watch
, exécutez npm run dev
.
L'interface est désormais disponible sur http://localhost:3000. Gardez à l’esprit que cela rend votre environnement de développement local moins similaire à celui de la production ; en particulier, l'authentification est normalement liée au serveur backend et doit donc être simulée lors de l'exécution du frontend sur un serveur distinct. Si vous apportez des modifications liées à l'authentification, assurez-vous de les tester également à l'aide de npm run watch
.
Remarque : les fonctionnalités Premium sont automatiquement activées pour tout utilisateur dont l'adresse e-mail se termine par mozilla.com
, getpocket.com
ou mozillafoundation.org
(voir PREMIUM_DOMAINS
dans emails/models.py
). Pour imiter l'expérience client, il est recommandé de suivre la procédure ci-dessous.
Pour activer les fonctionnalités premium de Relay, nous intégrons la plateforme d'abonnement FXA. À un niveau élevé, pour mettre en place un abonnement premium Relay, nous :
Activez l'authentification des comptes Mozilla comme décrit ci-dessus.
Créez un produit et un prix dans notre tableau de bord Stripe. (Demandez sur le canal Slack #subscription-platform pour accéder à notre tableau de bord Stripe.)
Reliez les utilisateurs gratuits de Relay au flux d’achat SubPlat approprié.
Vérifiez le profil FXA json des utilisateurs pour un champ subscriptions
pour voir s'ils peuvent accéder à une fonctionnalité premium réservée aux abonnements.
En détails:
Activez l'authentification des comptes Mozilla comme décrit ci-dessus.
Accédez à notre tableau de bord Stripe. (Demandez sur le canal Slack #subscription-platform pour accéder à notre tableau de bord Stripe.)
Créez un nouveau produit dans Stripe.
Ajoutez tous product:
métadonnées.
product:
:. Ainsi, par exemple, webIconURL
doit être saisi sous la forme product:webIconURL
. Ajouter capabilities:
métadonnées.
capabilities:
, et la valeur est une chaîne de forme libre pour décrire la « capacité » que l'achat de l'abonnement offre à l'utilisateur. Par exemple, capabilities:9ebfe2c2f9ea3c58
avec la valeur premium-relay
.Définissez quelques variables d'environnement avec les valeurs des étapes ci-dessus :
Var | Valeur |
---|---|
FXA_SUBSCRIPTIONS_URL | https://accounts.stage.mozaws.net/subscriptions |
PERIODICAL_PREMIUM_PROD_ID | prod_KEq0LXqs7vysQT (de Stripe) |
PREMIUM_PLAN_ID_US_MONTHLY | price_1LiMjeKb9q6OnNsLzwixHuRz (de Stripe) |
PREMIUM_PLAN_ID_US_YEARLY | price_1LiMlBKb9q6OnNsL7tvrtI7y (de Stripe) |
PHONE_PROD_ID | prod_LviM2I0paxH1DZ (de Stripe) |
PHONE_PLAN_ID_US_MONTHLY | price_1LDqw3Kb9q6OnNsL6XIDst28 (de Stripe) |
PHONE_PLAN_ID_US_YEARLY | price_1Lhd35Kb9q6OnNsL9bAxjUGq (de Stripe) |
BUNDLE_PROD_ID | prod_MQ9Zf1cyI81XS2 (de Stripe) |
BUNDLE_PLAN_ID_US | price_1Lwp7uKb9q6OnNsLQYzpzUs5 (de Stripe) |
SUBSCRIPTIONS_WITH_UNLIMITED | "premium-relay" (correspond à la valeur capabilities que vous avez utilisées dans Stripe) |
SUBSCRIPTIONS_WITH_PHONE | "relay-phones" (correspond à la valeur capabilities que vous avez utilisées dans Stripe) |
Dans frontend/
, définissez ANALYZE=true
lors de l'exécution npm run build
pour générer un rapport détaillant les modules qui occupent la majeure partie de la taille du bundle. Un rapport sera généré à la fois pour la partie client et serveur du frontend, mais comme nous utilisons uniquement le client, cela ne nous intéresse vraiment que cela. Les rapports s'ouvriront automatiquement dans votre navigateur et pourront également être trouvés dans /frontend/.next/analyze/
.
ANALYZE=true npm run build
Il existe une documentation complète de cas de test pour l’achat de Relay premium.
Vous pouvez utiliser les détails de la carte de crédit test de Stripe pour le paiement.
Les fonctionnalités du téléphone sont en outre protégées par un drapeau gaufré phones
. Au stade, vous aurez besoin d'un SRE pour ajouter l'indicateur à votre utilisateur test. Sur le serveur de développement, un développeur peut ajouter le drapeau.
En plus des exigences de développement, les environnements de production doivent utiliser :
Les environnements de production doivent également définir des variables d'environnement supplémentaires :
DATABASE_URL=postgresql://:@:/
DJANGO_SECURE_HSTS_SECONDS=15768000
DJANGO_SECURE_SSL_REDIRECT=True