0
votes

Comment puis-je autoriser uniquement un courrier électronique à se connecter à ma page

Il y a deux côtés, administrateurs et utilisateurs. J'utilise la même base de données en Firebase pour les utilisateurs et l'administrateur. Cela signifie que les utilisateurs enregistrés dans mon authentification Firebase peuvent se connecter à la page Web d'Admin. Comment puis-je autoriser le courrier électronique de l'administrateur spécifique à vous connecter à la page Admin.

Par exemple: Admin a un email de admin@admin.com

Utilisateur a plusieurs courriels comme 123@gmail.com, 222@gmail.com et etc.

Ce que je veux, c'est seulement autoriser admin@admin.com de pouvoir se connecter à la page d'administration mais limiter la connexion aux emails d'utilisateur pour vous connecter à la page Admin.


0 commentaires

3 Réponses :


0
votes

Il suffit de bloquer tous les autres domaines tels que @ admin.com.

$allowed_domains = array("admin.com");
$email_domain = array_pop(explode("@", $email));
if(!in_array($email_domain, $allowed_domains)) {
    // Not an authorised email 
}


0 commentaires

1
votes

Je prends l'hypothèse que, du côté de la fin de l'arrière, votre application est correctement sécurisée, c'est-à-dire que vous avez des règles de sécurité dans votre base de données qui permettent uniquement aux utilisateurs un profil "admin" / un rôle de lecture ou d'écrire "admin" données dans la base de données.

Si ce n'est pas le cas, vous devez définir des règles de sécurité correctes, car sécuriser votre instance Firebase uniquement à partir d'une perspective frontale n'est pas suffisante , car il n'est pas très difficile d'inverser l'ingénieur de votre application. Code et écrivez du code JavaScript qui interagira avec votre back-end. Pour que vous puissiez utiliser Réclamations personnalisées .

Ainsi, avec cette hypothèse, cela signifie que vous devez adapter votre extrémité avant de telle sorte que les écrans d'administration ne soient vus que par les utilisateurs de l'administration.

L'une des meilleures réponses est à nouveau d'utiliser des revendications personnalisées, comme expliqué ici https://firebase.google.com/docs/auth/admin/custom-claims#access_custom_claims_on_the_client (section" Accédez aux revendications personnalisées sur le client ") et dans cette vidéo de Firebase officielle: https://firebase.google.com/docs/auth/admin/custom-claims#access_custom_claims_on_the_client


Notez que la tentative de bloquer un utilisateur basé sur son domaine de messagerie peut ne pas être une bonne solution car il est facile, dans quelques lignes de code JavaScript, de vous inscrire à votre projet Firebase en tant qu'utilisateur avec un courrier tel que Admin. com ou avec tout autre email (en utilisant CreateUserRserver"> CreateUserWithemailApassword )


0 commentaires

2
votes

Utilisation d'un JavaScript, une solution simple serait de Split The Email CODE> String sur le @ code>, qui vous retournera une matrice de substrings et comparer la deuxième partie qui est le domaine. Ensuite, vous pouvez conditionner le reste de votre code pour fonctionner uniquement si les critères sont true code>.

Un exemple serait le suivant: P>

const allowedEmailDomain = 'admin.com';

const email = 'test@admin.com';

if (email.split('@')[1] === allowedEmailDomain) {
  // do something, we accept this email
} else {
  // return an error or do nothing
}


0 commentaires