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 ®is 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;
}
}
Step 1:splash_screen.xml&java
Step 2:login & fargot ®is 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
Post a Comment