我正在尝试使用Firebase Auth创建新用户,但是我想在创建新帐户之前使用Firestore安全规则来验证某些字段(模式匹配)。我该怎么办?
在createUser(withEmail:,password :)函数的完成处理程序中,成功创建帐户后,我正在对Firestore进行一些写操作。
我面临一个问题,即有时由于Firestore安全性规则(模式匹配)而无法成功写入Firestore。在这种情况下,写入失败,但是仍将创建新的用户帐户(因为在完成处理程序中尝试写入)。
// Create User Method - Firebase Auth & Swift
Auth.auth().createUser(withEmail: self.emailTextField.text!, password: self.passwordTextField.text!) { (result, error) in
if error != nil {
print(error?.localizedDescription)
} else {
let userName = [
userName:self.userNameTextField.text!
]
// Writing field Data to Firestore
Firestore.firestore().collection("users").document(self.userNameTextField.text!).setData(userName) {(err) in
if err != nil {
// Rather than throwing a fatalError, how can I ensure new account creation is cancelled so that feedback can be given on the issue with entered field data?
fatalError()
}
我想确保未创建用户帐户,以防由于与Firestore安全规则冲突而无法成功写入Firestore。
Firebase身份验证没有任何安全规则。当前无法在创建用户之前检查传入帐户属性是否有效。安全规则仅适用于从移动或Web客户端直接读写到Cloud Firestore(或实时数据库或Cloud Storage)的数据。
唯一可以做的就是在创建帐户后使用Cloud Functions auth trigger检查帐户属性,如果有问题,则删除或停用该帐户。