From 3bad43e3a56fa57ad70e2b3bda3bdc3eb5e23ae1 Mon Sep 17 00:00:00 2001 From: Marijn Jansen Date: Thu, 15 Jun 2017 12:48:13 +0200 Subject: [PATCH] LogIn and register works! --- app/MyHyvesBookPlusStagram/app/build.gradle | 2 + .../stagram/ExampleInstrumentedTest.java | 26 --- .../app/src/main/AndroidManifest.xml | 7 +- .../myhyvesbookplus/tagram/LoginActivity.java | 190 ++++++++++++++++++ .../{stagram => tagram}/MainActivity.java | 20 +- .../src/main/res/layout/activity_login.xml | 105 ++++++++++ .../app/src/main/res/layout/activity_main.xml | 2 +- .../app/src/main/res/values/colors.xml | 6 +- .../app/src/main/res/values/strings.xml | 2 +- .../stagram/ExampleUnitTest.java | 17 -- 10 files changed, 317 insertions(+), 60 deletions(-) delete mode 100644 app/MyHyvesBookPlusStagram/app/src/androidTest/java/nl/myhyvesbookplus/stagram/ExampleInstrumentedTest.java create mode 100644 app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/LoginActivity.java rename app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/{stagram => tagram}/MainActivity.java (65%) create mode 100644 app/MyHyvesBookPlusStagram/app/src/main/res/layout/activity_login.xml delete mode 100644 app/MyHyvesBookPlusStagram/app/src/test/java/nl/myhyvesbookplus/stagram/ExampleUnitTest.java diff --git a/app/MyHyvesBookPlusStagram/app/build.gradle b/app/MyHyvesBookPlusStagram/app/build.gradle index e58b3f0..c86ed28 100644 --- a/app/MyHyvesBookPlusStagram/app/build.gradle +++ b/app/MyHyvesBookPlusStagram/app/build.gradle @@ -28,9 +28,11 @@ dependencies { compile 'com.android.support:design:25.3.1' compile 'com.google.firebase:firebase-database:10.0.1' compile 'com.google.firebase:firebase-auth:10.0.1' + compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' } + apply plugin: 'com.google.gms.google-services' \ No newline at end of file diff --git a/app/MyHyvesBookPlusStagram/app/src/androidTest/java/nl/myhyvesbookplus/stagram/ExampleInstrumentedTest.java b/app/MyHyvesBookPlusStagram/app/src/androidTest/java/nl/myhyvesbookplus/stagram/ExampleInstrumentedTest.java deleted file mode 100644 index 4f07f13..0000000 --- a/app/MyHyvesBookPlusStagram/app/src/androidTest/java/nl/myhyvesbookplus/stagram/ExampleInstrumentedTest.java +++ /dev/null @@ -1,26 +0,0 @@ -package nl.myhyvesbookplus.stagram; - -import android.content.Context; -import android.support.test.InstrumentationRegistry; -import android.support.test.runner.AndroidJUnit4; - -import org.junit.Test; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -/** - * Instrumentation test, which will execute on an Android device. - * - * @see Testing documentation - */ -@RunWith(AndroidJUnit4.class) -public class ExampleInstrumentedTest { - @Test - public void useAppContext() throws Exception { - // Context of the app under test. - Context appContext = InstrumentationRegistry.getTargetContext(); - - assertEquals("nl.myhyvesbookplus.stagram", appContext.getPackageName()); - } -} diff --git a/app/MyHyvesBookPlusStagram/app/src/main/AndroidManifest.xml b/app/MyHyvesBookPlusStagram/app/src/main/AndroidManifest.xml index eee17da..ccf5e09 100644 --- a/app/MyHyvesBookPlusStagram/app/src/main/AndroidManifest.xml +++ b/app/MyHyvesBookPlusStagram/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="nl.myhyvesbookplus.tagram"> + + + diff --git a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/LoginActivity.java b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/LoginActivity.java new file mode 100644 index 0000000..f52026b --- /dev/null +++ b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/LoginActivity.java @@ -0,0 +1,190 @@ +package nl.myhyvesbookplus.tagram; + +import android.content.Intent; +import android.support.annotation.NonNull; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.util.Log; +import android.util.Patterns; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; + +import com.google.android.gms.tasks.OnCompleteListener; +import com.google.android.gms.tasks.Task; +import com.google.firebase.auth.AuthResult; +import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.auth.FirebaseUser; +import com.google.firebase.auth.UserProfileChangeRequest; + +public class LoginActivity extends AppCompatActivity { + + public static final String TAG = "Login"; + private FirebaseAuth mAuth; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(nl.myhyvesbookplus.tagram.R.layout.activity_login); + mAuth = FirebaseAuth.getInstance(); + } + + private void registerUser(String email, String password) { + mAuth.createUserWithEmailAndPassword(email, password) + .addOnCompleteListener(this, new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + // Sign in success, update UI with the signed-in user's information + Log.d(TAG, "createUserWithEmail:success"); + FirebaseUser user = mAuth.getCurrentUser(); + updateUserInfo(user); + goToMainScreen(); + } else { + // If sign in fails, display a message to the user. + Log.w(TAG, "createUserWithEmail:failure", task.getException()); + Toast.makeText(LoginActivity.this, "Authentication failed.", + Toast.LENGTH_SHORT).show(); +// updateUI(null); + } + + // ... + } + }); + } + + public void logInOnClick(View view) { + mAuth.signOut(); + EditText email = (EditText) findViewById(R.id.email); + EditText password = (EditText) findViewById(R.id.password); + String emailSting = email.getText().toString(); + String passwordSting = password.getText().toString(); + + mAuth.signInWithEmailAndPassword(emailSting, passwordSting) + .addOnCompleteListener(this, new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + // Sign in success, update UI with the signed-in user's information + Log.d(TAG, "signInWithEmail:success"); + FirebaseUser user = mAuth.getCurrentUser(); + Log.d(TAG, "onComplete: isVerified " + user.isEmailVerified()); + user.isEmailVerified(); + goToMainScreen(); + +// updateUI(user); + } else { + // If sign in fails, display a message to the user. + Log.w(TAG, "signInWithEmail:failure", task.getException()); + Toast.makeText(LoginActivity.this, "Authentication failed.", + Toast.LENGTH_SHORT).show(); +// updateUI(null); + } + + // ... + } + }); + + + } + + public void registerOnClick(View view) { + // goto Register page. + Log.d(TAG, "registerOnClick: "); + EditText email = (EditText) findViewById(R.id.email); + EditText password = (EditText) findViewById(R.id.password); + EditText passwordConfirm = (EditText) findViewById(R.id.confirm_password_field); + + if (Patterns.EMAIL_ADDRESS.matcher(email.getText().toString()).matches()) { + if (password.getText().toString().equals(passwordConfirm.getText().toString())) { + registerUser(email.getText().toString(), password.getText().toString()); + } else { + Log.d(TAG, "registerOnClick: Passwords do not match"); + } + } else { + Log.d(TAG, "registerOnClick: Not An Email-address"); + } + + } + + public void goToRegisterOnClick(View view) { + EditText passwordConfirm = (EditText) findViewById(R.id.confirm_password_field); + TextView passwordConfirmLabel = (TextView) findViewById(R.id.confirm_password_label); + Button register = (Button) findViewById(R.id.register_button); + Button backToLogin = (Button) findViewById(R.id.back_to_login_button); + EditText username = (EditText) findViewById(R.id.username); + TextView usernameLabel = (TextView) findViewById(R.id.username_label); + + passwordConfirm.setVisibility(View.VISIBLE); + passwordConfirmLabel.setVisibility(View.VISIBLE); + register.setVisibility(View.VISIBLE); + backToLogin.setVisibility(View.VISIBLE); + username.setVisibility(View.VISIBLE); + usernameLabel.setVisibility(View.VISIBLE); + + Button goToRegister = (Button) findViewById(R.id.go_to_register_button); + Button logInButton = (Button) findViewById(R.id.login_button); + + goToRegister.setVisibility(View.GONE); + logInButton.setVisibility(View.GONE); + } + + public void backToLogin(View view) { + EditText passwordConfirm = (EditText) findViewById(R.id.confirm_password_field); + TextView passwordConfirmLabel = (TextView) findViewById(R.id.confirm_password_label); + Button register = (Button) findViewById(R.id.register_button); + Button backToLogin = (Button) findViewById(R.id.back_to_login_button); + EditText username = (EditText) findViewById(R.id.username); + TextView usernameLabel = (TextView) findViewById(R.id.username_label); + + passwordConfirm.setVisibility(View.GONE); + passwordConfirmLabel.setVisibility(View.GONE); + register.setVisibility(View.GONE); + backToLogin.setVisibility(View.GONE); + username.setVisibility(View.GONE); + usernameLabel.setVisibility(View.GONE); + + Button goToRegister = (Button) findViewById(R.id.go_to_register_button); + Button logInButton = (Button) findViewById(R.id.login_button); + + goToRegister.setVisibility(View.VISIBLE); + logInButton.setVisibility(View.VISIBLE); + } + + protected void sendConfirmEmail(FirebaseUser user) { + user.sendEmailVerification() + .addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + Log.d(TAG, "Email sent."); +// goToMainScreen(); + } + } + }); + } + + protected void goToMainScreen() { + Intent intent = new Intent(this, MainActivity.class); + startActivity(intent); + } + + protected void updateUserInfo(final FirebaseUser user) { + EditText username = (EditText) findViewById(R.id.username); + UserProfileChangeRequest request = new UserProfileChangeRequest.Builder() + .setDisplayName(username.getText().toString()) + .build(); + user.updateProfile(request) + .addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + Log.d(TAG, "User profile updated."); + } + sendConfirmEmail(user); + } + }); + } +} diff --git a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/stagram/MainActivity.java b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/MainActivity.java similarity index 65% rename from app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/stagram/MainActivity.java rename to app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/MainActivity.java index b5d40bd..8f500bc 100644 --- a/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/stagram/MainActivity.java +++ b/app/MyHyvesBookPlusStagram/app/src/main/java/nl/myhyvesbookplus/tagram/MainActivity.java @@ -1,4 +1,4 @@ -package nl.myhyvesbookplus.stagram; +package nl.myhyvesbookplus.tagram; import android.os.Bundle; import android.support.annotation.NonNull; @@ -20,14 +20,14 @@ public class MainActivity extends AppCompatActivity { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { switch (item.getItemId()) { - case R.id.navigation_home: - mTextMessage.setText(R.string.title_home); + case nl.myhyvesbookplus.tagram.R.id.navigation_home: + mTextMessage.setText(nl.myhyvesbookplus.tagram.R.string.title_home); return true; - case R.id.navigation_dashboard: - mTextMessage.setText(R.string.title_dashboard); + case nl.myhyvesbookplus.tagram.R.id.navigation_dashboard: + mTextMessage.setText(nl.myhyvesbookplus.tagram.R.string.title_dashboard); return true; - case R.id.navigation_notifications: - mTextMessage.setText(R.string.title_notifications); + case nl.myhyvesbookplus.tagram.R.id.navigation_notifications: + mTextMessage.setText(nl.myhyvesbookplus.tagram.R.string.title_notifications); return true; } return false; @@ -38,10 +38,10 @@ public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); + setContentView(nl.myhyvesbookplus.tagram.R.layout.activity_main); - mTextMessage = (TextView) findViewById(R.id.message); - BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation); + mTextMessage = (TextView) findViewById(nl.myhyvesbookplus.tagram.R.id.message); + BottomNavigationView navigation = (BottomNavigationView) findViewById(nl.myhyvesbookplus.tagram.R.id.navigation); navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference ref = database.getReference(); diff --git a/app/MyHyvesBookPlusStagram/app/src/main/res/layout/activity_login.xml b/app/MyHyvesBookPlusStagram/app/src/main/res/layout/activity_login.xml new file mode 100644 index 0000000..33d4bf4 --- /dev/null +++ b/app/MyHyvesBookPlusStagram/app/src/main/res/layout/activity_login.xml @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + +