Załóżmy hipotetycznie, że piszecie aplikację, gdzie użytkownicy mogą sobie coś wybrać, zapłacić za zamówione towary i czekać na przesyłkę.
Co jest potrzebne sprzedającemu?
- Informacja o tym, kto zamawiał
- Adres na który ma być wysłany towar,
- info o tym, czy zapłacił (dla modelu biznesowego “zapałać i odbierz”) lub, czy jest to kolejne zamówienie, a wcześniejsze jeszcze nie jest rozliczone (dla modelu “odbierz i zapłać”)
No dobra… Piszemy w Railsach z wykorzystaniem Devise, Omniauth i logowaniem z różnych portali społecznościowych typu FB, GitHub, Google, Linkedin…
Zadaję pytanie wprost:
Jaki sens ma ciche i błyskawiczne rejestrowanie z wykorzystaniem autoryzacji z takiego np Google, gdy użytkownik nie wypełni formularza z dodatkowymi informacjami typu adres dostawy, nazwa odbiorcy, etc?
W jakim celu dajemy możliwość szybkiego rejestrowania do naszej aplikacji (bez wypełniania szczegółowego formularza)?
Po to, by klient, który w naszym systemie aktualnie jest widziany jako “Alibaba” (alibaba@gmail.com) blokował nam towary w naszych stanach magazynowych?
Uważam, że sensownym podejściem do tematu jest:
- Nie logować go wcale do chwili, gdy nie zdecyduje się na wybieranie towarów, a wtedy musi zarejestrować się wypełniając dokładnie swój formularz danych (Nazwa, adres, etc)
- Przy rejestrowaniu zmusić go do wypełnienia formularza danych, tak, by następne logowania mogły być szybkie i ciche
Niech ktoś mi wyjaśni celowość rozwiązania polegającego na tym, że rejestrujący się (po autoryzacji z przykładowego Fejsa) user musi tylko potwierdzić swój email, na który dostanie link, by mógł zakończyć proces confirmation?
Jeżeli przy rejestracji nie wypełni dodatkowo pól password i confirm_password, to przecież nawet nie będzie mógł zalogować się bez linku z takiego Fejsa, bo hasła nie zna w naszym systemie (wygenerowano mu automatycznie).
Nie zna hasła, to nie uzupełni swoich danych!
Będzie musiał zatem przejść ścieżkę:
- Rejestrowanie z portalu społecznościowego z “ręcznym” podaniem email’a
- Potwierdzenie swojego maila
- Wysłanie linku resetu hasła
- Ponowny powrót do swojej skrzynki pocztowej i wybranie przysłanego linku z resetem hasła
- Zmiana hasła po przekierowaniu na naszą stronę.
I to ma być to userfrendly rozwiązanie?
MAKABRA!
Zatem uważam, że kompletnym bezsensem (dla takiego typu aplikacji), jest rejestrowanie użytkowników, którzy jesynie muszą potwierdzić swój email.
Sprawa druga, to konta użytkowników.
Znalazłem przykład aplikacji, (http://sourcey.com/rails-4-omniauth-using-devise-with-twitter-facebook-and-linkedin/) która pozwala rejestrować użytkowników i umożliwia im podanie @maila w celu zakończenia procesu rejestracji.
Pytam, w jakim celu?
Ma to sens tylko w przypadku Twittera’ który nie zwraca w module Omniauth adresu email, a podaje samą nazwę usera.
Zostawmy zresztą chwilowo Twittera na boku.
W powyższym przykładzie został bardzo fajnie pokazany model relacji
jedno konto User i wiele kont Identity,
które odzwierciedlać mają wszystkie konta portali społecznościowych, z których się user logował.
Ok i super, ale pytam o sens tego przykładu, skoro użytkownik ma potwierdzić adres @email?
Nie wiem, może ja nie rozumiem do końca filozofii tego przykładu i ogólnie filozofii rejestrowania użytkowników, ale uważam, że dla internetowego biznesu, to właśnie @email jest takim “PESELEM”, którym powinniśmy się posługiwać zakładając unikalne konta użytkowników.
Prosty przykład:
tabela User:
id, name, email
11, Alibaba, alibaba@gmail.com
tabela Identity:
id, user_id, provider, uid, name, email
51, 11, facebook, 12345678, Alibaba, alibaba@gmail.com
87, 11, github, 3123132344, Zenek Bębenek, alibaba@gmail.com
93, 11, linkedin, 1112222244444, Mizdrz , alibaba@gmail.com
Na każdym z tych portali społecznościowych nasz User ma różne nazwy i ma jedną wspólną cechę - email
Jaki zatem sens ma wypełnianie przez niego pola email w celu wysłania mu linku potwierdzającego jego konto pocztowe?
Uważam, że takie pole winno być wręcz zablokowane, bo co to za autoryzacja z przykładowego konta Fejsa związanego z adresem email alibaba@gmail.com i wysyłanie potwierdzenia na adres sampodałem@gmail.com?
Podzielcie się swoimi przemyśleniami w tej sprawie, gdyż albo nie rozumiem filozofii autoryzacji albo nie rozumiem akademickiego przykładu z możliwością wysyłania linku confirmation na adres zupełnie niezwiązany z adresem email, jaki user ma u providera