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
Bir sonraki yazıda görüşmek dileğiyle!”