Правила безопасности администратора продолжают блокироваться - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь написать правила безопасности для Firebase.У меня постоянно возникает проблема с проверкой, является ли пользователь администратором или нет.

Пользователь может получать доступ только к своим собственным данным, а администратор может удалять пользователей вместе с их заметками и контактами.

match /users/{userId} {
  allow read: if isSignedIn();
  allow update: if request.auth.uid == userId || isAppAdmin() || isOrganisationAdmin();
  allow create, delete: if isAppAdmin() || isOrganisationAdmin();
}

match /contacts/{contactId} {
  allow read: if isSignedIn();
  allow create: if isSignedIn() && incomingData().uid == request.auth.uid;
  allow delete: if existingData().uid == request.auth.uid || isAppAdmin() ||
    getOrganisationData(getUserData().organisationId).adminId == request.auth.uid;
  allow update: if isSignedIn() && existingData().uid == request.auth.uid;
}

match /notes/{noteId} {
  allow read: if isSignedIn();
  allow create: if isSignedIn() && incomingData().uid == request.auth.uid;
  allow delete: if existingData().uid == request.auth.uid || isAppAdmin() ||
    getOrganisationData(getUserData().organisationId).adminId == request.auth.uid;
  allow update: if isSignedIn() && existingData().uid == request.auth.uid;
}

// Functions //
  function isSignedIn() {
  	return request.auth != null;
  }
  
  function isOrganisationAdmin() {
   return getOrganisationData(getUserData().organisationId).adminId ==       request.auth.uid;
  }
  
  function isAppAdmin() {
  	return request.auth.token.email == 'travelnoteshh@gmail.com';
  }
  
  function getUserData() {
  	return get(/databases/$(database)/documents/users/$(request.auth.uid)).data;
  }
  
  function getOrganisationData(organisationId) {
  	return get(/databases/$(database)/documents/organisations/$(organisationId)).data;
  }

Я уже считаю, что что-то не так с функцией isOrganisationAdmin (), потому что функция isAppAdmin () работает.Может кто-нибудь помочь, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...