Allora perché non usare i login social?
Allora perché non usare i login social?
Vero, questo copre molte persone. Ma ci sono un numero crescente di persone come me che non usano il login social per mancanza di fiducia nei fornitori di login. I principali fornitori sono alcune delle aziende meno fidate del pianeta.
Inoltre, il login social non affronta il problema delle persone che semplicemente non vogliono diventare membri di una comunità di cui non sanno ancora nulla. Tornando al mio esempio originale, sono arrivato in questa comunità tramite Google cercando informazioni molto specifiche. Non ho ancora alcun interesse a far parte della comunità che ha generato le informazioni. Mantenere i contatti tramite il metodo a minor sforzo disponibile dà alla comunità la possibilità di dimostrare il proprio valore e portare quella persona all’interno.
Il login social è una soluzione alla barriera tecnica, non alla barriera psicologica.
E tuttavia tutte le mailing list funzionano in quel modo.
Se l’email che l’utente inserisce è la stessa dell’email del social login, e considerando che il permesso richiesto durante l’autenticazione tramite social login, oltre ai dati pubblici (che sono già pubblici), è l’indirizzo email, allora non vedo problemi con il social login.
Ad esempio, normalmente mi autentico con Google o GitHub, e quando viene richiesto il permesso, mi assicuro solo che venga richiesto solo l’indirizzo email. In questo caso lo considero molto più comodo che inserire l’indirizzo email, perché non devo scriverlo (e con l’autenticazione via email potrei anche dover validare l’email). Con il social login sono solo 1 o 2 clic.
In realtà, è molto più probabile che mi iscriva a una newsletter (o cose simili) tramite un social login piuttosto che inserire l’indirizzo email. Naturalmente, questo è il mio caso specifico.
Rispondendo alla mia stessa risposta.
Non ho trovato alcuna opzione di registrazione senza password nella directory dei plugin. Ho trovato questo argomento in cui @codinghorror solleva alcune obiezioni all’idea: Why is password still required at signup? Non sono d’accordo con lui, ma sembra che la discussione su questa idea sia terminata lì.
Sembra che sia ora di rispolverare il mio libro di Ruby o di pubblicare su Marketplace.
Ho dato un’occhiata agli endpoint API esistenti. Sembra che per realizzare quanto ho delineato sopra, avrei bisogno di un plugin che combini le funzionalità di questi due endpoint:
POST /users.json
Richiesta:
{
"name": "string",
"email": "string",
"password": "string",
"username": "string",
"active": true,
"approved": true,
"user_fields[1]": true
}
POST /t/{id}/notifications.json
Richiesta:
{
"notification_level": "0"
}
in:
POST /plugin-name/users.json
Richiesta:
{
"email": "string",
"name": "string", // ora opzionale
"password": "string", // ora opzionale
"username": "string", // ora opzionale
"active": true,
"approved": true,
"user_fields[1]": true,
"notifications": [ // nuova proprietà
{
"topic_id": "some-topic-id",
"notification_level": "0"
}
]
}
Questa nuova logica verrebbe aggiunta:
- se il nome è nullo, generarne uno automaticamente
- se lo username è nullo, generarne uno automaticamente. Possibilmente impostarlo a un uuid
- se la password è nulla, impostarla a un uuid di tipo 4 o semplicemente a una stringa casuale
- se len(notifications) > 0, aggiungere una voce di notifica al database
Inoltre, nell’email di benvenuto dovrebbero essere aggiunte alcune informazioni su come impostare il proprio username, nome e password. Questo è facile perché la maggior parte è in https://example.com/u/{username}/preferences/account. Questo potrebbe essere solo un nuovo paragrafo da inserire.
Poi, naturalmente, avresti bisogno di un componente UI che almeno abbia:
- un campo email
- una casella di controllo ‘Segui questo argomento’
- un pulsante di invio
Per motivi di GDPR, sarebbe una buona idea aggiungere anche un link a una pagina di documentazione su cosa significhi esattamente ‘Segui’, quali email riceveranno, ecc.
C’è già del codice per creare utenti “staged” se si consentono la creazione di argomenti via email. Questi hanno un nome utente casuale e sono associati a un indirizzo email. È possibile “rivendicare” l’account accedendo e convalidando quell’indirizzo email.
Vedi
Forse costruire su questo potrebbe aiutare?
Grazie per il suggerimento. In realtà sembra perfetto.
Approfondirò il codice e vedrò se posso chiamare direttamente il codice che crea l’utente di staging al ricevimento dell’email.
Sì, questo era il mio processo di pensiero originale, ma active potrebbe non essere la proprietà più utile.
Un utente completo staged = false, active = true, quindi questi sono attributi diversi (nota per me stesso!)
Suggerimento promettente @mattdm … potrebbe ridurre significativamente il lavoro!
Ho passato del tempo di qualità a scavare nel codice. Penso che qualcosa del genere (avviso: molto probabilmente non funzionante perché non l’ho ancora provato) funzionerebbe per consentire all’utente di pubblicare una risposta con solo un’email. Apprezzerei qualsiasi commento tu abbia.
Non sono particolarmente sicuro se questo sia il modo migliore per creare un utente “staged”. Non ho trovato alcun metodo che crei specificamente utenti “staged”, tuttavia.
class SomePluginController < ApplicationController
# Assicurati che ci sia un utente "staged" nel db
def ensure_user
# Controlla se esiste un utente "staged"
user = User.where(staged: true).with_email(params[:email].strip.downcase).first
# Crea manualmente un utente "staged"
if !user
user = User.new
user.staged = true
user.email = params[:email]
user.active = false
user.save!
end
user
end
# Guarda il topic come utente "staged"
def staged_watch
user = ensure_user
topic = Topic.find(params[:topic_id].to_i)
TopicUser.change(user, topic.id, notification_level: params[:notification_level].to_i)
end
# Rispondi al topic come utente "staged"
def staged_reply
user = ensure_user
manager = NewPostManager.new(user,
raw: params[:body],
topic_id: params[:topic_id])
result = manager.perform
end
end
Questa conversazione si è mai concretizzata in un plugin o in un processo scoperto che utilizza gli utenti in staging?