Theory
Account નું આખું જીવન
ખરી app ફક્ત users ને log in જ કરાવતી નથી. Account ના જીવન દરમિયાન એણે નવા users ને register કરવા પડે, એમને log in અને log out કરાવવા પડે, એ password ભૂલી જાય ત્યારે મદદ કરવી પડે, અને એ ખરેખર પોતાનું email સરનામું ધરાવે છે એની ખાતરી કરવી પડે. Firebase Authentication આ દરેક માટે એક method આપે છે, એટલે તમને આખું જીવનચક્ર જાતે બનાવ્યા વગર જ મળી જાય છે.
આ પાઠ email અને password વાળા authentication ને છેડેથી છેડા સુધી લઈ જાય છે: registration, login, logout, password reset અને email verification. FestConnect Mobile ને રોજિંદા વપરાશમાં આ જ auth સુવિધાઓ જોઈએ છે.
Theory
Register કરો, log in કરો, log out કરો
SDK સાથે તમે જે ત્રણ પાયાની બાબતો જોઈ હતી તે આ રહી:
- Register:
createUserWithEmailAndPassword(email, password)account બનાવે છે (અને સફળતા મળે તો user ને sign in પણ કરી દે છે). - Log in:
signInWithEmailAndPassword(email, password)હાલના user માટે. - Log out:
auth.signOut()session પૂરું કરે છે, અને પછીauth.currentUsernull થઈ જાય છે.
Network પર જતી દરેક call એક Task પાછું આપે છે, જેને તમે listener વડે સંભાળો છો. ફક્ત આ ત્રણથી જ user account બનાવી શકે અને આવ-જા કરી શકે. પણ બીજી બે સુવિધાઓ અનુભવને પૂરો અને સુરક્ષિત બનાવે છે: ભૂલી ગયેલો password ફરી ગોઠવવો અને email ચકાસવું.
Practical
Password reset અને email verification
val auth = Firebase.auth
// Password reset: Firebase એ સરનામે reset link email કરે છે
auth.sendPasswordResetEmail(email)
.addOnCompleteListener { task ->
if (task.isSuccessful) { /* user ને એનું inbox જોવાનું કહો */ }
}
// Email verification: sign in થયેલા user ને verification link મોકલો
auth.currentUser?.sendEmailVerification()
// પછીથી તપાસો કે એણે ચકાસણી કરી છે કે નહીં:
val verified = auth.currentUser?.isEmailVerified ?: falseFormula
Passwords Firebase સંભાળે છે; તમે ક્યારેય નહીં
ધ્યાન આપો કે તમે શું નથી કરતા: તમે passwords ક્યારેય સંઘરતા નથી, અને એમને જાતે ફરી ગોઠવતા પણ નથી. User પોતાનો password ભૂલી જાય ત્યારે તમે sendPasswordResetEmail બોલાવો છો, અને Firebase એને સુરક્ષિત reset link email કરે છે; user નવો password Firebase દ્વારા ગોઠવે છે, તમારા code દ્વારા નહીં.
એ જ રીતે email verification માં Firebase ખાતરીની link email કરે છે; તમે ફક્ત એને શરૂ કરો છો અને પછીથી isEmailVerified તપાસો છો. આ સુરક્ષાની દૃષ્ટિએ મોટો ફાયદો છે: સંવેદનશીલ credentials નું કામ Firebase ની ભરોસાપાત્ર વ્યવસ્થામાં જ રહે છે, એટલે તમારી app કાચા passwords ને અડતી નથી કે જોખમી reset પ્રવાહ બનાવતી નથી. તમે સુવિધા શરૂ કરો, અને સંવેદનશીલ ભાગ Firebase ને કરવા દો.
Quiz
FestConnect નો કોઈ user પોતાનો password ભૂલી ગયો છે. Firebase પ્રમાણે સાચી રીત કઈ છે?
- એનો જૂનો password database માંથી વાંચીને એને બતાવી દેવો
- auth.sendPasswordResetEmail(email) બોલાવવું; Firebase એને નવો password ગોઠવવા માટે સુરક્ષિત link email કરે છે
- એને સાવ નવું account બનાવવાનું કહેવું
- Passwords સાદા લખાણમાં સંઘરવા, જેથી જરૂર પડ્યે જોઈ શકાય
Show the answer
auth.sendPasswordResetEmail(email) બોલાવવું; Firebase એને નવો password ગોઠવવા માટે સુરક્ષિત link email કરે છે
સાચી રીત એટલે auth.sendPasswordResetEmail(email): Firebase user ને email દ્વારા સુરક્ષિત link મોકલે છે, જેના વડે એ નવો password ગોઠવે છે, અને આ બધું Firebase સંભાળે છે, એટલે તમારી app password ને ક્યારેય અડતી નથી. વિકલ્પ A અશક્ય પણ છે અને અસુરક્ષિત પણ: Firebase passwords વાંચી શકાય એવા સ્વરૂપે સંઘરતું જ નથી (એ સુરક્ષિત રીતે hash કરેલા હોય છે), એટલે બતાવવા માટે કોઈ 'જૂનો password' છે જ નહીં, અને passwords બતાવવા એ ગંભીર સુરક્ષા ખામી ગણાય. વિકલ્પ C બિનજરૂરી છે અને વપરાશકર્તા માટે ખરાબ પણ: password ફરી ગોઠવવાથી એનું હાલનું account અને data જળવાઈ રહે છે. વિકલ્પ D જોખમી ખોટી ટેવ છે; passwords સાદા લખાણમાં ક્યારેય સંઘરવા નહીં. Credentials Firebase ને સંભાળવા દો: reset email શરૂ કરો, અને બાકીનું એ સુરક્ષિત રીતે કરી લેશે.
Think first
User નું email સરનામું ચકાસવાની માથાકૂટ શા માટે?
User તો email થી register થઈ જ ગયો છે. તો verification link મોકલવાની અને isEmailVerified તપાસવાની જરૂર શા માટે? વિચારીને પછી tap કરો.
Show the answer
કારણ કે email થી register થવું એ સાબિત કરતું નથી કે એ સરનામું ખરેખર એ જ user નું છે, અને email verification એ જ ખાતરી કરવાની રીત છે, જે સુરક્ષા, સંદેશાવ્યવહાર અને વિશ્વાસ ત્રણેય માટે મહત્ત્વની છે. કોઈ sign up કરે ત્યારે એ ગમે તે email ટાઈપ કરી શકે છે, ભૂલથી ખોટું લખાયેલું પણ, કે બીજા કોઈનું પણ. Verification વગર તમારી પાસે એવાં accounts રહી શકે જે એવાં સરનામાં સાથે જોડાયેલાં હોય જેને એમના માલિકો ક્યારેય જોતા જ નથી: password reset ના email ખોટી જગ્યાએ જાય, મહત્ત્વની સૂચનાઓ ખોવાઈ જાય, અને કોઈ ખરાબ ઇરાદાવાળો બીજા કોઈના email થી register થઈ જાય. Email verification આ ખાડો પૂરે છે: Firebase આપેલા સરનામે એક અનન્ય link મોકલે છે, અને એ inbox સુધી પહોંચ હોય એ જ એના પર click કરી શકે, જેથી માલિકી સાબિત થાય. પછી તમારી app isEmailVerified તપાસે છે અને નક્કી કરી શકે છે કે ચકાસાયા વગરના users શું કરી શકે, જેમ કે એમને જોવા દેવું પણ કોઈ event માં નોંધણી કરાવતાં કે સૂચનાઓ મેળવતાં પહેલાં ચકાસણી માગવી. આનાથી સરનામાના ખરા માલિકનું રક્ષણ થાય છે, તમારા email ખરા inbox સુધી પહોંચે છે, અને નકલી કે ભૂલથી બનેલાં accounts ઘટે છે. ભરોસાપાત્રતા અને સુરક્ષામાં મોટો ફાયદો આપતું આ નાનું પગથિયું છે, અને એટલે જ ગંભીર apps onboarding ના ભાગ તરીકે email ચકાસે છે. અને password reset ની જેમ જ, સંવેદનશીલ ભાગ, એટલે કે link મોકલવો અને એને માન્ય કરવો, Firebase કરે છે, તમે ફક્ત એને શરૂ કરો છો અને flag તપાસો છો. મુદ્દો સરનામાની માલિકી સાબિત કરવાનો છે; ટાઈપ કરેલું email ચકાસાય ત્યાં સુધી ફક્ત દાવો જ છે.
Summary
Key takeaways
- Email અને password વાળું authentication FirebaseAuth ની methods દ્વારા account નું આખું જીવનચક્ર આવરી લે છે.
- createUserWithEmailAndPassword થી register કરો; signInWithEmailAndPassword થી log in કરો; signOut() થી log out કરો.
- Password reset: sendPasswordResetEmail(email) બોલાવો, અને Firebase સુરક્ષિત reset link email કરે છે; તમે passwords જાતે ક્યારેય સંઘરતા કે બદલતા નથી.
- Email verification: currentUser.sendEmailVerification() બોલાવો, પછી currentUser.isEmailVerified તપાસો.
- Credentials નું સંવેદનશીલ કામ Firebase સંભાળે છે, જેથી કાચા passwords તમારી app ની બહાર જ રહે.
- Email verification ખાતરી કરે છે કે સરનામું ખરેખર એ user નું જ છે, જેથી સુરક્ષા અને ભરોસાપાત્ર સંદેશાવ્યવહાર બંને સુધરે છે.
- યાદ રાખવાની કડી: create, signIn, signOut, sendPasswordResetEmail, sendEmailVerification, અને જોખમી ભાગ Firebase કરે છે.