package Ġcom . example . shop it . ui . login Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . example . shop it . MainActivity Ċ import Ġcom . example . shop it . R Ċ import Ġcom . example . shop it . ui . reset . Reset Activity Ċ import Ġcom . example . shop it . ui . signup . Signup Activity Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . k tx . auth Ċ import Ġcom . google . firebase . k tx . Firebase Ċ Ċ class ĠLogin Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ// firebase ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġauth : ĠFirebase Auth ĊĊĠĠĠ Ġ// Add ĠUI Ġelements Ġas Ġvariables Ġwith Ġtypes Ġof Ġthe Ġelements ĊĠĠĠ Ġlateinit Ġvar Ġemail TextInput : ĠEditText ĊĠĠĠ Ġlateinit Ġvar Ġpassword TextInput : ĠEditText ĊĠĠĠ Ġlateinit Ġvar Ġlogin Button : ĠButton ĊĠĠĠ Ġlateinit Ġvar Ġsignup Button : ĠButton ĊĠĠĠ Ġlateinit Ġvar Ġreset Button : ĠButton ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . ac it v ity _ login ) ĊĊĠĠĠĠĠĠĠ Ġ// firebase ĊĠĠĠĠĠĠĠ Ġauth Ġ= ĠFirebase . auth ĊĊĠĠĠĠĠĠĠ Ġ// init il ise Ġthe Ġvariables ĊĠĠĠĠĠĠĠ Ġemail TextInput Ġ= ĠfindViewById ( R . id . login _ email _ input ) ĊĠĠĠĠĠĠĠ Ġpassword TextInput Ġ= ĠfindViewById ( R . id . login _ password _ input ) ĊĠĠĠĠĠĠĠ Ġlogin Button Ġ= ĠfindViewById ( R . id . login _ login _ button ) ĊĠĠĠĠĠĠĠ Ġsignup Button Ġ= ĠfindViewById ( R . id . login _ signup _ button ) ĊĠĠĠĠĠĠĠ Ġreset Button Ġ= ĠfindViewById ( R . id . login _ reset _ password _ button ) ĊĊĠĠĠĠĠĠĠ Ġlogin Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdid Click Login () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsignup Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// transition Ġto Ġsignup Ġscreen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠSign up Activity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// note Ġhow Ġthese Ġdont Ġsay Ġfinish , Ġthis Ġis Ġso Ġthe Ġuser Ġcan Ġpress Ġback Ġand Ġbe Ġreturned Ġto Ġthe Ġlogin Ġscreen . ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreset Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// transition Ġto Ġreset Ġscreen ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠReset Activity :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdid Click Login (){ ĊĠĠĠĠĠĠĠ Ġif Ġ( validate Email () Ġ&& Ġvalidate Password ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// transition Ġto Ġhome Ġpage ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġauth . signIn With Email And Password ( email TextInput . text . toString (), Ġpassword TextInput . text . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener ( this ) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSign Ġin Ġsuccess , Ġupdate ĠUI Ġwith Ġthe Ġsigned - in Ġuser 's Ġinformation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" signIn With Email : success ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġauth . currentUser ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠMainActivity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġsign Ġin Ġfails , Ġdisplay Ġa Ġmessage Ġto Ġthe Ġuser . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" signIn With Email : failure ", Ġtask . exception ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( base Context , Ġ" Authentication Ġfailed . ĠPlease Ġtry Ġagain Ġlater ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Email (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġemail Ġ= Ġemail TextInput . text . toString () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( email . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail TextInput . error Ġ= Ġ" Please Ġenter Ġemail Ġaddress !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! android . util . Patterns . EMAIL _ ADDRESS . matcher ( email ). matches ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail TextInput . error Ġ= Ġ" Please Ġcheck Ġyour Ġemail !" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Password (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġpassword TextInput . text . toString () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword . isEmpty () Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword TextInput . error Ġ= Ġ" Please Ġenter Ġpassword !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword . length Ġ<= Ġ 8 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword TextInput . error Ġ= Ġ" Check ĠPassword ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġuser Ġis Ġsigned Ġin Ġ( non - null ) Ġand Ġupdate ĠUI Ġaccordingly . ĊĠĠĠĠĠĠĠ Ġval ĠcurrentUser Ġ= Ġauth . currentUser ĊĠĠĠĠĠĠĠ Ġif ( currentUser Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" User Ġis Ġalready Ġlogged Ġin Ġ(${ currentUser . uid }) ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠMainActivity :: class . java )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Shop It - Login Activity " ĊĠĠĠ Ġ} Ċ }