如何实现Firebase auth和flutter应用程序与多个角色库用户[重复]

ecfdbz9o  于 2023-10-22  发布在  Flutter
关注(0)|答案(1)|浏览(135)

此问题已在此处有答案

Delete a specific user from Firebase(6个回答)
Delete other user accounts from Firestore Auth using flutter [duplicate](1个答案)
关闭7天前。
我已经创建了一个管理应用程序,我想管理其他一个用户做一些与firebase认证登录的行动排序。他们可以登录与firebase认证,但我想有另一个用户的列表,并添加删除这些用户。但是当我删除用户的时候,我得到了一个错误,删除另一个用户。
这些是我的函数,但当deleteUser(userid)它显示“该方法'deleteUser'不是为类型'FirebaseAuth'定义的。尝试将名称更正为现有方法的名称,或定义名为'deleteUser'的方法“

void addCounter({
    required String name,
    required String email,
    required String password,
  }) async {
    print('on add counter');
    try {
      await auth
          .createUserWithEmailAndPassword(email: email, password: password)
          .then((value) => {
                FirebaseFirestore.instance
                    .collection("SuperUsers")
                    .doc(value.user!.uid)
                    .set({
                  'role': "counter",
                  'uid': value.user!.uid,
                  'name': name,
                })
              });
    } on FirebaseAuthException catch (e) {
      // this is solely for the Firebase Auth Exception
      // for example : password did not match
      print(e.message);
      // Get.snackbar("Error", e.message!);
      Get.snackbar(
        "Error",
        e.message!,
        snackPosition: SnackPosition.BOTTOM,
      );
    } catch (e) {
      // this is temporary. you can handle different kinds of activities
      //such as dialogue to indicate what's wrong
      print(e.toString());
    }
  }

  Future<void> deleteCounter(String userId) async {
    try {
      // Step 1: Remove user from Firebase Authentication
      await FirebaseAuth.instance.deleteUser(userId);
      // Step 2: Remove user data from Firestore
      await FirebaseFirestore.instance
          .collection('SuperUsers')
          .doc(userId)
          .delete();
    } catch (e) {
      print(e.toString());
    }
  }

  Future<void> updateUser(
      {required String userId, required String name}) async {
    try {
      await FirebaseFirestore.instance
          .collection('SuperUsers')
          .doc(userId)
          .update({
        'name': name,
      });
    } catch (e) {
      print(e.toString());
    }
  }

  static Stream<List<CounterModel>> counterStream() {
    return firebaseFirestore
        .collection('SuperUsers')
        .snapshots()
        .map((QuerySnapshot query) {
      List<CounterModel> counters = [];
      for (var counter in query.docs) {
        final counterItem =
            CounterModel.fromDocumentSnapshot(snapshot: counter);

        counters.add(counterItem);
      }
      return counters;
    });
  }
w8biq8rn

w8biq8rn1#

这不是拥有用户列表并对其进行管理的正确方法。举一个例子(这就是导致你出错的原因),你不能用FirebaseAuth.instance.deleteUser(userId)删除用户,除非你当前使用你想删除的用户进行了签名。所以,你应该有一个数据库来管理用户(例如使用FirebaseStorage)并为他们提供属性,你可以给予角色,名称等。当你想删除一些用户时,你必须检查角色是否允许用户这样做,如果允许,你可以从数据库中删除该文档。

相关问题