Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Flutter Firebase Authentication (Kimlik Doğrulama) ile kullanıcılara e-posta/şifre ile giriş yapma, Google, Facebook gibi sosyal giriş seçeneklerini sunma ve gelişmiş rollerle yönetim sağlama işlemlerini gerçekleştirebilirsiniz. Bu adım adım rehber, e-posta/şifre ile kimlik doğrulama ve rol tabanlı erişim kontrolünü ayrıntılı bir şekilde ele alır.
Projeye Firebase ile ilgili paketleri eklemek için pubspec.yaml
dosyasına şu satırları ekleyin:
dependencies:
firebase_core: latest_version
firebase_auth: latest_version
Daha sonra şu komutu çalıştırın:
flutter pub get
Flutter uygulamanızda Firebase’i başlatmak için aşağıdaki kodu main.dart
dosyanızda ekleyin:
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
E-posta ve şifre ile kullanıcı kaydı ve giriş işlemleri şu şekilde yapılır:
import 'package:firebase_auth/firebase_auth.dart';
Future<User?> registerUsingEmailPassword({
required String email,
required String password,
}) async {
FirebaseAuth auth = FirebaseAuth.instance;
try {
UserCredential userCredential = await auth.createUserWithEmailAndPassword(
email: email,
password: password,
);
User? user = userCredential.user;
// E-posta doğrulama göndermek için
await user?.sendEmailVerification();
return user;
} catch (e) {
print("Hata: $e");
return null;
}
}
Future<User?> signInUsingEmailPassword({
required String email,
required String password,
}) async {
FirebaseAuth auth = FirebaseAuth.instance;
try {
UserCredential userCredential = await auth.signInWithEmailAndPassword(
email: email,
password: password,
);
return userCredential.user;
} catch (e) {
print("Hata: $e");
return null;
}
}
void signOut() async {
await FirebaseAuth.instance.signOut();
}
Kullanıcı giriş/çıkış durumlarını dinlemek için şu kodu kullanabilirsiniz:
FirebaseAuth.instance.authStateChanges().listen((User? user) {
if (user == null) {
print("Kullanıcı çıkış yaptı");
} else {
print("Kullanıcı giriş yaptı");
}
});
Giriş ve kayıt formlarında kullanıcı girişlerini doğrulamak için validator.dart
adında bir dosya oluşturun:
class Validator {
static String? validateEmail(String email) {
if (email.isEmpty) return 'E-posta boş olamaz';
final RegExp emailRegex = RegExp(r'^[\w-]+@([\w-]+\.)+[\w-]{2,4}$');
if (!emailRegex.hasMatch(email)) return 'Geçerli bir e-posta girin';
return null;
}
static String? validatePassword(String password) {
if (password.isEmpty) return 'Şifre boş olamaz';
if (password.length < 6) return 'Şifre en az 6 karakter olmalıdır';
return null;
}
}
Firebase ile kullanıcı rollerini yönetebilir ve erişimi rollerle sınırlayabilirsiniz. Örneğin, kullanıcılara “admin” rolü atayabilirsiniz.
Firestore’da Kullanıcı Belgesi Oluşturma:
FirebaseFirestore.instance.collection('users').doc(user.uid).set({
'email': user.email,
'roles': {'admin': false}
});
Cloud Function ile Rol Atama: Firebase Cloud Functions kullanarak rol atama işlemi yapılabilir:
exports.setCustomAdminClaim = functions.firestore.document('users/{userId}')
.onWrite(async (change, context) => {
const newValue = change.after.data();
const isAdmin = newValue.roles.admin;
if (isAdmin) {
await admin.auth().setCustomUserClaims(context.params.userId, { admin: true });
} else {
await admin.auth().setCustomUserClaims(context.params.userId, { admin: false });
}
});
Firestore Güvenlik Kuralları:
match /somePrivateData/{docId} {
allow read, write: if request.auth.token.admin == true;
}
Kayıttan sonra kullanıcıya e-posta doğrulama gönderilebilir:
await user.sendEmailVerification();
Firebase Authentication, Flutter uygulamaları için kullanışlı bir kimlik doğrulama çözümüdür. E-posta/şifre kimlik doğrulaması, rol yönetimi, sosyal girişler ve daha fazlası ile uygulamanızı güçlendirebilirsiniz
Ağaç dikmek için en iyi zaman 20 yıl öncesiydi. İkinci en iyi zaman ise şimdi.
Çin Atasözü
Bir sonraki yazıda görüşmek dileğiyle!”