я хочу создать многопользовательский логин для моего приложения android - PullRequest
0 голосов
/ 03 мая 2020

Я создал страницу регистрации для пользователя. если пользователь введет данные, он сохранится в базе данных. когда пользователь хочет войти в систему, пользователь идентифицируется с помощью firebase auth. если я нажму имя пользователя и пароль, он будет идентифицировать только пользователя. Я создал административную часть в базе данных без регистрации в приложении и хочу создать отдельный пользовательский интерфейс для администратора.

Я хочу знать, как идентифицировать администратора и пользователя из базы данных, и дать отдельную функцию намерения для пользователь и администратор Вот как его отображение в базе данных я создал административную часть отдельно.

И это код для входа в приложение

public class MainActivity extends AppCompatActivity {

private EditText Name;
private EditText Password;
private Button Login;
private TextView Info;
private int counter = 5;
private TextView userRegistartion;
private FirebaseAuth firebaseAuth;
private ProgressDialog progressDialog;
private TextView forgotPassword;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getSupportActionBar().hide();

    Name = (EditText) findViewById(R.id.etName);
    Password = (EditText) findViewById(R.id.etPassword);
    Login = (Button) findViewById(R.id.btnLogin);
    Info = (TextView) findViewById(R.id.tvInfo);
    userRegistartion = (TextView) findViewById(R.id.tvRegister);
    forgotPassword = (TextView) findViewById(R.id.tvForgotPassword);

    Info.setText("No of attempts remaining: 5");

    //Instance for Firebase authentication forApp
    firebaseAuth = FirebaseAuth.getInstance();

    progressDialog = new ProgressDialog(this);

    //checking in database if user already login or not
    FirebaseUser user = firebaseAuth.getCurrentUser();

    //if user already logged in move to next activity
    if(user != null){
        finish();
        startActivity(new Intent(MainActivity.this, AdminHome.class));
    }

    Login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            validate(Name.getText().toString().trim(), Password.getText().toString().trim());

        }
    });

    userRegistartion.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(MainActivity.this, Registration.class));
        }
    });

    forgotPassword.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            startActivity(new Intent(MainActivity.this, PasswordActivity.class));
        }
    });
}

//Declaring User name and Password
private void validate (String userName, String userPassword){

    progressDialog.setMessage("Please wait till you are verified!");
    progressDialog.setCanceledOnTouchOutside(false);
    progressDialog.setCancelable(false);
    progressDialog.show();

    firebaseAuth.signInWithEmailAndPassword(userName, userPassword).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
        @Override
        public void onComplete(@NonNull Task<AuthResult> task) {
            if (task.isSuccessful()){
                progressDialog.dismiss();
                checkEmailVerification();
            }else{
                Toast.makeText(MainActivity.this, "Login Failed", Toast.LENGTH_SHORT).show();
                counter--;
                Info.setText("No of attempts remaining: " + counter);
                progressDialog.dismiss();
                if (counter == 0){
                    Login.setEnabled(false);
                }
            }
        }
    });
}

//verifying email
private void checkEmailVerification(){
    FirebaseUser firebaseUser = firebaseAuth.getInstance() .getCurrentUser();
    Boolean emailflag = firebaseUser.isEmailVerified();

    startActivity(new Intent(MainActivity.this, AdminHome.class));

    /*if (emailflag){
        finish();
        startActivity(new Intent(MainActivity.this, Hone.class));
    }else{
        Toast.makeText(this, "Verify your email", Toast.LENGTH_SHORT).show();
        firebaseAuth.signOut();
    }*/
}

@Override
public void onBackPressed() {

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Are you sure you want to Exit?")
            .setCancelable(false)
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                    MainActivity.super.onBackPressed();
                }
            })

            .setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                }
            });

    AlertDialog alertDialog = builder.create();
    alertDialog.show();
}

}

я хочу создать намерение для администратора, как я могу создать его в этом коде и где я должен его изменить ??

И это также ошибка, когда пользователь нажимает кнопку входа в систему, не вводя ничего, приложение закрывается. В чем ошибка ??

Вот как это отображается, когда кнопка клики

E/AndroidRuntime: FATAL EXCEPTION: main<br>
    Process: com.example.lms, PID: 14769<br>
    java.lang.IllegalArgumentException: Given String is empty or null<br>
        at com.google.android.gms.common.internal.Preconditions.checkNotEmpty(Unknown Source:5)<br>
        at com.google.firebase.auth.FirebaseAuth.signInWithEmailAndPassword(com.google.firebase:firebase-auth@@19.3.0:205)<br>
        at com.example.lms.MainActivity.validate(MainActivity.java:98)<br>
        at com.example.lms.MainActivity.access$200(MainActivity.java:25)<br>
        at com.example.lms.MainActivity$1.onClick(MainActivity.java:70)<br>
        at android.view.View.performClick(View.java:6597)<br>
        at android.view.View.performClickInternal(View.java:6574)<br>
        at android.view.View.access$3100(View.java:778)<br>
        at android.view.View$PerformClick.run(View.java:25885)<br>
        at android.os.Handler.handleCallback(Handler.java:873)<br>
        at android.os.Handler.dispatchMessage(Handler.java:99)<br>
        at android.os.Looper.loop(Looper.java:193)<br>
        at android.app.ActivityThread.main(ActivityThread.java:6669)<br>
        at java.lang.reflect.Method.invoke(Native Method)<br>
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)<br>
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)<br>

Ответы [ 2 ]

0 голосов
/ 03 мая 2020

Пусть этот код поможет вам. Вы должны поставить проверочные проверки.

Login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
             if (Name.getText().toString().equals("")){
                    Email.setError("Please Enter Vaild Email");   
                }else if (Password.getText().toString().equals("")){
                    Password.setError("Please Enter Password");
                }else {
                validate(Name.getText().toString().trim(), Password.getText().toString().trim());
                }
            }
        });
0 голосов
/ 03 мая 2020

Изменить

 Login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            validate(Name.getText().toString().trim(), Password.getText().toString().trim());

        }
    });

на

 Login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
             if (Name.getText().toString().equals("")){
                    Email.setError("Please Enter Email");   
                }else if (Password.getText().toString().equals("")){
                    Password.setError("Please Enter Password");
                }else {
                validate(Name.getText().toString().trim(), Password.getText().toString().trim());
                }
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...