Я попытался сделать это с помощью облачной функции создания пользователей, и функции Oncall, я не знаю, назначены ли претензии или нет, или как проверить, где провален код. Идея, что делать)
Код: Выделить всё
export const assignAdminRoleOnUserCreation = functions.auth
.user()
.onCreate(async (user) => {
try {
if (user.email === "hardcodedemail@gmail.com") {
await admin.auth().setCustomUserClaims(user.uid, { admin: true });
console.log(`Admin role assigned to user ${user.email} (${user.uid}).`);
} else {
console.log(`No admin role assigned to user ${user.email}.`);
}
} catch (error) {
console.error(`Error assigning admin role to user ${user.email}:`, error);
}
});
export const manuallyAssignAdmin = onCall(async (request) => {
const targetEmail = "hardcodedemail@gmail.com"
try {
const userRecord = await getAuth().getUserByEmail(targetEmail)
await getAuth().setCustomUserClaims(userRecord.uid, { admin: true })
return { message: `Admin role assigned to ${targetEmail}` }
} catch (error) {
console.error("Error assigning admin role:", error)
throw new Error("Failed to assign admin role")
}
})
< /code>
Как я вызываю функцию Oncall на переднем конце: < /p>
async function assignAdminManually() {
const assignAdmin = httpsCallable(functions, 'manuallyAssignAdmin')
try {
const result = await assignAdmin()
console.log(result.data.message)
alert('Admin role assigned successfully!')
} catch (error) {
console.error('Error assigning admin role:', error)
alert('Failed to assign admin role.')
}
< /code>
} < /p>
Как я пытаюсь проверить роль администратора: < /p>
const isAdmin = async () => {
if (cachedIsAdmin !== null) {
return cachedIsAdmin;
}
const auth = getAuth();
const user = auth.currentUser;
console.log(auth)
if (user) {
try {
const idTokenResult = await user.getIdTokenResult();
if (idTokenResult.claims.admin) {
cachedIsAdmin = true;
} else {
cachedIsAdmin = false;
}
} catch (error) {
console.error("Error getting ID token result:", error);
cachedIsAdmin = false;
}
} else {
cachedIsAdmin = false;
}
return cachedIsAdmin;
Подробнее здесь: https://stackoverflow.com/questions/795 ... aims-admin
Мобильная версия