Merge branch 'MNTOR-723/use-eslint-standard' into MNTOR-30/replace-gulp
This commit is contained in:
Коммит
79e8980dd5
|
@ -1,4 +1,6 @@
|
||||||
# conform to ESLint "Standard" style guide: autofix quotes, semicolons, etc
|
# conform to ESLint "Standard" style guide: autofix quotes, semicolons, etc
|
||||||
344e394bb0e47f86c3b6e1ab923a48aa427ba442
|
344e394bb0e47f86c3b6e1ab923a48aa427ba442
|
||||||
|
c5f42d31b30efec6eef60ce9328a5d3c1b4e2dfe
|
||||||
|
ed4ecc5a57bf248075af82b8238baf121d513b79
|
||||||
# update esbuild, js and css files
|
# update esbuild, js and css files
|
||||||
7a16c1810755a6dafeed3ca83dd5c7071829966e
|
7a16c1810755a6dafeed3ca83dd5c7071829966e
|
||||||
|
|
|
@ -8,7 +8,6 @@ const {
|
||||||
generatePageToken,
|
generatePageToken,
|
||||||
getExperimentFlags,
|
getExperimentFlags,
|
||||||
getUTMContents,
|
getUTMContents,
|
||||||
hasUserSignedUpForWaitlist,
|
|
||||||
setAdUnitCookie
|
setAdUnitCookie
|
||||||
} = require('./utils')
|
} = require('./utils')
|
||||||
|
|
||||||
|
@ -89,15 +88,6 @@ async function home (req, res) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function removeMyData (req, res) {
|
|
||||||
const user = req.user
|
|
||||||
const userHasSignedUpForRemoveData = hasUserSignedUpForWaitlist(user, 'remove_data')
|
|
||||||
return res.render('remove-data', {
|
|
||||||
title: req.fluentFormat('home-title'),
|
|
||||||
userHasSignedUpForRemoveData
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function getAllBreaches (req, res) {
|
function getAllBreaches (req, res) {
|
||||||
return res.render('top-level-page', {
|
return res.render('top-level-page', {
|
||||||
title: 'Firefox Monitor',
|
title: 'Firefox Monitor',
|
||||||
|
@ -167,6 +157,5 @@ module.exports = {
|
||||||
getBentoStrings,
|
getBentoStrings,
|
||||||
getSecurityTips,
|
getSecurityTips,
|
||||||
home,
|
home,
|
||||||
notFound,
|
notFound
|
||||||
removeMyData
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,6 @@ const EXPERIMENTS_ENABLED = (AppConstants.EXPERIMENT_ACTIVE === '1')
|
||||||
const {
|
const {
|
||||||
getExperimentFlags,
|
getExperimentFlags,
|
||||||
getUTMContents,
|
getUTMContents,
|
||||||
hasUserSignedUpForWaitlist,
|
|
||||||
setAdUnitCookie
|
setAdUnitCookie
|
||||||
} = require('./utils')
|
} = require('./utils')
|
||||||
|
|
||||||
|
@ -227,8 +226,6 @@ async function getDashboard (req, res) {
|
||||||
const { verifiedEmails, unverifiedEmails } = await getAllEmailsAndBreaches(user, allBreaches)
|
const { verifiedEmails, unverifiedEmails } = await getAllEmailsAndBreaches(user, allBreaches)
|
||||||
const utmOverrides = getUTMContents(req)
|
const utmOverrides = getUTMContents(req)
|
||||||
const supportedLocalesIncludesEnglish = req.supportedLocales.includes('en')
|
const supportedLocalesIncludesEnglish = req.supportedLocales.includes('en')
|
||||||
const userHasSignedUpForRemoveData = hasUserSignedUpForWaitlist(user, 'remove_data')
|
|
||||||
|
|
||||||
const experimentFlags = getExperimentFlags(req, EXPERIMENTS_ENABLED)
|
const experimentFlags = getExperimentFlags(req, EXPERIMENTS_ENABLED)
|
||||||
|
|
||||||
let lastAddedEmail = null
|
let lastAddedEmail = null
|
||||||
|
@ -247,7 +244,6 @@ async function getDashboard (req, res) {
|
||||||
lastAddedEmail,
|
lastAddedEmail,
|
||||||
verifiedEmails,
|
verifiedEmails,
|
||||||
unverifiedEmails,
|
unverifiedEmails,
|
||||||
userHasSignedUpForRemoveData,
|
|
||||||
supportedLocalesIncludesEnglish,
|
supportedLocalesIncludesEnglish,
|
||||||
whichPartial: 'dashboards/breaches-dash',
|
whichPartial: 'dashboards/breaches-dash',
|
||||||
experimentFlags,
|
experimentFlags,
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
exports.up = function (knex) {
|
||||||
|
return knex.schema.table('subscribers', (table) => {
|
||||||
|
table.integer('kid')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.down = function (knex) {
|
||||||
|
return knex.schema.table('subscribers', (table) => {
|
||||||
|
table.dropColumn('kid')
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
exports.up = function (knex) {
|
||||||
|
return knex.schema.table('subscribers', (table) => {
|
||||||
|
table.boolean('removal_would_pay')
|
||||||
|
table.timestamp('removal_enrolled_time')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.down = function (knex) {
|
||||||
|
return knex.schema.table('subscribers', (table) => {
|
||||||
|
table.dropColumn('removal_would_pay')
|
||||||
|
table.dropColumn('removal_enrolled_time')
|
||||||
|
})
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
exports.up = (knex) => {
|
||||||
|
return knex.schema.createTable('removal_pilot', (table) => {
|
||||||
|
table.increments('id').primary()
|
||||||
|
table.string('name').unique()
|
||||||
|
table.integer('enrolled_users').defaultTo(0)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.down = (knex) => {
|
||||||
|
return knex.schema.dropTableIfExists('removal_pilot')
|
||||||
|
}
|
|
@ -0,0 +1,16 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
exports.up = function (knex) {
|
||||||
|
return knex('removal_pilot')
|
||||||
|
.del()
|
||||||
|
.then(function () {
|
||||||
|
// Inserts seed entries
|
||||||
|
return knex('removal_pilot').insert([
|
||||||
|
{ id: 1, name: 'round_01', enrolled_users: 0 }
|
||||||
|
])
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.down = function (knex) {
|
||||||
|
return knex('removal_pilot').del()
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
exports.up = function (knex) {
|
||||||
|
return knex.schema.table('subscribers', (table) => {
|
||||||
|
table.boolean('removal_optout').defaultTo(false)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.down = function (knex) {
|
||||||
|
return knex.schema.table('subscribers', (table) => {
|
||||||
|
table.dropColumn('removal_optout')
|
||||||
|
})
|
||||||
|
}
|
|
@ -48,7 +48,7 @@ rec-cc =
|
||||||
Cadwch lygad ar daliadau annisgwyl ar eich cerdyn credyd. Efallai y bydd angen
|
Cadwch lygad ar daliadau annisgwyl ar eich cerdyn credyd. Efallai y bydd angen
|
||||||
gofyn am gerdyn newydd gyda rhif newydd gan gyhoeddwr eich cerdyn credyd.
|
gofyn am gerdyn newydd gyda rhif newydd gan gyhoeddwr eich cerdyn credyd.
|
||||||
# Recommendation subhead
|
# Recommendation subhead
|
||||||
rec-email-subhead = Defnyddiwch arallenwau e-bost
|
rec-email-mask-subhead = Defnyddiwch enwarall e-bost
|
||||||
rec-email-cta = Rhowch gynnig ar { -brand-relay }
|
rec-email-cta = Rhowch gynnig ar { -brand-relay }
|
||||||
rec-email =
|
rec-email =
|
||||||
Mae rhoi eich cyfeiriad e-bost go iawn yn ei gwneud hi'n haws i hacwyr neu dracwyr ddod o hyd i'ch cyfrineiriau neu eich targedu ar-lein. Mae gwasanaeth fel { -brand-relay }
|
Mae rhoi eich cyfeiriad e-bost go iawn yn ei gwneud hi'n haws i hacwyr neu dracwyr ddod o hyd i'ch cyfrineiriau neu eich targedu ar-lein. Mae gwasanaeth fel { -brand-relay }
|
||||||
|
|
|
@ -50,7 +50,7 @@ rec-cc =
|
||||||
Look out for strange charges on your credit card. You may want
|
Look out for strange charges on your credit card. You may want
|
||||||
to request a new card with a new number from your credit card issuer.
|
to request a new card with a new number from your credit card issuer.
|
||||||
# Recommendation subhead
|
# Recommendation subhead
|
||||||
rec-email-subhead = Use email aliases
|
rec-email-mask-subhead = Use an email mask
|
||||||
rec-email-cta = Try { -brand-relay }
|
rec-email-cta = Try { -brand-relay }
|
||||||
rec-email = Giving out your real email address makes it easier for hackers or trackers to find your passwords or target you online. A service like { -brand-relay } hides your real email address while forwarding emails to your real inbox.
|
rec-email = Giving out your real email address makes it easier for hackers or trackers to find your passwords or target you online. A service like { -brand-relay } hides your real email address while forwarding emails to your real inbox.
|
||||||
# Recommendation subhead
|
# Recommendation subhead
|
||||||
|
|
|
@ -618,11 +618,38 @@ vpn-banner-cta-close = Sulje
|
||||||
|
|
||||||
## Relay and VPN educational/ad units
|
## Relay and VPN educational/ad units
|
||||||
|
|
||||||
|
ad-unit-relay-cta = Lisätietoja { -brand-relay }sta
|
||||||
|
ad-unit-vpn-cta = Lisätietoja { -brand-mozilla-vpn }:stä
|
||||||
# ad 1 heading
|
# ad 1 heading
|
||||||
ad-unit-1-how-do-you-keep = Miten pidät sähköpostiosoitteesi salassa?
|
ad-unit-1-how-do-you-keep = Miten pidät sähköpostiosoitteesi salassa?
|
||||||
# ad 2 heading
|
# ad 2 heading
|
||||||
ad-unit-2-do-you-worry = Oletko huolissasi julkisen wifi-verkon turvallisuudesta?
|
ad-unit-2-do-you-worry = Oletko huolissasi julkisen wifi-verkon turvallisuudesta?
|
||||||
# ad 3 heading
|
# ad 3 heading
|
||||||
ad-unit-3-stay-in-the-game = Pysy pelissä mukana!
|
ad-unit-3-stay-in-the-game = Pysy pelissä mukana!
|
||||||
|
ad-unit-3-lets-you-keep = { -brand-mozilla-vpn } mahdollistaa vakaan ja turvallisen yhteyden, kun pelaat verkkopelejä tai suoratoistat elokuvia.
|
||||||
|
# ad 3 list item 1
|
||||||
|
ad-unit-3-prevent-throttling = Estä rajoituksia
|
||||||
|
# ad 3 list item 2
|
||||||
|
ad-unit-3-be-anywhere = Ole missä päin maailmaa tahansa
|
||||||
|
# ad 3 list item 3
|
||||||
|
ad-unit-3-access-more = Enemmän käytössäsi
|
||||||
|
# ad 4 heading
|
||||||
|
ad-unit-4-shopping-with = Ostoksia sähköpostimaskeilla
|
||||||
|
ad-unit-4-want-to-buy = Haluatko ostaa jotain verkosta, mutta et tunne kauppaa entuudestaan tai luota siihen täysin?
|
||||||
|
ad-unit-4-shop-online = Käytä sähköpostimaskia, kun teet ostoksia verkossa. Saat vahvistuksen oikeaan sähköpostiosoitteeseesi ja voit lopettaa maskin käytön vaivatta milloin tahansa.
|
||||||
|
# ad 5 heading
|
||||||
|
ad-unit-5-on-the-go = { -brand-relay } mukana matkassa
|
||||||
|
ad-unit-5-instantly-make = Luo heti mukautettu sähköpostimaski missä tahansa oletkin!
|
||||||
|
# ad 5 subheading 1
|
||||||
|
ad-unit-5-connect-on-the-go = Yhdistä liikkeellä ollessasi
|
||||||
|
ad-unit-5-privately-sign-in = Käytä sähköpostimaskia, kun haluat kirjautua yksityisesti suosikkikahvilaasi tai muuhun julkiseen wifi-verkkoon
|
||||||
|
# ad 5 subheading 2
|
||||||
|
ad-unit-5-email-receipts = Vastaanota kuitit sähköpostitse
|
||||||
|
ad-unit-5-share-custom-email = Jaa mukautettu sähköpostimaski ostosten kuitteja varten jakamatta oikeaa sähköpostiosoitettasi
|
||||||
# ad 5 subheading 3
|
# ad 5 subheading 3
|
||||||
ad-unit-5-use-on-phone = Käytä puhelimessasi
|
ad-unit-5-use-on-phone = Käytä puhelimessasi
|
||||||
|
ad-unit-5-no-matter-where = Missä tahansa oletkin, luo mukautettu sähköpostimaski haluamaasi asiaa varten sekunneissa
|
||||||
|
# ad 6 heading
|
||||||
|
ad-unit-6-worry-free = Huolettomat ilmoittautumiset
|
||||||
|
ad-unit-6-want-to-start = Haluatko aloittaa uuden tilauksen, vastata kutsuun tai saada tarjouskoodin ilman, että postilaatikkosi tulvii roskapostia?
|
||||||
|
ad-unit-6-before-you-complete = Ennen kuin suoritat seuraavan rekisteröitymisen, käytä sähköpostimaskia oikean sähköpostiosoitteesi sijaan tietojesi suojaamiseksi ja postilaatikkosi hallitsemiseksi.
|
||||||
|
|
|
@ -560,6 +560,8 @@ ad-unit-vpn-cta = En savoir plus sur { -brand-mozilla-vpn }
|
||||||
ad-unit-1-how-do-you-keep = Comment garder votre adresse e-mail secrète ?
|
ad-unit-1-how-do-you-keep = Comment garder votre adresse e-mail secrète ?
|
||||||
# ad 2 heading
|
# ad 2 heading
|
||||||
ad-unit-2-do-you-worry = Vous souciez-vous de la sécurité des Wi-Fi publics ?
|
ad-unit-2-do-you-worry = Vous souciez-vous de la sécurité des Wi-Fi publics ?
|
||||||
|
# ad 3 heading
|
||||||
|
ad-unit-3-stay-in-the-game = Restez dans la partie !
|
||||||
ad-unit-3-lets-you-keep = { -brand-mozilla-vpn } vous permet de maintenir une connexion stable en toute sécurité pendant que vous jouez à des jeux ou regardez des films en streaming.
|
ad-unit-3-lets-you-keep = { -brand-mozilla-vpn } vous permet de maintenir une connexion stable en toute sécurité pendant que vous jouez à des jeux ou regardez des films en streaming.
|
||||||
# ad 3 list item 1
|
# ad 3 list item 1
|
||||||
ad-unit-3-prevent-throttling = Évitez la limitation de la bande passante
|
ad-unit-3-prevent-throttling = Évitez la limitation de la bande passante
|
||||||
|
|
|
@ -36,7 +36,7 @@ rec-bank-acc = Vérifiez l’absence de dépenses suspectes ou inhabituelles sur
|
||||||
rec-cc-subhead = Surveillez vos relevés de carte bancaire
|
rec-cc-subhead = Surveillez vos relevés de carte bancaire
|
||||||
rec-cc = Vérifiez l’absence de dépenses inhabituelles effectuées avec votre carte. Pensez à demander une nouvelle carte avec un nouveau numéro à l’émetteur de votre carte bancaire en cas de doute.
|
rec-cc = Vérifiez l’absence de dépenses inhabituelles effectuées avec votre carte. Pensez à demander une nouvelle carte avec un nouveau numéro à l’émetteur de votre carte bancaire en cas de doute.
|
||||||
# Recommendation subhead
|
# Recommendation subhead
|
||||||
rec-email-subhead = Utilisez des alias de messagerie
|
rec-email-mask-subhead = Utilisez un alias de messagerie
|
||||||
rec-email-cta = Essayer { -brand-relay }
|
rec-email-cta = Essayer { -brand-relay }
|
||||||
rec-email = Fournir votre adresse électronique réelle permet aux pirates informatiques ou aux traqueurs de trouver vos mots de passe ou de vous cibler en ligne plus facilement. Un service comme { -brand-relay } masque votre adresse électronique réelle tout en transmettant les messages à votre boîte de réception réelle.
|
rec-email = Fournir votre adresse électronique réelle permet aux pirates informatiques ou aux traqueurs de trouver vos mots de passe ou de vous cibler en ligne plus facilement. Un service comme { -brand-relay } masque votre adresse électronique réelle tout en transmettant les messages à votre boîte de réception réelle.
|
||||||
# Recommendation subhead
|
# Recommendation subhead
|
||||||
|
|
|
@ -50,7 +50,7 @@ rec-cc =
|
||||||
Let op frjemde kosten op jo creditcard. Jo wolle miskien
|
Let op frjemde kosten op jo creditcard. Jo wolle miskien
|
||||||
in nije kaart mei in nij nûmer oanfreegje by jo creditcardmaatskippij.
|
in nije kaart mei in nij nûmer oanfreegje by jo creditcardmaatskippij.
|
||||||
# Recommendation subhead
|
# Recommendation subhead
|
||||||
rec-email-subhead = E-mailaliassen brûke
|
rec-email-mask-subhead = In e-mailmasker brûke
|
||||||
rec-email-cta = { -brand-relay } probearje
|
rec-email-cta = { -brand-relay } probearje
|
||||||
rec-email =
|
rec-email =
|
||||||
Troch jo echte e-mailadres te jaan, meitsje jo it makliker foar hackers of trackers om
|
Troch jo echte e-mailadres te jaan, meitsje jo it makliker foar hackers of trackers om
|
||||||
|
|
|
@ -48,7 +48,7 @@ rec-cc =
|
||||||
Procure cobranças estranhas no seu cartão de crédito. Se precisar você pode
|
Procure cobranças estranhas no seu cartão de crédito. Se precisar você pode
|
||||||
solicitar um novo cartão com outro número ao emissor do seu cartão de crédito.
|
solicitar um novo cartão com outro número ao emissor do seu cartão de crédito.
|
||||||
# Recommendation subhead
|
# Recommendation subhead
|
||||||
rec-email-subhead = Use endereços de redirecionamento de email
|
rec-email-mask-subhead = Use uma máscara de email
|
||||||
rec-email-cta = Experimente o { -brand-relay }
|
rec-email-cta = Experimente o { -brand-relay }
|
||||||
rec-email =
|
rec-email =
|
||||||
Fornecer seu endereço de email real facilita aos hackers e rastreadores
|
Fornecer seu endereço de email real facilita aos hackers e rastreadores
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
@import "partials/latest-breach.css";
|
@import "partials/latest-breach.css";
|
||||||
@import "partials/monitor.css";
|
@import "partials/monitor.css";
|
||||||
@import "partials/product-promos.css";
|
@import "partials/product-promos.css";
|
||||||
@import "partials/remove-data.css";
|
|
||||||
@import "partials/research-recruitment.css";
|
@import "partials/research-recruitment.css";
|
||||||
@import "partials/scan-results.css";
|
@import "partials/scan-results.css";
|
||||||
@import "partials/security-tips.css";
|
@import "partials/security-tips.css";
|
||||||
|
|
|
@ -1,422 +0,0 @@
|
||||||
.txt-light-grey {
|
|
||||||
color: rgb(237, 237, 240);
|
|
||||||
}
|
|
||||||
|
|
||||||
.txt-white {
|
|
||||||
color: rgba(255, 255, 255, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-hero {
|
|
||||||
margin: auto auto 60px auto;
|
|
||||||
max-width: 700px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-headline {
|
|
||||||
font-size: 44px;
|
|
||||||
line-height: 46px;
|
|
||||||
margin: 0 auto 12px auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-headline::before {
|
|
||||||
content: "";
|
|
||||||
display: block;
|
|
||||||
height: 150px;
|
|
||||||
width: 100%;
|
|
||||||
background-image: url("../../img/svg/data-removal-large.svg");
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: center center;
|
|
||||||
background-size: contain;
|
|
||||||
margin: 60px auto 40px auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-subhead {
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: 18px;
|
|
||||||
line-height: 27px;
|
|
||||||
font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Open Sans', 'Helvetica Neue', sans-serif;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-info {
|
|
||||||
margin: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-info-subhead {
|
|
||||||
display: inline-block;
|
|
||||||
font-size: 24px;
|
|
||||||
line-height: 28px;
|
|
||||||
padding-right: 48px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-info-body {
|
|
||||||
line-height: 27px;
|
|
||||||
font-size: 18px;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-info-body.toggle-child {
|
|
||||||
padding-top: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-sign-up {
|
|
||||||
background-color: rgba(255, 255, 255, 1);
|
|
||||||
border-radius: 8px;
|
|
||||||
padding: 40px;
|
|
||||||
width: 100%;
|
|
||||||
max-width: 720px;
|
|
||||||
margin: 20px auto;
|
|
||||||
position: relative;
|
|
||||||
opacity: 1;
|
|
||||||
overflow: hidden;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-sign-up-headline {
|
|
||||||
color: #393473;
|
|
||||||
font-size: 24px;
|
|
||||||
margin-bottom: 32px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-avatar {
|
|
||||||
border-radius: 50%;
|
|
||||||
height: 80px;
|
|
||||||
width: 80px;
|
|
||||||
margin-bottom: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-sign-up-email {
|
|
||||||
color: #393473;
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: 18px;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-info.relay-bullets {
|
|
||||||
padding-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-list {
|
|
||||||
font-size: 18px;
|
|
||||||
line-height: 27px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-list li {
|
|
||||||
margin-bottom: 12px;
|
|
||||||
margin-left: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-list li::before {
|
|
||||||
content: "\2022";
|
|
||||||
display: flex;
|
|
||||||
margin: 0 12px auto 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-bullet-link {
|
|
||||||
color: rgba(255, 255, 255, 1);
|
|
||||||
border-bottom: 1px solid rgba(255, 255, 255, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-bullet-link:hover {
|
|
||||||
border-bottom: 1px solid rgba(255, 255, 255, 0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
.private-relay-dashboard-card {
|
|
||||||
background: var(--monitorGradient);
|
|
||||||
border-radius: 8px;
|
|
||||||
margin: 0 auto 60px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.private-relay-dashboard-card-body {
|
|
||||||
margin: 0;
|
|
||||||
color: #42425a;
|
|
||||||
line-height: 24px;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.private-relay-dashboard-card-subhead {
|
|
||||||
font-size: 20px;
|
|
||||||
line-height: 24px;
|
|
||||||
margin: 0 0 4px 0;
|
|
||||||
color: rgb(32, 18, 58);
|
|
||||||
}
|
|
||||||
|
|
||||||
.private-relay-join-waitlist {
|
|
||||||
margin: 4px 0 0 0;
|
|
||||||
line-height: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.private-relay-dashboard-card-content {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.private-relay-dashboard-card-content::before {
|
|
||||||
background-image: url("../../img/svg/data-removal-small.svg");
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-size: contain;
|
|
||||||
background-position: center center;
|
|
||||||
height: 100%;
|
|
||||||
width: 35%;
|
|
||||||
margin-right: 28px;
|
|
||||||
content: "";
|
|
||||||
display: inline-block;
|
|
||||||
align-self: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.private-relay-dashboard-card-border {
|
|
||||||
padding: 28px;
|
|
||||||
background-color: rgb(249, 247, 253);
|
|
||||||
margin: 0.15rem;
|
|
||||||
border-radius: 6px;
|
|
||||||
overflow: hidden;
|
|
||||||
cursor: pointer;
|
|
||||||
box-shadow: 0 2px 8px 0 rgba(14, 13, 26, 0), 0 3px 1px -2px rgba(7, 48, 114, 0), 0 2px 4px 0 rgba(34, 0, 51, 0), 0 0 0 1px rgba(32, 18, 58, 0);
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.private-relay-dashboard-card:hover {
|
|
||||||
box-shadow: 0 2px 8px 0 rgba(14, 13, 26, 0.12), 0 3px 1px -2px rgba(7, 48, 114, 0.12), 0 2px 4px 0 rgba(34, 0, 51, 0.04), 0 0 0 1px rgba(32, 18, 58, 0.04);
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-toggle {
|
|
||||||
fill: #fff !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.masking-options {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.toggle-parent.inactive .toggle-child.relay-info-body {
|
|
||||||
display: flex;
|
|
||||||
visibility: hidden;
|
|
||||||
max-height: 0;
|
|
||||||
opacity: 0;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-toggle-button {
|
|
||||||
background-color: rgba(255, 255, 255, 0);
|
|
||||||
pointer-events: none;
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-sign-up-content {
|
|
||||||
transition: all 0.4s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sending-email {
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sending-email .relay-sign-up-content {
|
|
||||||
filter: blur(0.3px);
|
|
||||||
opacity: 0.5;
|
|
||||||
transition: all 0.4s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-sign-up.sending-email {
|
|
||||||
background-color: #e9e9e9;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-sign-up.sending-email::after {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
display: flex;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
background-image: url("../../img/svg/new-loader.svg");
|
|
||||||
background-position: center center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-sign-up-confirmation {
|
|
||||||
padding: 24px;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
bottom: 0;
|
|
||||||
right: 0;
|
|
||||||
left: 0;
|
|
||||||
opacity: 0;
|
|
||||||
visibility: hidden;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.email-sent .relay-sign-up-content {
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.email-sent .relay-sign-up-confirmation {
|
|
||||||
visibility: visible;
|
|
||||||
opacity: 1;
|
|
||||||
background-color: rgba(255, 255, 255, 1);
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.email-sent {
|
|
||||||
opacity: 0.5;
|
|
||||||
background-color: rgba(255, 255, 255, 1);
|
|
||||||
transition: opacity 0.15s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.email-sent::after {
|
|
||||||
opacity: 0;
|
|
||||||
visibility: hidden;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-confirmation-headline {
|
|
||||||
margin: auto auto 16px auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-confirmation-body {
|
|
||||||
margin: 0 auto auto auto;
|
|
||||||
color: #393473;
|
|
||||||
font-size: 18px;
|
|
||||||
line-height: 27px;
|
|
||||||
max-width: 460px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-confirmation-headline::before {
|
|
||||||
content: "";
|
|
||||||
display: block;
|
|
||||||
background-color: #2ac3a2;
|
|
||||||
border: 3px solid #3fe1b0;
|
|
||||||
background-image: url("../../img/svg/white-check.svg");
|
|
||||||
background-size: 50px;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: center center;
|
|
||||||
height: 80px;
|
|
||||||
width: 80px;
|
|
||||||
margin: auto auto 16px auto;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 800px) {
|
|
||||||
.relay-sign-up {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-subhead {
|
|
||||||
max-width: 420px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-info {
|
|
||||||
margin: 40px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.private-relay-dashboard-card {
|
|
||||||
margin: 12px auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.private-relay-dashboard-card-content {
|
|
||||||
flex-direction: column;
|
|
||||||
text-align: center;
|
|
||||||
max-width: 400px;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.private-relay-dashboard-card-content::before {
|
|
||||||
min-height: 100px;
|
|
||||||
margin-bottom: 16px;
|
|
||||||
margin-right: 0;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.private-relay-join-waitlist {
|
|
||||||
margin-top: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-sign-up-wrapper {
|
|
||||||
padding: 44px 24px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 600px) {
|
|
||||||
.relay-hero {
|
|
||||||
margin-bottom: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-info {
|
|
||||||
padding: 20px 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-toggle-button {
|
|
||||||
padding-left: 16px;
|
|
||||||
pointer-events: all;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-toggle-button:hover {
|
|
||||||
background-color: rgba(0, 0, 0, 0.1);
|
|
||||||
transition: all 0.2s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-info-body.toggle-child {
|
|
||||||
padding-top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-info-body {
|
|
||||||
padding-left: 16px;
|
|
||||||
padding-right: 24px;
|
|
||||||
line-height: 26px;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-info.toggle-parent {
|
|
||||||
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-info.toggle-parent.active .toggle-child {
|
|
||||||
visibility: visible;
|
|
||||||
max-height: 2000px;
|
|
||||||
opacity: 1;
|
|
||||||
padding-top: 12px;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-subhead {
|
|
||||||
max-width: 360px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-headline::before {
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-headline {
|
|
||||||
font-size: 32px;
|
|
||||||
line-height: 34px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-sign-up {
|
|
||||||
padding: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.email-sent.relay-sign-up {
|
|
||||||
padding-top: 56px;
|
|
||||||
padding-bottom: 56px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-info-subhead {
|
|
||||||
font-size: 18px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-sign-up-email {
|
|
||||||
font-size: 16px;
|
|
||||||
margin-bottom: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-confirmation-headline::before,
|
|
||||||
.relay-avatar {
|
|
||||||
height: 60px;
|
|
||||||
width: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.relay-avatar {
|
|
||||||
margin-bottom: 8px;
|
|
||||||
}
|
|
||||||
}
|
|
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 4.2 KiB |
|
@ -6,7 +6,7 @@ const csrf = require('csurf')
|
||||||
|
|
||||||
const {
|
const {
|
||||||
home, getAboutPage, getAllBreaches, getBentoStrings,
|
home, getAboutPage, getAllBreaches, getBentoStrings,
|
||||||
getSecurityTips, notFound, removeMyData, addEmailToWaitlist
|
getSecurityTips, notFound, addEmailToWaitlist
|
||||||
} = require('../controllers/home')
|
} = require('../controllers/home')
|
||||||
const { getIpLocation } = require('../controllers/ip-location')
|
const { getIpLocation } = require('../controllers/ip-location')
|
||||||
|
|
||||||
|
@ -26,7 +26,6 @@ router.get('/about', getAboutPage)
|
||||||
router.get('/breaches', getAllBreaches)
|
router.get('/breaches', getAllBreaches)
|
||||||
router.get('/security-tips', getSecurityTips)
|
router.get('/security-tips', getSecurityTips)
|
||||||
router.get('/getBentoStrings', getBentoStrings)
|
router.get('/getBentoStrings', getBentoStrings)
|
||||||
router.get('/remove-my-data', requireSessionUser, removeMyData)
|
|
||||||
router.post('/join-waitlist', jsonParser, requireSessionUser, addEmailToWaitlist)
|
router.post('/join-waitlist', jsonParser, requireSessionUser, addEmailToWaitlist)
|
||||||
router.get('/iplocation', getIpLocation)
|
router.get('/iplocation', getIpLocation)
|
||||||
router.use(notFound)
|
router.use(notFound)
|
||||||
|
|
|
@ -2,16 +2,11 @@
|
||||||
|
|
||||||
const { LocaleUtils } = require('./../locale-utils')
|
const { LocaleUtils } = require('./../locale-utils')
|
||||||
const { makeBreachCards } = require('./breaches')
|
const { makeBreachCards } = require('./breaches')
|
||||||
const { hasUserSignedUpForRelay } = require('./../controllers/utils')
|
|
||||||
|
|
||||||
function enLocaleIsSupported (args) {
|
function enLocaleIsSupported (args) {
|
||||||
return args.data.root.req.headers['accept-language'].includes('en')
|
return args.data.root.req.headers['accept-language'].includes('en')
|
||||||
}
|
}
|
||||||
|
|
||||||
function userIsOnRelayWaitList (args) {
|
|
||||||
return hasUserSignedUpForRelay(args.data.root.req.user)
|
|
||||||
}
|
|
||||||
|
|
||||||
function getBreachesDashboard (args) {
|
function getBreachesDashboard (args) {
|
||||||
const verifiedEmails = args.data.root.verifiedEmails
|
const verifiedEmails = args.data.root.verifiedEmails
|
||||||
const locales = args.data.root.req.supportedLocales
|
const locales = args.data.root.req.supportedLocales
|
||||||
|
@ -182,6 +177,5 @@ module.exports = {
|
||||||
getLastAddedEmailStrings,
|
getLastAddedEmailStrings,
|
||||||
makeEmailVerifiedString,
|
makeEmailVerifiedString,
|
||||||
makeEmailAddedToSubscriptionString,
|
makeEmailAddedToSubscriptionString,
|
||||||
enLocaleIsSupported,
|
enLocaleIsSupported
|
||||||
userIsOnRelayWaitList
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,19 +42,6 @@
|
||||||
{{> email-card }}
|
{{> email-card }}
|
||||||
{{/eachFromTo}}
|
{{/eachFromTo}}
|
||||||
|
|
||||||
{{#if ./../supportedLocalesIncludesEnglish}}
|
|
||||||
<div class="private-relay-dashboard-card">
|
|
||||||
<a href="/remove-my-data" class="private-relay-dashboard-card-border flx private-relay-cta" data-analytics-label="join-the-waitlist-link" data-user-is-signed-up="{{ ./../userHasSignedUpForRemoveData }}">
|
|
||||||
<div class="private-relay-dashboard-card-content flx">
|
|
||||||
<div class="private-relay-dashboard-card-copy">
|
|
||||||
<p class="bold ff-Met private-relay-dashboard-card-subhead">Remove your data from websites.</p>
|
|
||||||
<p class="private-relay-dashboard-card-body">We’re piloting a new service to monitor and remove your name, physical address, phone number, and email from online databases.</p>
|
|
||||||
<p class="blue-link private-relay-join-waitlist">Join the waitlist</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
{{/if}}
|
|
||||||
{{#eachFromTo this.verifiedEmails 1 this.verifiedEmails.length }}
|
{{#eachFromTo this.verifiedEmails 1 this.verifiedEmails.length }}
|
||||||
{{> email-card }}
|
{{> email-card }}
|
||||||
{{/eachFromTo}}
|
{{/eachFromTo}}
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
|
|
||||||
{{!< default}}
|
|
||||||
|
|
||||||
<main class="container monitor-homepage clear-header private-relay-landing flx jst-cntr">
|
|
||||||
<div class="mw-700">
|
|
||||||
<div class="relay-hero">
|
|
||||||
<h2 class="relay-headline txt-cntr txt-white">Remove your personal information and stop it from being shared online.</h2>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<section class="relay-info toggle-parent active">
|
|
||||||
<button class="toggle svg-wrap article-toggle relay-toggle-button" aria-label="show-content">
|
|
||||||
<span class="relay-info-subhead bold ff-Met txt-white">Why remove your personal information?</span>
|
|
||||||
<svg class="toggle-down" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path class="relay-toggle" fill="#ffffff" d="M8 12a1 1 0 0 1-.707-.293l-5-5a1 1 0 0 1 1.414-1.414L8 9.586l4.293-4.293a1 1 0 0 1 1.414 1.414l-5 5A1 1 0 0 1 8 12z"></path></svg>
|
|
||||||
</button>
|
|
||||||
<p class="relay-info-body txt-light-grey toggle-child">When your personal information is online, you might be an easier target for identity theft, fraud, or even cyberstalking. Advertisers, companies, and hackers can quickly figure out a lot of information about you, like your name, home address, family information, or even social security numbers and passwords.</p>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section class="relay-info toggle-parent active">
|
|
||||||
<button class="toggle svg-wrap article-toggle relay-toggle-button" aria-label="show-content">
|
|
||||||
<span class="relay-info-subhead bold ff-Met txt-white">How do we remove it?</span>
|
|
||||||
<svg class="toggle-down" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path class="relay-toggle" fill="#ffffff" d="M8 12a1 1 0 0 1-.707-.293l-5-5a1 1 0 0 1 1.414-1.414L8 9.586l4.293-4.293a1 1 0 0 1 1.414 1.414l-5 5A1 1 0 0 1 8 12z"></path></svg>
|
|
||||||
</button>
|
|
||||||
<p class="relay-info-body txt-light-grey toggle-child">We are creating a privacy service to monitor websites for your personal information and remove it from sites that put you and your loved ones at risk. It’s not available yet, but click below if you are interested in finding out more.</p>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="row relay-sign-up-wrapper">
|
|
||||||
<div class="relay-sign-up txt-cntr {{#if userHasSignedUpForRemoveData}} email-sent {{/if}}">
|
|
||||||
<div class="relay-sign-up-content flx flx-col jst-cntr">
|
|
||||||
<h2 class="relay-sign-up-headline">Join the waitlist</h2>
|
|
||||||
<p>You will receive an email when the service is available. We are working hard to create a great experience. When you join the waitlist, you will also have opportunities to give us feedback along the way and let us know what is important to you.</p>
|
|
||||||
<img alt="{{ req.session.user.primary_email }}" class="relay-avatar" src="{{ req.session.user.fxa_profile_json.avatar }}"/>
|
|
||||||
<span class="relay-sign-up-email">{{ req.session.user.primary_email }}</span>
|
|
||||||
<button class="btn-blue-primary bold ff-Met relay-sign-up-btn private-relay-cta" data-analytics-label="join-the-waitlist-button" data-user-is-signed-up={{ userHasSignedUpForRemoveData }}>Join the Waitlist</button>
|
|
||||||
<p><a href="https://www.mozilla.org/en-US/privacy/" target="_blank">Privacy Policy</a></p>
|
|
||||||
</div>
|
|
||||||
<div class="relay-sign-up-confirmation flx flx-col jst-cntr al-cntr">
|
|
||||||
<h2 class="relay-sign-up-headline relay-confirmation-headline">You're on the list!</h2>
|
|
||||||
<p class="relay-confirmation-body"><span class="bold">{{ req.session.user.primary_email }}</span> has been added to the waitlist. We’ll let you know when we have more updates to share about this service.</p>
|
|
||||||
<p class="relay-confirmation-body">We'd also love for you to <span class="bold"><a href="https://survey.alchemer.com/s3/6275633/Data-Removal-Service-Waitlist" target="_blank">answer a few questions about this service</a></span>, so we can make it more relevant and useful to you.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="mw-700">
|
|
||||||
<section class="relay-info relay-bullets">
|
|
||||||
<h4 class="relay-info-subhead masking-options bold ff-Met txt-white">What can I do now?</h4>
|
|
||||||
<p class="relay-info-body txt-light-grey toggle-child">You can learn more by checking out <a class="relay-bullet-link bold" href="https://soundcloud.com/user-98066669/138-online-data-removal-updates" rel="noopener noreferrer" target="_blank">this Privacy, Security, and OSINT podcast episode about Online Data Removal</a>, and get their <a class="relay-bullet-link bold" href="https://gate.sc/?url=https%3A%2F%2Finteltechniques.com%2Fdata%2Fworkbook.pdf&token=1d9eb5-1-1616783838447" rel="noopener noreferrer" target="_blank">free personal data removal workbook and credit freeze guide</a>.</p>
|
|
||||||
</section>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
Загрузка…
Ссылка в новой задаче