Skip to content

Commit 25f15d8

Browse files
committed
Initial commit
0 parents  commit 25f15d8

39 files changed

+894
-0
lines changed

.gitignore

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
*.iml
2+
.gradle
3+
/local.properties
4+
/.idea/workspace.xml
5+
/.idea/libraries
6+
.DS_Store
7+
/build
8+
/captures

.idea/.name

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/compiler.xml

+22
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/copyright/profiles_settings.xml

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/encodings.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/gradle.xml

+24
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

+19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

+9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/runConfigurations.xml

+12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

app/build.gradle

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
apply plugin: 'com.android.application'
2+
3+
android {
4+
compileSdkVersion 23
5+
buildToolsVersion "23.0.3"
6+
7+
defaultConfig {
8+
applicationId "com.example.android.sampleapp"
9+
minSdkVersion 10
10+
targetSdkVersion 23
11+
versionCode 1
12+
versionName "1.0"
13+
}
14+
buildTypes {
15+
release {
16+
minifyEnabled false
17+
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
18+
}
19+
}
20+
}
21+
22+
dependencies {
23+
compile fileTree(dir: 'libs', include: ['*.jar'])
24+
testCompile 'junit:junit:4.12'
25+
26+
compile 'com.android.support:appcompat-v7:23.4.0'
27+
compile 'com.google.firebase:firebase-auth:9.0.0'
28+
}
29+
30+
apply plugin: 'com.google.gms.google-services'

app/google-services.json

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
//la configuration de votre application par ici
3+
}

app/proguard-rules.pro

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# Add project specific ProGuard rules here.
2+
# By default, the flags in this file are appended to flags specified
3+
# in /Users/fireset/Android/sdk/tools/proguard/proguard-android.txt
4+
# You can edit the include path and order by changing the proguardFiles
5+
# directive in build.gradle.
6+
#
7+
# For more details, see
8+
# http://developer.android.com/guide/developing/tools/proguard.html
9+
10+
# Add any project specific keep options here:
11+
12+
# If your project uses WebView with JS, uncomment the following
13+
# and specify the fully qualified class name to the JavaScript interface
14+
# class:
15+
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16+
# public *;
17+
#}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.example.android.sampleapp;
2+
3+
import android.app.Application;
4+
import android.test.ApplicationTestCase;
5+
6+
/**
7+
* <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
8+
*/
9+
public class ApplicationTest extends ApplicationTestCase<Application> {
10+
public ApplicationTest() {
11+
super(Application.class);
12+
}
13+
}

app/src/main/AndroidManifest.xml

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3+
package="com.example.android.sampleapp">
4+
5+
<uses-permission android:name="android.permission.INTERNET" />
6+
7+
<application
8+
android:allowBackup="true"
9+
android:icon="@mipmap/ic_launcher"
10+
android:label="@string/app_name"
11+
android:supportsRtl="true"
12+
android:theme="@style/AppTheme">
13+
<activity android:name=".LoginActivity">
14+
<intent-filter>
15+
<action android:name="android.intent.action.MAIN" />
16+
17+
<category android:name="android.intent.category.LAUNCHER" />
18+
</intent-filter>
19+
</activity>
20+
<activity android:name=".MainActivity" />
21+
<activity android:name=".RegisterActivity"></activity>
22+
</application>
23+
24+
</manifest>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
package com.example.android.sampleapp;
2+
3+
import android.content.Intent;
4+
import android.support.annotation.NonNull;
5+
import android.support.v7.app.AppCompatActivity;
6+
import android.os.Bundle;
7+
import android.view.View;
8+
import android.widget.Button;
9+
import android.widget.EditText;
10+
import android.widget.Toast;
11+
12+
import com.google.android.gms.tasks.OnFailureListener;
13+
import com.google.android.gms.tasks.OnSuccessListener;
14+
import com.google.firebase.auth.AuthResult;
15+
import com.google.firebase.auth.FirebaseAuth;
16+
import com.google.firebase.auth.FirebaseUser;
17+
18+
/*
19+
Activité de mère et d'authentification de l'utilisateur dans l'application
20+
*/
21+
public class LoginActivity extends AppCompatActivity {
22+
private EditText email;
23+
private EditText password;
24+
private Button login;
25+
private Button signup;
26+
private Button reset;
27+
//l'objet firebaseAuth, pour gérer l'authentification d'un utilisateur et la reinitialisation du mot de passe
28+
private FirebaseAuth firebaseAuth;
29+
// authStateListener nous permet de mettre en écoute l'utilisateur actif, de détecter tout changement d'etat
30+
private FirebaseAuth.AuthStateListener authStateListener;
31+
//ce request code est utilisé pour identifier le lancement du RegisterActivity
32+
private static int REQUEST_SIGNUP = 99;
33+
34+
@Override
35+
protected void onCreate(Bundle savedInstanceState) {
36+
super.onCreate(savedInstanceState);
37+
setContentView(R.layout.activity_login);
38+
39+
//on initialiase l'objet firebaseAuth avec l'instance actuelle de FirebaseAuth
40+
firebaseAuth = FirebaseAuth.getInstance();
41+
42+
email = (EditText) findViewById(R.id.email);
43+
password = (EditText) findViewById(R.id.password);
44+
login = (Button) findViewById(R.id.login);
45+
signup = (Button) findViewById(R.id.signup);
46+
reset = (Button) findViewById(R.id.reset);
47+
48+
//le processus d'authentification de l'utilisateur est defini par ici
49+
login.setOnClickListener(new View.OnClickListener() {
50+
@Override
51+
public void onClick(View v) {
52+
String emailStr = email.getText().toString();
53+
String passwordStr = password.getText().toString();
54+
if(!emailStr.isEmpty()&&!passwordStr.isEmpty()){
55+
// on authentifie l'utilisateur
56+
firebaseAuth.signInWithEmailAndPassword(emailStr,passwordStr).addOnSuccessListener(new OnSuccessListener<AuthResult>() {
57+
@Override
58+
public void onSuccess(AuthResult authResult) {
59+
//Si ok, on recuper son email et on affiche un message de notification corespondante
60+
FirebaseUser user = authResult.getUser();
61+
Toast.makeText(getApplicationContext(),"Utilisateur connecté :"+user.getEmail(),Toast.LENGTH_SHORT).show();
62+
}
63+
}).addOnFailureListener(new OnFailureListener() {
64+
@Override
65+
public void onFailure(@NonNull Exception e) {
66+
//Sinon on affiche un message d'erreur
67+
Toast.makeText(getApplicationContext(),"Authentification echoué",Toast.LENGTH_SHORT).show();
68+
}
69+
});
70+
}
71+
72+
}
73+
});
74+
75+
signup.setOnClickListener(new View.OnClickListener() {
76+
@Override
77+
public void onClick(View v) {
78+
//Nous demarrons le RegisterActivity avec le request code associé, startActivityForResult parce que
79+
// nous attendons un resultat provenant du RegisterAcivity qui est l'email de l'utilisateur
80+
startActivityForResult(new Intent(getApplicationContext(),RegisterActivity.class),REQUEST_SIGNUP);
81+
}
82+
});
83+
84+
reset.setOnClickListener(new View.OnClickListener() {
85+
@Override
86+
public void onClick(View v) {
87+
String emailStr = email.getText().toString();
88+
//On implement ici la reinitialisation du mot de passe de l'utilisateur, s'il fournit une adresse email valide
89+
if(!emailStr.isEmpty())
90+
firebaseAuth.sendPasswordResetEmail(emailStr).addOnSuccessListener(new OnSuccessListener<Void>() {
91+
@Override
92+
public void onSuccess(Void aVoid) {
93+
Toast.makeText(getApplicationContext(),"Le mail de reinitialisation est envoyé",Toast.LENGTH_SHORT).show();
94+
}
95+
});
96+
}
97+
});
98+
99+
//On ecoute le changement d'etat de l'utilisateur
100+
authStateListener = new FirebaseAuth.AuthStateListener() {
101+
@Override
102+
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
103+
FirebaseUser user = firebaseAuth.getCurrentUser();
104+
if(user!=null){
105+
//Si l'utilisateur est connecte on lance l'activity d'accueil qui est le MainActivity
106+
startActivity(new Intent(getApplicationContext(),MainActivity.class));
107+
finish();
108+
}else {
109+
//Message d'erreur ou action à effectué lorsque l'utilisateur n'est pas connecté
110+
}
111+
}
112+
};
113+
}
114+
115+
@Override
116+
protected void onStart() {
117+
super.onStart();
118+
//lorsque le Login activité rentre dans son etat de lancement, on ajoute le listener sur l'objet firebasAuth
119+
firebaseAuth.addAuthStateListener(authStateListener);
120+
}
121+
122+
@Override
123+
protected void onStop() {
124+
super.onStop();
125+
//Et lors de l'arret de l'activite on supprime le listener
126+
if(authStateListener!=null)
127+
firebaseAuth.removeAuthStateListener(authStateListener);
128+
}
129+
130+
@Override
131+
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
132+
super.onActivityResult(requestCode, resultCode, data);
133+
//lorsque l'utilisateur revient du RegisterActivity, on intercepte l'email de l'utilisateur
134+
//au cas ou nous avons un resultat
135+
if(requestCode==REQUEST_SIGNUP&&resultCode==RESULT_OK)
136+
email.setText(data.getStringExtra(Intent.EXTRA_TEXT));
137+
}
138+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.example.android.sampleapp;
2+
3+
import android.content.Intent;
4+
import android.os.Bundle;
5+
import android.support.v7.app.AppCompatActivity;
6+
import android.view.View;
7+
import android.widget.Button;
8+
9+
import com.google.firebase.auth.FirebaseAuth;
10+
11+
/*
12+
Activité d'accueil de notre application et accessible uniquement aux utilisateurs connectés
13+
*/
14+
public class MainActivity extends AppCompatActivity {
15+
private Button logout;
16+
//l'objet firebaseAuth nous servira de deconnecter l'utisateur
17+
private FirebaseAuth firebaseAuth;
18+
19+
@Override
20+
protected void onCreate(Bundle savedInstanceState) {
21+
super.onCreate(savedInstanceState);
22+
setContentView(R.layout.activity_main);
23+
24+
firebaseAuth = FirebaseAuth.getInstance();
25+
26+
logout = (Button) findViewById(R.id.logout);
27+
logout.setOnClickListener(new View.OnClickListener() {
28+
@Override
29+
public void onClick(View v) {
30+
//nous deconnectons l'utilisateur actif dans l'application puis nous redemarrons le LoginActivity.
31+
firebaseAuth.signOut();
32+
startActivity(new Intent(getApplicationContext(),LoginActivity.class));
33+
finish();
34+
}
35+
});
36+
}
37+
38+
}

0 commit comments

Comments
 (0)