如何在Firebase Android应用程序中分隔两个不同的用户? [英] How to separate two different user in firebase android app?

查看:59
本文介绍了如何在Firebase Android应用程序中分隔两个不同的用户?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个具有两种不同类型用户的应用程序,一种是教师",另一种是普通用户.如果普通成员登录,则将转到normal_memberActivity;如果是教师成员,则将转到Teacher_memberActivity.如何在loginActivity中做到这一点?

I have an application with two different types of users one as Teacher and the Second a normal user. if a normal member logs in, he will go to normal_memberActivity and if he's a Teacher member, he'll go to Teacher_memberActivity. How do I do this in loginActivity?

我的Firebase结构:

My Firebase structure:

这是数据库Firebase规则

this is database firebase rules

 { 
   "rules": {
  ".read": true,

  ".write":true}

}

推荐答案

我已经解决了一个星期的问题.很抱歉,上述提议的解决方案有点误导.因此,我对此有一个更好的解决方案,它的101%可行!

i have been solving this problem for a week. I'm sorry to say the solution proposed above is kinda misleading. Thus, i have a better solution for this, and its 101% workable !

首先,这是我在Firebase中的实时数据库: 我为创建的每种用户类型创建了一个子类型. 然后,在类型"子项的值内,我将卖方帐户设置为1,将买方帐户设置为2.

First, this is my real-time database in Firebase: I created a child "type" for each type of users created. Then, i set seller's account as 1 and buyer's account as 2 inside the "type" child's value.

第二,在我成功验证了登录详细信息之后. 在那一刻,我使用firebase实时数据快照根据当前用户的身份提取类型值. UID,然后验证值等于1还是2.最后,我能够根据用户类型启动活动.

Second, after i successfully verified the login details. At that particular moment, i use the firebase real-time datasnapshot to pull the type value based on the current user's UID, then i verified whether is the value is equal to 1 or 2. Finally i able to start the activity based on the type of user.

帐户创建代码:

private void registerUser() {
    progressDialog = new ProgressDialog(this);
    String email = editTextEmail.getText().toString().trim();
    String password = editTextPassword.getText().toString().trim();
    if (TextUtils.isEmpty(email)) {
        Toast.makeText(this, "Please Enter Emailsss", Toast.LENGTH_SHORT).show();
        return;
    }
    if (TextUtils.isEmpty(password)) {
        Toast.makeText(this, "Please Enter Your PASSWORDS", Toast.LENGTH_SHORT).show();
        return;
    }

    progressDialog.setMessage("Registering User Statement..");
    progressDialog.show();


    //Firebase authentication (account save)
    firebaseAuth.createUserWithEmailAndPassword(email, password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    if (task.isSuccessful()) {
                        //user already logged in
                        //start the activity
                        finish();
                        onAuthSuccess(task.getResult().getUser());
                       // startActivity(new Intent(getApplicationContext(), MainActivity.class));

                    } else {
                        Toast.makeText(signupActivity.this, "Could not registered , bullcraps", Toast.LENGTH_SHORT).show();

                    }
                    progressDialog.dismiss();

                }
            });
}
private void onAuthSuccess(FirebaseUser user) {
    //String username = usernameFromEmail(user.getEmail());


    // Write new user
    writeNewUser(user.getUid(), toggle_val, user.getEmail());

    // Go to MainActivity
    startActivity(new Intent(signupActivity.this, MainActivity.class));
    finish();
}

private void writeNewUser(String userId, int type, String email) {
    User user = new User(Integer.toString(type), email);
    if (type == 1){
        mDatabase.child("users").child(userId).setValue(user);
    }
    else {
        mDatabase.child("users").child(userId).setValue(user);
    }
    }
    if (toggleBut.isChecked()){
        toggle_val = 2;
        //Toast.makeText(signupActivity.this, "You're Buyer", Toast.LENGTH_SHORT).show();
    }
    else{
        toggle_val = 1;
        //Toast.makeText(signupActivity.this, "You're Seller", Toast.LENGTH_SHORT).show();
    }

登录帐户代码:

 private void userLogin () {
    String email = editTextEmail.getText().toString().trim();
    String password = editTextPassword.getText().toString().trim();

    if(TextUtils.isEmpty(email)){
        Toast.makeText(this, "Please Enter Emailsss", Toast.LENGTH_SHORT).show();
        return;
    }
    if(TextUtils.isEmpty(password)){
        Toast.makeText(this, "Please Enter Your PASSWORDS", Toast.LENGTH_SHORT).show();
        return;
    }

    progressDialog.setMessage("Login....");
    progressDialog.show();

    firebaseAuth.signInWithEmailAndPassword(email,password)
            .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                @Override
                public void onComplete(@NonNull Task<AuthResult> task) {
                    progressDialog.dismiss();
                    if(task.isSuccessful()){
                        onAuthSuccess(task.getResult().getUser());
                        //Toast.makeText(signinActivity.this, "Successfully Signed In", Toast.LENGTH_SHORT).show();
                    }
                    else {
                        Toast.makeText(signinActivity.this, "Could not login, password or email wrong , bullcraps", Toast.LENGTH_SHORT).show();
                    }
                }
            });
}

private void onAuthSuccess(FirebaseUser user) {

    //String username = usernameFromEmail(user.getEmail())
    if (user != null) {
        //Toast.makeText(signinActivity.this, user.getUid(), Toast.LENGTH_SHORT).show();
        ref = FirebaseDatabase.getInstance().getReference().child("users").child(user.getUid()).child("type");
        ref.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                String value = dataSnapshot.getValue(String.class);
                //for(DataSnapshot snapshot : dataSnapshot.getChildren()){
                   // Toast.makeText(signinActivity.this, value, Toast.LENGTH_SHORT).show();
                    if(Integer.parseInt(value) == 1) {
                        //String jason = (String) snapshot.getValue();
                        //Toast.makeText(signinActivity.this, jason, Toast.LENGTH_SHORT).show();
                        startActivity(new Intent(signinActivity.this, MainActivity.class));
                        Toast.makeText(signinActivity.this, "You're Logged in as Seller", Toast.LENGTH_SHORT).show();
                        finish();
                    } else {
                        startActivity(new Intent(signinActivity.this, BuyerActivity.class));
                        Toast.makeText(signinActivity.this, "You're Logged in as Buyer", Toast.LENGTH_SHORT).show();
                        finish();
                    }
                }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }

    }

这篇关于如何在Firebase Android应用程序中分隔两个不同的用户?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆