Advertisement
Guest User

Untitled

a guest
Mar 31st, 2018
678
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.96 KB | None | 0 0
  1. package group.hashtag.projectelo.Activities;
  2.  
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.support.annotation.NonNull;
  7. import android.support.design.widget.TextInputLayout;
  8. import android.support.v7.app.AppCompatActivity;
  9. import android.text.TextUtils;
  10. import android.util.Log;
  11. import android.view.View;
  12. import android.view.inputmethod.InputMethodManager;
  13. import android.widget.Button;
  14. import android.widget.EditText;
  15. import android.widget.ImageView;
  16. import android.widget.ProgressBar;
  17. import android.widget.Toast;
  18.  
  19. import com.google.android.gms.auth.api.signin.GoogleSignIn;
  20. import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
  21. import com.google.android.gms.auth.api.signin.GoogleSignInClient;
  22. import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
  23. import com.google.android.gms.common.api.ApiException;
  24. import com.google.android.gms.tasks.OnCompleteListener;
  25. import com.google.android.gms.tasks.Task;
  26. import com.google.firebase.auth.AuthCredential;
  27. import com.google.firebase.auth.AuthResult;
  28. import com.google.firebase.auth.FirebaseAuth;
  29. import com.google.firebase.auth.FirebaseUser;
  30. import com.google.firebase.auth.GoogleAuthProvider;
  31. import com.google.firebase.database.DataSnapshot;
  32. import com.google.firebase.database.DatabaseError;
  33. import com.google.firebase.database.DatabaseReference;
  34. import com.google.firebase.database.FirebaseDatabase;
  35. import com.google.firebase.database.ValueEventListener;
  36.  
  37. import java.util.regex.Matcher;
  38. import java.util.regex.Pattern;
  39.  
  40. import group.hashtag.projectelo.Handlers.UserHandler;
  41. import group.hashtag.projectelo.R;
  42.  
  43. /**
  44. * Created by nikhilkamath on 11/02/18.
  45. */
  46.  
  47. public class Register_Activity extends AppCompatActivity {
  48.  
  49. private EditText inputEmail, inputPassword, inputUsername, inputConfirmPassword;
  50. private TextInputLayout emailInput, passwordInput, usernameInput, confirmPasswordInput;
  51. private Button btnSignIn, btnSignUp;
  52. private ProgressBar progressBar;
  53. private FirebaseAuth auth;
  54. GoogleSignInClient mGoogleSignInClient;
  55. ImageView googleButton;
  56. private DatabaseReference mDatabase;
  57. int RC_SIGN_IN = 111;
  58.  
  59.  
  60. @Override
  61. protected void onCreate(Bundle savedInstanceState) {
  62. super.onCreate(savedInstanceState);
  63. setContentView(R.layout.register_activity);
  64. googleButton = findViewById(R.id.google_button);
  65.  
  66.  
  67. mDatabase = FirebaseDatabase.getInstance().getReference("users");
  68.  
  69.  
  70. GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
  71. .requestIdToken(getString(R.string.default_web_client_id))
  72. .requestEmail()
  73. .build();
  74.  
  75.  
  76. mGoogleSignInClient = GoogleSignIn.getClient(this, gso);
  77.  
  78. //Get Firebase auth instance
  79. auth = FirebaseAuth.getInstance();
  80.  
  81. if (auth.getCurrentUser() != null) {
  82. startActivity(new Intent(Register_Activity.this, HomeActivity.class));
  83. finish();
  84. }
  85.  
  86. //Get Firebase auth instance
  87. auth = FirebaseAuth.getInstance();
  88.  
  89. btnSignIn = findViewById(R.id.sign_in_button);
  90. btnSignUp = findViewById(R.id.sign_up_button);
  91. inputEmail = findViewById(R.id.email);
  92. inputPassword = findViewById(R.id.password);
  93. progressBar = findViewById(R.id.progressBar);
  94. inputUsername = findViewById(R.id.username);
  95. emailInput = findViewById(R.id.input_layout_email_register);
  96. passwordInput = findViewById(R.id.input_layout_password_register);
  97. usernameInput = findViewById(R.id.input_layout_username_register);
  98. confirmPasswordInput = findViewById(R.id.input_layout_confirm_password_register);
  99. inputConfirmPassword = findViewById(R.id.confirm_password);
  100.  
  101.  
  102. googleButton.setOnClickListener(new View.OnClickListener() {
  103. @Override
  104. public void onClick(View view) {
  105. Intent signInIntent = mGoogleSignInClient.getSignInIntent();
  106. startActivityForResult(signInIntent, RC_SIGN_IN);
  107. }
  108. });
  109.  
  110. btnSignIn.setOnClickListener(new View.OnClickListener() {
  111. @Override
  112. public void onClick(View v) {
  113. startActivity(new Intent(getApplicationContext(), LoginActivity.class));
  114. finish();
  115. }
  116. });
  117.  
  118. btnSignUp.setOnClickListener(new View.OnClickListener() {
  119. @Override
  120. public void onClick(final View v) {
  121.  
  122. final String name = inputUsername.getText().toString().trim();
  123.  
  124. final String email = inputEmail.getText().toString().trim();
  125. String password = inputPassword.getText().toString().trim();
  126. final String confirmPassword = inputConfirmPassword.getText().toString().trim();
  127. if (TextUtils.isEmpty(name)) {
  128. usernameInput.setError("Enter a username");
  129. emailInput.setError(null);
  130. passwordInput.setError(null);
  131. confirmPasswordInput.setError(null);
  132. return;
  133. }
  134. if (TextUtils.isEmpty(email)) {
  135. passwordInput.setError(null);
  136. usernameInput.setError(null);
  137. confirmPasswordInput.setError(null);
  138. emailInput.setError("Enter email address!");
  139. return;
  140. }
  141.  
  142. if (TextUtils.isEmpty(password)) {
  143. emailInput.setError(null);
  144. usernameInput.setError(null);
  145. confirmPasswordInput.setError(null);
  146. passwordInput.setError("Enter correct Password");
  147. return;
  148. }
  149. if (TextUtils.isEmpty(confirmPassword)) {
  150. emailInput.setError(null);
  151. usernameInput.setError(null);
  152. confirmPasswordInput.setError("Enter correct Password");
  153. passwordInput.setError(null);
  154. return;
  155. }
  156.  
  157. if (password.length() < 6) {
  158. emailInput.setError(null);
  159. usernameInput.setError(null);
  160. confirmPasswordInput.setError(null);
  161. passwordInput.setError("Please keep your length less than 6");
  162. return;
  163. }
  164. if (!isEmailValid(email)) {
  165. passwordInput.setError(null);
  166. usernameInput.setError(null);
  167. confirmPasswordInput.setError(null);
  168. emailInput.setError("Enter a valid email address");
  169. return;
  170. }
  171. if (!password.equals(confirmPassword)) {
  172. passwordInput.setError("Re-enter the password");
  173. usernameInput.setError(null);
  174. inputConfirmPassword.setText("");
  175. inputConfirmPassword.setText("");
  176. confirmPasswordInput.setError("Re-enter the password");
  177. emailInput.setError(null);
  178. return;
  179. }
  180.  
  181. progressBar.setVisibility(View.VISIBLE);
  182. //create user
  183. auth.createUserWithEmailAndPassword(email, password)
  184. .addOnCompleteListener(Register_Activity.this, new OnCompleteListener<AuthResult>() {
  185. @Override
  186. public void onComplete(@NonNull Task<AuthResult> task) {
  187. progressBar.setVisibility(View.GONE);
  188. // If sign in fails, display a message to the user. If sign in succeeds
  189. // the auth state listener will be notified and logic to handle the
  190. // signed in user can be handled in the listener.
  191. if (!task.isSuccessful()) {
  192. Toast.makeText(getApplicationContext(), "Authentication failed." + task.getException(),
  193. Toast.LENGTH_SHORT).show();
  194. } else {
  195.  
  196. FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
  197. if (user != null) {
  198. emailInput.setError(null);
  199. passwordInput.setError(null);
  200. usernameInput.setError(null);
  201. confirmPasswordInput.setError(null);
  202. String userId = user.getUid();
  203. UserHandler userHandler = new UserHandler();
  204. userHandler.setName(name);
  205. Log.e(Register_Activity.class.getCanonicalName(),email);
  206. UserHandler userhandler = new UserHandler(name, userId, email);
  207. hideKeyboard(v);
  208.  
  209. mDatabase.child(userId).setValue(userhandler);
  210.  
  211. //TODO: NEED TO PASS DATA
  212.  
  213. Intent intent = new Intent(getApplicationContext(), ProfileSetup.class);
  214. Bundle b = new Bundle();
  215. b.putString("userName", name);
  216. b.putString("userEmail", email);
  217. b.putString("userId", userId);;
  218. intent.putExtras(b);
  219. startActivity(intent);
  220. }
  221.  
  222.  
  223. }
  224. }
  225. });
  226.  
  227.  
  228. }
  229. });
  230. }
  231.  
  232.  
  233. @Override
  234. public void onActivityResult(int requestCode, int resultCode, Intent data) {
  235. super.onActivityResult(requestCode, resultCode, data);
  236.  
  237. // Result returned from launching the Intent from GoogleSignInApi.getSignInIntent(...);
  238. if (requestCode == RC_SIGN_IN) {
  239. Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
  240. try {
  241. // Google Sign In was successful, authenticate with Firebase
  242. GoogleSignInAccount account = task.getResult(ApiException.class);
  243. firebaseAuthWithGoogle(account);
  244. } catch (ApiException e) {
  245. // Google Sign In failed, update UI appropriately
  246. Log.w(Register_Activity.class.getCanonicalName(), "Google sign in failed", e);
  247. }
  248. }
  249. }
  250.  
  251. private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
  252. Log.e(Register_Activity.class.getCanonicalName(), "firebaseAuthWithGoogle:" + acct.getId());
  253.  
  254. AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
  255. auth.signInWithCredential(credential)
  256. .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
  257. @Override
  258. public void onComplete(@NonNull Task<AuthResult> task) {
  259. if (task.isSuccessful()) {
  260. // Sign in success, update UI with the signed-in user's information
  261. Log.e(Register_Activity.class.getCanonicalName(), "signInWithCredential:success");
  262. final FirebaseUser user = auth.getCurrentUser();
  263. if (user != null) {
  264. mDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
  265. @Override
  266. public void onDataChange(DataSnapshot dataSnapshot) {
  267.  
  268. if (dataSnapshot.hasChild(user.getUid())){
  269. startActivity(new Intent(getApplicationContext(), HomeActivity.class));
  270. finish();
  271. }else {
  272. Log.e("Heres", "walah walah");
  273.  
  274. String userId = user.getUid();
  275. UserHandler userHandler = new UserHandler();
  276. userHandler.setName(user.getDisplayName());
  277. UserHandler userhandler = new UserHandler(user.getDisplayName(), userId, user.getEmail());
  278.  
  279. mDatabase.child(userId).setValue(userhandler);
  280.  
  281.  
  282. Intent intent = new Intent(getApplicationContext(), ProfileSetup.class);
  283. Bundle b = new Bundle();
  284. b.putString("userName", user.getDisplayName());
  285. b.putString("userEmail", user.getEmail());
  286. b.putString("userId", userId);
  287. intent.putExtras(b);
  288. startActivity(intent);
  289. finish();
  290. }
  291. // for (DataSnapshot dsnp : dataSnapshot.getChildren())
  292. // {
  293. // Log.e("Heres", ""+dsnp.getKey().equals(user.getUid()));
  294. //
  295. // if (dsnp.getKey().equals(user.getUid())){
  296. //
  297. //
  298. // break;
  299. // }else if (!dsnp.getKey().equals(user.getUid())){
  300. // Log.e("Heres", ""+dsnp.hasChild(user.getUid()));
  301. //
  302. // }else {
  303. // String userId = user.getUid();
  304. // UserHandler userHandler = new UserHandler();
  305. // userHandler.setName(user.getDisplayName());
  306. // UserHandler userhandler = new UserHandler(user.getDisplayName(), userId, user.getEmail());
  307. //
  308. // mDatabase.child(userId).setValue(userhandler);
  309. //
  310. //
  311. // Intent intent = new Intent(getApplicationContext(), ProfileSetup.class);
  312. // Bundle b = new Bundle();
  313. // b.putString("userName", user.getDisplayName());
  314. // b.putString("userEmail", user.getEmail());
  315. // b.putString("userId", userId);
  316. // intent.putExtras(b);
  317. // startActivity(intent);
  318. // finish();
  319. // break;
  320. // }
  321. //
  322. // }
  323. }
  324.  
  325.  
  326.  
  327. @Override
  328. public void onCancelled(DatabaseError databaseError) {
  329. Log.e("Here",""+databaseError);
  330. }
  331. });
  332.  
  333. }
  334.  
  335.  
  336.  
  337. } else {
  338. // If sign in fails, display a message to the user.
  339. Log.e(Register_Activity.class.getCanonicalName(), "signInWithCredential:failure", task.getException());
  340. }
  341.  
  342. }
  343. });
  344. }
  345.  
  346.  
  347. @Override
  348. protected void onResume() {
  349. super.onResume();
  350. progressBar.setVisibility(View.GONE);
  351. }
  352.  
  353. // https://stackoverflow.com/a/19828165/3966666
  354. public void hideKeyboard(View view) {
  355. InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
  356. inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
  357. }
  358.  
  359. // Validation code taken from:- https://stackoverflow.com/a/6119777/3966666
  360. public static boolean isEmailValid(String email) {
  361. String expression = "^[\\w\\.-]+@([\\w\\-]+\\.)+[A-Z]{2,4}$";
  362. Pattern pattern = Pattern.compile(expression, Pattern.CASE_INSENSITIVE);
  363. Matcher matcher = pattern.matcher(email);
  364. return matcher.matches();
  365. }
  366. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement