Login_regis_Fargot_Session mangaer firebase

//session manager ie varam var login na karvu pde  ie aano use tar che

Step 1:splash_screen.xml&java
Step 2:login & fargot &regis only.xml
Step 3:lfr xml & java file
//aama step 2 ni xml and java ma aeno code tse
Step 4:Session manager only java
Step 5:User only java
Step 6:Common only java
Step 7:dependacy and manifest ma permission
Step 8:drawe activity lai ne logout kre devu Intent aapi ne
logout krishu ie frethi login karvu padse

Step 1:splash.xml
Step 1:splash.java

public class MainActivity extends AppCompatActivity {

    // Session Manager Class
    SessoinManager session;

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

        // Session Manager
        session = new SessoinManager(getApplicationContext());

        if (session.isLoggedIn()) {
            Intent intent = new Intent(MainActivity.this,Main2Activity.class);
            startActivity(intent);
            finish();
        }
        else {
            Intent intent = new Intent(MainActivity.this, MainActivity.class);
            startActivity(intent);
            finish();
        }


        new Thread(){
            public void run(){
                try{
                    sleep(3000);
                    Intent i=new Intent(MainActivity.this,loginRF.class);
                    startActivity(i);
                    finish();
                }

                catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
        }.start();
    }
}

Step 2:login.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">


        <EditText
            android:id="@+id/edtEmail"
            android:hint="Email"
            android:inputType="textEmailAddress"
            android:text=""
            android:textColor="@color/colorPrimary"
            android:textColorHint="@color/colorPrimary"
            android:textSize="20sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText
            android:id="@+id/edtPassword"
            android:hint="Password"
            android:inputType="textPassword"
            android:text=""
            android:textColor="@color/colorPrimary"
            android:textColorHint="@color/colorPrimary"
            android:textSize="20sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

</LinearLayout>

Step 2:registration.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">




        <EditText
            android:id="@+id/edtEmail"
            android:hint="Email"
            android:inputType="textEmailAddress"
            android:text=""
            android:textColor="@color/colorPrimary"
            android:textColorHint="@color/colorPrimary"
            android:textSize="20sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

        <EditText

            android:id="@+id/edtPassword"
            android:hint="Password"
            android:inputType="textPassword"
            android:text=""
            android:textColor="@color/colorPrimary"
            android:textColorHint="@color/colorPrimary"
            android:textSize="20sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>


        <EditText
            android:id="@+id/edtName"
            android:hint="Name"
            android:inputType="textPersonName"
            android:text=""
            android:textColor="@color/colorPrimary"
            android:textColorHint="@color/colorPrimary"
            android:textSize="20sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />

        <EditText
            android:id="@+id/edtPhone"
            android:hint="Phone"
            android:inputType="phone"
            android:text=""
            android:textColor="@color/colorPrimary"
            android:textColorHint="@color/colorPrimary"
            android:textSize="20sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />


</LinearLayout>

Step 2:fargot.xml

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">

    <android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:id="@+id/edtEmail"
            android:hint="Email"
            android:inputType="textEmailAddress"
            android:text=""
            android:textColor="@color/colorPrimary"
            android:textColorHint="@color/colorPrimary"
            android:textSize="20sp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </android.support.design.widget.TextInputLayout>
</LinearLayout>

Step 3:lfr.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/rootLayout"
    android:background="#000000"
    tools:context="demoproject.aalap.com.ppp.loginRF">



    <LinearLayout
        android:orientation="vertical"
        android:layout_marginTop="30dp"
        android:layout_centerHorizontal="true"
        android:gravity="center_horizontal"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

        <TextView
            android:text="U B E R"
            android:textSize="36sp"
            android:textAlignment="center"
            android:textColor="#ddfce515"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:text="PARTNER"
            android:textSize="16sp"
            android:layout_marginTop="20dp"
            android:textAlignment="center"
            android:textColor="#ddfce515"
            android:textStyle="bold"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

    <TextView
        android:id="@+id/txt_forgot_password"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:layout_marginBottom="20dp"
        android:text="FORGOT PASSWORD?"
        android:textSize="12sp"
        android:textColor="#ddfce515"
        android:textAlignment="center"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:orientation="horizontal"
        android:weightSum="2"
        android:layout_above="@id/txt_forgot_password"
        android:layout_margin="16dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <Button
            android:id="@+id/btnSignIn"
            android:background="#1bcccc"
            android:textColor="#ffffff"
            android:text="SIGN IN"
            android:layout_marginRight="6dp"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content" />

        <Button
            android:id="@+id/btnRegister"
            android:background="#ffffff"
            android:textColor="#000000"
            android:text="REGISTER"
            android:layout_marginLeft="6dp"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content" />

    </LinearLayout>
</RelativeLayout>

Step 3:lfr.java

public class loginRF extends AppCompatActivity {

    Button btnSignIn,btnRegister;
    EditText edtEmail,edtPassword,edtName,edtPhone;
    String strEmail,strPassword,strName,strPhone;
    RelativeLayout rootLayout;

    FirebaseAuth auth;
    FirebaseDatabase db;
    DatabaseReference users;
    private SessoinManager session;
    TextView txt_forgot_pwd;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_rf);
        //Init PaperDb
        session = new SessoinManager(getApplicationContext());


        //Init PaperDb
        //Paper.init(this);

        //Init Firebase
        auth = FirebaseAuth.getInstance();
        db = FirebaseDatabase.getInstance();
        users = db.getReference(Common.user_driver_tbl);

        //Init View
        btnSignIn = findViewById(R.id.btnSignIn);
        btnRegister = findViewById(R.id.btnRegister);
        rootLayout = findViewById(R.id.rootLayout);

        txt_forgot_pwd =findViewById(R.id.txt_forgot_password);

        //Event
        btnRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showRegisterDialog();
            }
        });

        btnSignIn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showLoginDialog();
            }
        });

        txt_forgot_pwd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showDialogForgotPwd();
            }
        });

    }

    private void autoLogin(String user, String pwd) {

        final android.app.AlertDialog waitingDialog = new ProgressDialog(loginRF.this);
        waitingDialog.show();

        //Login
        auth.signInWithEmailAndPassword(user,pwd).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
            @Override
            public void onSuccess(AuthResult authResult) {
                waitingDialog.dismiss();

                FirebaseDatabase.getInstance().getReference(Common.user_driver_tbl)
                        .child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                        .addListenerForSingleValueEvent(new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot) {
                                //after assigned value
                                Common.currentUser=dataSnapshot.getValue(User.class);

                                Snackbar.make(rootLayout," !!!",Snackbar.LENGTH_SHORT).show();
                                //start new activity
                                startActivity(new Intent(loginRF.this,loginRF.class));
                                waitingDialog.dismiss();
                                finish();
                            }

                            @Override
                            public void onCancelled(DatabaseError databaseError) {

                            }
                        });

            }
        }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                waitingDialog.dismiss();
                Snackbar.make(rootLayout,"Failed "+e.getMessage(),Snackbar.LENGTH_SHORT).show();

                //Active Button
                btnSignIn.setEnabled(true);
            }
        });
    }

    private void showDialogForgotPwd() {
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
        alertDialog.setTitle("FORGOT PASSWORD");
        alertDialog.setMessage("Please enter your email address");

        LayoutInflater inflater =LayoutInflater.from(this);
        View forgot_pwd_layout = inflater.inflate(R.layout.fargot,null);

        edtEmail = (EditText)forgot_pwd_layout.findViewById(R.id.edtEmail);

        alertDialog.setView(forgot_pwd_layout);

        alertDialog.setPositiveButton("RESET", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(final DialogInterface dialogInterface, int i) {
                final android.app.AlertDialog waitingDialog = new ProgressDialog(loginRF.this);
                waitingDialog.show();

                auth.sendPasswordResetEmail(edtEmail.getText().toString().trim())
                        .addOnCompleteListener(new OnCompleteListener<Void>() {
                            @Override
                            public void onComplete(@NonNull Task<Void> task) {
                                dialogInterface.dismiss();
                                waitingDialog.dismiss();
                                Snackbar.make(rootLayout,"Reset password link has been sent.",Snackbar.LENGTH_SHORT).show();

                            }
                        }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        dialogInterface.dismiss();
                        waitingDialog.dismiss();
                        Snackbar.make(rootLayout,""+e.getMessage(),Snackbar.LENGTH_SHORT).show();

                    }
                });
            }
        });
        alertDialog.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });

        alertDialog.show();
    }

    private void showLoginDialog() {
        AlertDialog.Builder dialog = new AlertDialog.Builder(this);
        dialog.setTitle("SIGN IN");
        dialog.setMessage("Please use email to sign in");

        LayoutInflater inflater =LayoutInflater.from(this);
        View login_layout = inflater.inflate(R.layout.login,null);

        edtEmail = (EditText)login_layout.findViewById(R.id.edtEmail);
        edtPassword = (EditText)login_layout.findViewById(R.id.edtPassword);

        dialog.setView(login_layout);

        //Set Button
        dialog.setPositiveButton("SIGN IN", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                dialogInterface.dismiss();

                strEmail = edtEmail.getText().toString();
                strPassword = edtPassword.getText().toString();

                final android.app.AlertDialog waitingDialog = new ProgressDialog(loginRF.this);
                waitingDialog.show();

                //Login
                auth.signInWithEmailAndPassword(strEmail,strPassword).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
                    @Override
                    public void onSuccess(AuthResult authResult) {
                        waitingDialog.dismiss();

                        //Fetch data and save to variables
                        FirebaseDatabase.getInstance().getReference(Common.user_driver_tbl)
                                .child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                                .addListenerForSingleValueEvent(new ValueEventListener() {
                                    @Override
                                    public void onDataChange(DataSnapshot dataSnapshot) {
                                       session.createLoginSession(strEmail, strPassword);
                                        //Save value
                                        // Paper.book().write(Common.user_field,edtEmail.getText().toString());
                                        //Paper.book().write(Common.pwd_field,edtPassword.getText().toString());

                                        //after assigned value
                                        Common.currentUser=dataSnapshot.getValue(User.class);


                                        //start new activity
                                        startActivity(new Intent(loginRF.this, Main2Activity.class));
                                        finish();
                                    }

                                    @Override
                                    public void onCancelled(DatabaseError databaseError) {

                                    }
                                });

                    }
                }).addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        waitingDialog.dismiss();
                        Snackbar.make(rootLayout,"Failed "+e.getMessage(),Snackbar.LENGTH_SHORT).show();

                        //Active Button
                        btnSignIn.setEnabled(true);
                    }
                });
            }
        });

        dialog.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                dialogInterface.dismiss();
            }
        });

        dialog.show();
    }

    private void showRegisterDialog() {
        AlertDialog.Builder dialog = new AlertDialog.Builder(this);
        dialog.setTitle("REGISTER");
        dialog.setMessage("Please use email to register");

        LayoutInflater inflater =LayoutInflater.from(this);
        View register_layout = inflater.inflate(R.layout.registration,null);

        edtEmail = (EditText) register_layout.findViewById(R.id.edtEmail);
        edtPassword =(EditText) register_layout.findViewById(R.id.edtPassword);
        edtName = (EditText)register_layout.findViewById(R.id.edtName);
        edtPhone = (EditText)register_layout.findViewById(R.id.edtPhone);

        dialog.setView(register_layout);

        //Set Button
        dialog.setPositiveButton("REGISTER", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                dialogInterface.dismiss();
                strEmail = edtEmail.getText().toString();
                strPhone = edtPhone.getText().toString();
                strPassword = edtPassword.getText().toString();
                strName = edtName.getText().toString();
                //Check Validation
                if (TextUtils.isEmpty(strEmail))
                {
                    Snackbar.make(rootLayout,"Please enter email address",Snackbar.LENGTH_SHORT).show();
                    return;
                }

                if (TextUtils.isEmpty(strPhone))
                {
                    Snackbar.make(rootLayout,"Please enter phone number",Snackbar.LENGTH_SHORT).show();
                    return;
                }

                if (TextUtils.isEmpty(strPassword))
                {
                    Snackbar.make(rootLayout,"Please enter password",Snackbar.LENGTH_SHORT).show();
                    return;
                }

                if (strPassword.length() < 6)
                {
                    Snackbar.make(rootLayout,"Password to short !!!",Snackbar.LENGTH_SHORT).show();
                    return;
                }

                //Register New User
                auth.createUserWithEmailAndPassword(strEmail, strPassword).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
                    @Override
                    public void onSuccess(AuthResult authResult) {
                        //Save user to db
                        User user = new User();
                        user.setEmail(strEmail);
                        user.setName(strName);
                        user.setPhone(strPhone);
                        user.setPassword(strPassword);

                        //Use email to primary key
                        users.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                                .setValue(user)
                                .addOnSuccessListener(new OnSuccessListener<Void>() {
                                    @Override
                                    public void onSuccess(Void aVoid) {
                                        //after assigned value

                                        Snackbar.make(rootLayout,"Register successfully !!!",Snackbar.LENGTH_SHORT).show();
                                    }
                                })
                                .addOnFailureListener(new OnFailureListener() {
                                    @Override
                                    public void onFailure(@NonNull Exception e) {
                                        Snackbar.make(rootLayout,"Failed "+e.getMessage(),Snackbar.LENGTH_SHORT).show();
                                    }
                                });
                    }
                })
                        .addOnFailureListener(new OnFailureListener() {
                            @Override
                            public void onFailure(@NonNull Exception e) {
                                Snackbar.make(rootLayout,"Failed "+e.getMessage(),Snackbar.LENGTH_SHORT).show();
                            }
                        });
            }
        });

        dialog.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                dialogInterface.dismiss();
            }
        });

        dialog.show();
    }
}



Step 4:Session manager.java

public class SessoinManager {
    // Shared Preferences
    private SharedPreferences pref;

    // Editor for Shared preferences
    private SharedPreferences.Editor editor;

    // Context
    private Context _context;

    // Shared pref mode
    private int PRIVATE_MODE = 0;

    // Sharedpref file name
    private static final String PREF_NAME = "Pref";

    // All Shared Preferences Keys
    private static final String IS_LOGIN = "IsLoggedIn";

    // Email address (make variable public to access from outside)
    public static final String KEY_USERNAME = "username";

    // Email address (make variable public to access from outside)
    public static final String KEY_PASSWORD = "password";

    // Constructor
    public SessoinManager(Context context){
        this._context = context;
        pref = _context.getSharedPreferences(PREF_NAME, PRIVATE_MODE);
        editor = pref.edit();
    }

    /**
     * Create login session
     * */
    public void createLoginSession(String username, String password){
        // Storing login value as TRUE
        editor.putBoolean(IS_LOGIN, true);

        // Storing username in pref
        editor.putString(KEY_USERNAME, username);

        // Storing password in pref
        editor.putString(KEY_PASSWORD, password);

        // commit changes
        editor.commit();
    }

    /**
     * Check login method wil check user login status
     * If false it will redirect user to login page
     * Else won't do anything
     * */
    public void checkLogin(){
        // Check login status
        if(!this.isLoggedIn()){
            // user is not logged in redirect him to Login Activity
            //Intent i = new Intent(_context, SignInActivity.class);
            // Closing all the Activities
            //i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

            // Add new Flag to start new Activity
            //i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

            // Staring Login Activity
            //_context.startActivity(i);
        }

    }

    /**
     * Get stored session data
     * */
    public HashMap<String, String> getUserDetails(){
        HashMap<String, String> user = new HashMap<String, String>();

        // username
        user.put(KEY_USERNAME, pref.getString(KEY_USERNAME, null));

        // mobile
        user.put(KEY_PASSWORD, pref.getString(KEY_PASSWORD,null));

        // return user
        return user;
    }


    /**
     * Clear session details
     * */
    public void logoutUser(){
        // Clearing all data from Shared Preferences
        editor.clear();
        editor.commit();

        // After logout redirect user to Loing Activity
        Intent i = new Intent(_context, loginRF.class);
        // Closing all the Activities
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        // Add new Flag to start new Activity
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        // Staring Login Activity
        _context.startActivity(i);
    }

    /**
     * Quick check for login
     * **/
    // Get Login State
    public boolean isLoggedIn(){
        return pref.getBoolean(IS_LOGIN, false);
    }
}

Step 5:Common.java

public class Common {

    public static final String driver_tbl="Drivers";
    public static final String user_driver_tbl="DriversInformation";
    public static final String user_rider_tbl="RidersInformation";
    public static final String pickup_request_tbl="PickupRequest";
    public static final String token_tbl="Tokens";

    public static final int PICK_IMAGE_REQUEST=9999;

    public static User currentUser;

    public static Location mLastLocation=null;

    public static final String baseURL = "https://maps.googleapis.com";
    public static final String fcmURL = "https://fcm.googleapis.com/";

    public static final String user_field = "usr";
    public static final String pwd_field = "pwd";

    public static double base_fare = 2.55;     //Base on uber fee on newyork
    private static double time_rate = 0.35;
    private static double distance_rate = 1.75;

    public static double formulaPrice(double km, int min)
    {
        return (base_fare+(time_rate*min)+(distance_rate*km));
    }

    // public static IGoogleAPI getGoogleAPI()
    //{
    //    return RetrofitClient.getClient(baseURL).create(IGoogleAPI.class);
    //}

    //public static IFCMService getFCMService()
    //{
    //  return FCMClient.getClient(fcmURL).create(IFCMService.class);
    //}
}

Step 6:User.java

public class User {
    private String email;
    private String password;
    private String name;
    private String phone;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }
}

Comments

Popular posts from this blog

Seaborn

Json_ login