我正在使用firebase身份验证和firestore。
我想在我的应用中构建管理员视图,但我不确定如何去做。
我的firestore有一个包含1级文档的集合。每个文档都有一个标识user_uid的属性
对于管理员,我想在我的应用中提供一个显示以下内容的视图:
因为从身份验证中获取用户是管理功能,我是否要为此或其他使用firebase云功能? 我想避免使用我管理的后端(该应用程序是纯粹的前端,firebase处理所有后端功能)
-------更新-----------
对于我的要求似乎有些混乱。回复以下评论:
@jay:正如@Bob Snyder评论的那样,我打算使用自定义声明来识别管理员。
@Locohost:我不询问
如何构建一个完整的Web UI,允许管理员用户在他的Firestore数据库中添加/编辑/删除数据。
我在问我想要用来托管我实现的视图或api调用的相应firebase / google服务是什么,这将允许我生成一个具有上述两个要求的视图。
例如: 我认为可以实现的一种方法是创建一个API调用,该调用将返回所有经过身份验证的用户及其uid的列表。它仅适用于被识别为管理员的用户(通过自定义声明)。
我将使用哪些/哪些服务来托管此API调用?
答案 0 :(得分:3)
我将使用安全规则定义架构:
service cloud.firestore {
match /databases/{database}/documents {
match /documents/{documentId} {
// Document owners can read/write their documents, admins can too
allow read, write: if request.auth.uid == resource.data.ownerId || request.auth.token.isAdmin == true;
}
match /users/{userId} {
// Users can update their profiles, admins can too
allow read, write: if request.auth.uid == userId || request.auth.token.isAdmin == true;
}
match /admins/{userId} {
// Admins can do admin things
allow read, write: if request.auth.token.isAdmin == true;
}
}
}
然后,您的管理员会在您的前端运行一些请求:
db.colletion('users').get().then(/* list of users */);
db.colletion('documents').where('ownerId', '==', 'some-user-id').get().then(/* list of user owned docs */);
请注意,您不必使用自定义令牌。您可以使用request.auth.token.isAdmin == true
或exists(/databases/$(database)/documents/admins/$(request.auth.uid))
重写get(/databases/$(database)/documents/users/$(request.auth.uid)).data.isAdmin
支票,并将管理信息存储在数据库中