The easiest way to control what experience each user sees based off a pre-existing list of "Admin" and "Premium" users would probably be with custom claims.
If you are just using the standard Firebase login, the way to do this would be with the Admin SDK.
If you want to validate users as they sign up, you'll want to use custom login system to control signups. You can also set the custom claims from there.
Once the user is logged in, you can then redirect them to the correct page.
firebase.auth().signInWithEmailAndPassword(email, password)
.catch(function(error) {
// Handle Errors here.
}).then(function(){
firebase.auth().currentUser.getIdToken()
.then((idToken) => {
// Parse the ID token.
const payload = JSON.parse(b64DecodeUnicode(idToken.split('.')[1]));
// Confirm the user is an Admin.
if (!!payload['admin']) {
redirectAdminUI();
}
})
.catch((error) => {
console.log(error);
});