[social] deprecate facebook

This commit is contained in:
Andrea 2022-04-23 13:02:20 +02:00
parent d8303d8c83
commit 6be7927898
24 changed files with 220 additions and 35 deletions

View File

@ -4,6 +4,10 @@
<Icon :v="providerOptions.icon || provider" set="b"
:class="[providerOptions.icon && providerOptions.icon.endsWith('.png') ? 'mx-1 invertible' : '']"/>
{{ providerOptions.name }}
<button v-if="providerOptions.deprecated" class="badge bg-light text-dark border border-warning" @click="depreciationNotice(providerOptions.deprecated)">
<Icon v="exclamation-triangle"/>
<T>user.login.deprecated</T>
</button>
</span>
<span v-if="connection === undefined">
<template v-if="providerOptions.instanceRequired">
@ -35,7 +39,7 @@
</span>
<br class="d-md-none"/>
<a :href="(providerOptions.redirectViaHome ? `${homeUrl}/api/user/social-redirect/${provider}/${config.locale}` : `/api/connect/${provider}`) + (providerOptions.instanceRequired ? '?instance=' + connection.name.split('@')[1] : '')"
class="badge bg-light text-dark border">
class="badge bg-light text-dark border">
<Icon v="sync"/>
<T>user.socialConnection.refresh</T>
</a>
@ -49,31 +53,34 @@
</template>
<script>
export default {
props: {
provider: { required: true },
providerOptions: { required: true },
connection: {},
},
data() {
return {
disconnecting: false,
homeUrl: process.env.HOME_URL,
formShown: false,
export default {
props: {
provider: { required: true },
providerOptions: { required: true },
connection: {},
},
data() {
return {
disconnecting: false,
homeUrl: process.env.HOME_URL,
formShown: false,
}
},
methods: {
async disconnect() {
await this.$confirm(this.$t('user.socialConnection.disconnectConfirm', {email: this.$user().email}), 'danger');
this.disconnecting = true;
try {
const response = await this.$post(`/user/social-connection/${this.provider}/disconnect`);
this.$emit('disconnected', response);
} finally {
this.disconnecting = false;
}
},
methods: {
async disconnect() {
await this.$confirm(this.$t('user.socialConnection.disconnectConfirm', {email: this.$user().email}), 'danger');
this.disconnecting = true;
try {
const response = await this.$post(`/user/social-connection/${this.provider}/disconnect`);
this.$emit('disconnected', response);
} finally {
this.disconnecting = false;
}
},
},
}
async depreciationNotice(link) {
await this.$alert(this.$t('user.login.depreciationNotice', {link}), 'warning');
}
},
}
</script>

View File

@ -3,7 +3,7 @@
<Icon :v="options.icon || provider" set="b"/>
{{ options.name }}
<form :action="options.redirectViaHome ? `${homeUrl}/api/user/social-redirect/${provider}/${config.locale}` : `/api/connect/${provider}`"
<form :action="link"
v-if="options.instanceRequired" class="input-group my-2">
<input type="text" name="instance" class="form-control" autofocus required ref="instance"
:placeholder="$t('user.login.instancePlaceholder')">
@ -19,8 +19,16 @@
:class="[options.icon && options.icon.endsWith('.png') ? 'mx-1 invertible' : '']"/>
{{ options.name }}
</button>
<a v-else :href="options.redirectViaHome ? `${homeUrl}/api/user/social-redirect/${provider}/${config.locale}` : `/api/connect/${provider}`"
class="btn btn-outline-primary">
<a v-else-if="options.deprecated" :href="link"
class="btn btn-outline-secondary btn-sm"
@click.prevent="depreciationNotice(options.deprecated)"
>
<Icon :v="options.icon || provider" set="b"/>
{{ options.name }}
</a>
<a v-else :href="link"
class="btn btn-outline-primary"
>
<Icon :v="options.icon || provider" set="b"/>
{{ options.name }}
</a>
@ -38,11 +46,20 @@ export default {
formShown: false,
};
},
computed: {
link() {
return this.options.redirectViaHome ? `${this.homeUrl}/api/user/social-redirect/${this.provider}/${this.config.locale}` : `/api/connect/${this.provider}`
}
},
methods: {
showForm() {
this.formShown = true;
this.$nextTick(() => this.$refs.instance.focus());
}
},
async depreciationNotice(link) {
await this.$confirm(this.$t('user.login.depreciationNotice', {link}), 'warning');
window.location.href = this.link;
},
}
};
</script>

View File

@ -497,6 +497,12 @@ user:
Registering lets you manage your cards ({/@example=like this one}).
passwordless: 'The website doesn''t store any passwords. {https://avris.it/blog/passwords-are-passé=More info.}'
instancePlaceholder: 'Instance'
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Validate'
invalid: 'Invalid code.'

View File

@ -421,6 +421,13 @@ user:
Mit der Registrierung kannst du deine Visitenkarten verwalten ({/@example=wie diese}).
passwordless: 'Die Website speichert keine Passwörter. {https://avris.it/blog/passwords-are-passé=Weitere Infos.}'
instancePlaceholder: 'Instanz'
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Validieren'
invalid: 'Ungültiger Code.'

View File

@ -0,0 +1,23 @@
# We don't recommend using Facebook login
<small>2022-04-23 | [@andrea](/@andrea)</small>
We all know that Meta/Facebook is a company that couldn't give a shit about morality or users' privacy.
But did you know they're also unfriendly towards developers and try to impose their prudish, conservative views on independent websites?
This morning they've disabled two apps of mine whose whole purpose was simply to let people log in to a website using their Facebook account.
Nothing more, no actual dependency on Facebook, just the “log in with” button.
Why? One of them, [NakedAdventure](https://naked-adventure.eu/), is a map of nude beaches and contains small amounts of non-sexual nudity.
The other, [OurSong](https://oursong.eurovote.eu/), is a harmless game where people vote for their favourite songs
but it's only accessible for members, so Facebook didn't like the fact that they cannot sniff around.
They have blocked the apps without notice, making independent websites inaccessible for some users on a whim.
If they think it's okay to suddenly cut people off other websites just because there was some non-sexual nudity present
or because they weren't able to snoop around, who knows if one day they won't block Pronouns.page because of the queer content?
After all, in countries like Russia distributing information about LGBTQ+ issues is already considered adult content.
Users of Pronouns.page seem to dislike Facebook anyway only 2.76% of you has login with Facebook set up
(compared for example to 38,95% of people using login with Twitter).
But to those who use it as their primary login option
**we strongly recommend setting up a different login method and ditching Facebook**.

View File

@ -521,6 +521,12 @@ user:
Registering lets you manage your cards ({/@example=like this one}).
passwordless: 'The website doesn''t store any passwords. {https://avris.it/blog/passwords-are-passé=More info.}'
instancePlaceholder: 'Instance'
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Validate'
invalid: 'Invalid code.'

View File

@ -482,6 +482,13 @@ user:
Registering lets you manage your cards ({/@example=like this one}).
passwordless: 'The website doesn''t store any passwords. {https://avris.it/blog/passwords-are-passé=More info.}'
instancePlaceholder: 'Instance'
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Validate'
invalid: 'Nevalida kodo.'

View File

@ -506,6 +506,13 @@ user:
Registrarte te permite manejar tus tarjetas ({/@example=como esta}).
passwordless: 'Este sitio web no guarda las contraseñas. {https://avris.it/blog/passwords-are-passé=Más información.}'
instancePlaceholder: 'Instancia'
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Validar'
invalid: 'Código inválido.'

View File

@ -424,6 +424,13 @@ user:
Sinscrire vous permet de gérer vos cartes ({/@example=comme celle-ci}).
passwordless: 'Ce site ne stocke aucun mot de passe. {https://avris.it/blog/passwords-are-passé=Plus dinfos.}'
instancePlaceholder: 'Instance'
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Valider'
invalid: 'Code invalide.'

View File

@ -405,6 +405,13 @@ user:
Registrar-se te permite dirigir os cartões ({/@example=como esta}).
passwordless: 'O site não grava qualquer senha. {https://avris.it/blog/passwords-are-passé=More info.}'
instancePlaceholder: 'Instance' # TODO
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Validar'
invalid: 'Código inválido.'

View File

@ -498,6 +498,13 @@ user:
Registering lets you manage your cards ({/@example=like this one}).
passwordless: 'The website doesn''t store any passwords. {https://avris.it/blog/passwords-are-passé=More info.}'
instancePlaceholder: 'Instance'
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Validate'
invalid: 'Invalid code.'

View File

@ -426,6 +426,13 @@ user:
ご登録いただいた方は、カードの設定を行うことができます。({/@example=カードの例}).
passwordless: 'このウェブサイトはパスワードを保存しません。 {https://avris.it/blog/passwords-are-passé=詳細はこちら。}'
instancePlaceholder: 'サーバー'
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: '確認'
invalid: '無効なコード'

View File

@ -495,6 +495,13 @@ user:
등록하면 카드를 ({/@example=이렇게}) 관리할 수 있습니다.
passwordless: '웹사이트는 비밀번호를 저장하지 않습니다. {https://avris.it/blog/passwords-are-passé=추가 정보.}'
instancePlaceholder: '사례'
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: '확인'
invalid: '유효하지 않은 코드'

View File

@ -402,6 +402,13 @@ user:
Rejistrarte te permete kontentarte tus kartas ({/@example=komo esta}).
passwordless: 'Este sitio gueb no guadra las kontrasenyas. {https://avris.it/blog/passwords-are-passé=Mas informasion.}'
instancePlaceholder: 'Instansia'
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Balidar'
invalid: 'Kodiche enfirmo.'

View File

@ -424,6 +424,13 @@ user:
Door te registreren kun je een kaart ({/@example=zoals deze}) maken.
passwordless: 'De website slaat geen wachtwoorden op. {https://avris.it/blog/passwords-are-passé=Meer info.}'
instancePlaceholder: 'Instantie'
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Valideer'
invalid: 'Ongeldige code.'

View File

@ -401,6 +401,13 @@ user:
Å registrere seg lar deg redigere kortene dine ({/@example=sånn som denne}).
passwordless: 'Denne nettsiden lagrer ingen passord. {https://avris.it/blog/passwords-are-passé=More info.}'
instancePlaceholder: 'Forekomst'
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Gyldig'
invalid: 'Ugyldig kode.'

View File

@ -1196,6 +1196,12 @@ user:
Założenie konta pozwala na zarządzanie swoimi wizytówkami ({/@example=takimi jak ta}).
passwordless: 'Strona nie zapisuje żadnych haseł. {https://avris.it/blog/passwords-are-passé=Więcej info.}'
instancePlaceholder: 'Instancja'
domainPlaceholder: 'Domena'
deprecated: 'Odradzane'
depreciationNotice: >
Ten dostawca uwierzytelniania nie jest godny zaufania.
<a href="%link%" target="_blank" rel="noopener">Więcej szczegółów pod tym linkiem</a>.
Mocno polecamy włączenie innej metody uwierzytelniania.
code:
action: 'Sprawdź'
invalid: 'Kod nieprawidłowy.'

View File

@ -427,6 +427,13 @@ user:
Registrar-se te permite dirigir os cartões ({/@example=como esta}).
passwordless: 'O site não grava qualquer senha. {https://avris.it/blog/passwords-are-passé=More info.}'
instancePlaceholder: 'Instância'
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Validar'
invalid: 'Código inválido.'

View File

@ -518,6 +518,13 @@ user:
Регистрация позволяет вам управлять своими аккаунтами/карточками ({/@exemple=как, например, этой}).
passwordless: 'Сайт не хранит пароли. {https://avris.it/blog/passwords-are-passé=Больше информации}'
instancePlaceholder: 'инстанция'
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Подтвердить'
invalid: 'Неверный код.'

View File

@ -476,6 +476,13 @@ user:
Registering låter dig hantera dina kort ({/@andrea=som det här}).
passwordless: 'Webbplatsen lagrar inga lösenord. {https://avris.it/blog/passwords-are-passé=Mer information.}'
instancePlaceholder: 'Instans'
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Bekräfta'
invalid: 'Ogiltig kod.'

View File

@ -541,6 +541,13 @@ user:
Реєстрація дозволяє вам управляти своїми акаунтами/картками ({/@exemple=як, наприклад, цією}).
passwordless: 'Сайт не зберігає паролі. {https://avris.it/blog/passwords-are-passé=Більше інформації}'
instancePlaceholder: 'інстанція'
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Підтвердити'
invalid: 'Невірний код.'

View File

@ -395,6 +395,13 @@ user:
Registering lets you manage your cards ({/@example=like this one}).
passwordless: 'The website doesn''t store any passwords. {https://avris.it/blog/passwords-are-passé=More info.}'
instancePlaceholder: 'Instance' # TODO
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: 'Validate'
invalid: 'Invalid code.'

View File

@ -380,6 +380,13 @@ user:
註冊可以讓你管理你的卡({/@example=像這個})。
passwordless: '該網站不存儲任何密碼。 {https://avris.it/blog/passwords-are-passé=更多信息。}'
instancePlaceholder: 'Instance' # TODO
# TODO
domainPlaceholder: 'Domain'
deprecated: 'Deprecated'
depreciationNotice: >
This is not a reliable authentication provider.
<a href="%link%" target="_blank" rel="noopener">Check out this link for more details</a>.
We highly recommend making sure that you have a different login method available.
code:
action: '證實'
invalid: '不對代碼'

View File

@ -23,14 +23,15 @@ export const socialProviders = {
redirectViaHome: true,
avatars: true,
},
facebook: {
name: 'Facebook',
redirectViaHome: true,
avatars: false,
},
google: {
name: 'Google',
redirectViaHome: true,
avatars: true,
},
facebook: {
name: 'Facebook',
redirectViaHome: true,
avatars: false,
deprecated: 'https://en.pronouns.page/blog/facebook-login-deprecated',
},
}