I'm creating a app where I should be able of managing users access. The admin should have permissions of creating, deleting and editing users accounts.
I'm using firebase for creating users account.
Right now individually users can creating, editing and delete their accounts, but the problem is that the admin should do that, and not just the users.
import 'dart:async';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/services.dart';
import 'package:google_sign_in/google_sign_in.dart';
class UserLoader {
final FirebaseAuth _auth = FirebaseAuth.instance;
final GoogleSignIn googleSIgnIn = new GoogleSignIn();
static final UserLoader _singleton = new UserLoader._internal();
FirebaseUser user;
factory UserLoader() {
return _singleton;
}
UserLoader._internal();
Future<FirebaseUser> signInWithEmailAndPassword(email, password) async {
if (user != null) return user;
_signInAnonymously().then((value) {
if (value != null) {
user = value;
}
}).catchError((e) {
return null;
});
if (user == null) {
FirebaseUser user = await _auth.signInWithEmailAndPassword(
email: email, password: password).catchError(
(onError)
{
print(onError);
});
return user;
} else {
return null;
}
}
Future<FirebaseUser> signInWithGoogle() async {
if (user != null) return user;
_signInAnonymously().then((value) {
if (value != null) {
user = value;
}
}).catchError((e) {
print(e.toString());
});
if (user == null) {
GoogleSignInAccount googleSignInAccount = await googleSIgnIn.signIn();
GoogleSignInAuthentication gSA = await googleSignInAccount.authentication;
FirebaseUser user = await _auth.signInWithGoogle(
idToken: gSA.idToken, accessToken: gSA.accessToken);
return user;
} else {
return null;
}
}
Future<FirebaseUser> _signInAnonymously() async {
if (user != null) return user;
user = await _auth.signInAnonymously();
return user;
}
Future signOut() async {
await _auth.signOut();
await googleSIgnIn.signOut();
user = null;
}
Future changePassword(email) async{
await _auth.sendPasswordResetEmail(email: email);
}
Future createNewUser(email){
_auth.createUserWithEmailAndPassword(email: email, password: "new_pass");
}
Future deleteUser(FirebaseUser firebaseUser){
firebaseUser.delete();
}
}
I think that Firebase Admin should do the trick but I'm not sure.