Firebase - пользовательские пользовательские качества - администраторJavascript

Форум по Javascript
Ответить
Anonymous
 Firebase - пользовательские пользовательские качества - администратор

Сообщение Anonymous »

Я пытаюсь найти способ добавить к роле администратора пользователя с помощью пользовательских претензий.
Я попытался сделать это с помощью облачной функции создания пользователей, и функции 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»