Passed
Push — master ( 1faf28...95951e )
by Anthony
02:22
created

Connexion   B

Complexity

Total Complexity 36

Size/Duplication

Total Lines 206
Duplicated Lines 3.4 %

Coupling/Cohesion

Components 1
Dependencies 7

Importance

Changes 0
Metric Value
wmc 36
lcom 1
cbo 7
dl 7
loc 206
rs 8.8
c 0
b 0
f 0

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
<?php
2
	namespace core\auth;
3
4
	use core\App;
5
	use core\Configuration;
6
	use core\functions\DateHeure;
7
	use core\HTML\flashmessage\FlashMessage;
8
9
	class Connexion {
10
11
		public function __construct() {
12
			if (session_id() == null) {
13
				session_start();
14
			}
15
		}
16
17
		/**
18
		 * @param $valide
19
		 * @param $archiver
20
		 * @param string $page_retour_err
21
		 */
22
		private function setTestParamCompte($valide, $archiver, $page_retour_err) {
23
			$config = new Configuration();
24
25
			//cela veut dire que l'utilisateur doit obligatoirement etre valider pour avoir acces au site
26
			if (($config->getValiderInscription() == 1) && ((isset($valide)) && ($valide != 1))) {
27
				FlashMessage::setFlash("Votre compta n'a encore pas été validé par un administrateur, vous ne pouvez donc pas accéder à ce site, veuillez réesseyer ultérieurement");
28
				header("location:$page_retour_err");
29
			}
30
31
			//si le compte est archiver (bloqué) l'utilisateur ne peut pas se connecter au site
32
			if ((isset($archiver)) && ($archiver == 1)) {
33
				FlashMessage::setFlash("Votre compte a été bloqué par un administrateur, vous ne pouvez donc pas vous connecter à ce site, veuillez réesseyer ultérieurement");
34
				header("location:$page_retour_err");
35
			}
36
		}
37
38
		private function setTestConnexion($query, $auth, $page_retour) {
39
			if ((is_array($query)) && (count($query) > 0)) {
40
				foreach ($query as $obj) {
41
					//si le compte est archivé on déconnecte la session et le cookie
42
					self::setTestParamCompte($obj->valide, $obj->archiver, $page_retour);
43
44
					$key = sha1($obj->pseudo.$obj->mdp);
45
46
					if ($key == $auth[1]) {
47
						$_SESSION['login'] = $obj->pseudo;
48
						$_SESSION["idlogin".CLEF_SITE] = $obj->ID_identite;
49
50
						setcookie("auth".CLEF_SITE, $obj->ID_identite."-----".$key, time() + 3600 * 24 * 3, "/", "", false, true);
51
52
						return true;
53
					}
54
				}
55
			}
56
		}
57
58
59
		/**
60
		 * Fonction de connexions a un espace membre ou prive avec un login / mdp
61
		 * @param string $pseudo pseudo que l'utilisateur utilise pour se connecter
62
		 * @param string $mdp mot de passe que l'utilisateur utilise
63
		 * @param string $page_retour_err page de retour en cas d'err de mdp ou pseudo
64
		 * @param string $page_retour page de retour quand connexion ok
65
		 * @param int $remember si on doit mémoriser la connexion au site
66
		 */
67
		public static function setLogin($pseudo, $mdp, $page_retour_err, $page_retour, $remember) {
68
			$dbc = App::getDb();
69
			$mdpbdd = "";
70
			$valide = "";
71
			$archiver = "";
72
73
			//recup des donnees
74
			$pseudo = $dbc->quote(htmlspecialchars($pseudo));
75
			$mdp_nonencrypt = $mdp;
76
			$mdp = md5(htmlspecialchars($mdp));
77
			$query = $dbc->select()->from("identite")->where("pseudo", "=", $pseudo, "", true)->get();
78
79
			//aficher query tant que qqch dans $ligne
80
			if ((is_array($query)) && (count($query) > 0)) {
81
				foreach ($query as $obj) {
82
					$id = $obj->ID_identite;
83
					$pseudo = $obj->pseudo;
84
					$valide = $obj->valide;
85
					$archiver = $obj->archiver;
86
					$mdpbdd = Encrypt::setDecryptMdp($obj->mdp, $id);
87
				}
88
			}
89
90
			//verif si num enr = 0
91
			if (!isset($id)) {
92
				FlashMessage::setFlash("Vos identifiants de connexions sont incorrects");
93
				header("location:$page_retour_err");
94
			}
95
			else {
96
				self::setTestParamCompte($valide, $archiver, $page_retour_err);
97
98
				//si les mdp sont egaux on redirige ver esace membre sinon ver login avec un mess d'erreur
99
				if ($mdp == $mdpbdd) {
100
					$_SESSION['login'] = $pseudo;
101
					$_SESSION["idlogin".CLEF_SITE] = $id;
102
103
					self::setTestChangerMdp($id, $mdp_nonencrypt, $remember);
104
105
					FlashMessage::setFlash("Vous êtes maintenant connecté", "info");
106
					header("location:$page_retour");
107
				}
108
				else {
109
					FlashMessage::setFlash("Vos identifiants de connexions sont incorrects");
110
					header("location:$page_retour_err");
111
				}
112
			}
113
		}
114
115
		public static function setObgConnecte($page_retour) {
116
			if (!isset($_SESSION["idlogin".CLEF_SITE])) {
117
				FlashMessage::setFlash("Vous devez être connecté pour accéder à cette page");
118
				header("location:".$page_retour);
119
			}
120
		}
121
122
		/**
123
		 * Fonction pour lancer une connexoin avec un compte
124
		 * @param string $page_retour page sur laquel rediriger le mec qui a clique sur déconnexion
125
		 */
126
		public static function setConnexion($page_retour) {
127
			$dbc = App::getDb();
128
129
			//si le user n'a rien mis dans login on lui de pense a se connecter
130
			if ((isset($_COOKIE["auth".CLEF_SITE])) && (empty($_SESSION["idlogin".CLEF_SITE]))) {
131
				$auth = $_COOKIE["auth".CLEF_SITE];
132
133
				$auth = explode("-----", $auth);
134
135
				$query = $dbc->select()->from("identite")->where("ID_identite", "=", $auth[0])->get();
136
137
				self::setTestConnexion($query, $auth, $page_retour);
138
			}
139
			else if ((!empty($_SESSION["idlogin".CLEF_SITE])) && (!isset($_COOKIE["auth".CLEF_SITE]))) {
140
				$id_identite = $_SESSION["idlogin".CLEF_SITE];
141
				$membre = new Membre($id_identite);
142
143
				setcookie("auth".CLEF_SITE, NULL, -1);
144
				setcookie("auth".CLEF_SITE, $id_identite."-----".sha1($membre->getPseudo().$membre->getMdp()), time() + 3600 * 24 * 3, "/", "", false, true);
145
			}
146
		}
147
148
		/**
149
		 * Fonction pour déconnecter un membre (on degage session et cookie)
150
		 * @param string $page_retour page sur laquel rediriger le mec qui a clique sur déconnexion
151
		 */
152
		public static function setDeconnexion($page_retour) {
153
			$_SESSION['login'];
154
			$_SESSION["idlogin".CLEF_SITE];
155
			unset($_SESSION['login']);
156
			unset($_SESSION["idlogin".CLEF_SITE]);
157
			session_destroy();
158
			setcookie("auth".CLEF_SITE, NULL, -1);
159
160
			session_start();
161
			FlashMessage::setFlash("Vous avez été déconnecté avec succès", "success");
162
163
			header("location:".$page_retour);
164
		}
165
166
167
		//--------------------------------- info concernant les connexion au site du user --------------------------
168
		/**
169
		 * pour remettre la derniere connexoin à la date du jour
170
		 * @param $id_identite
171
		 */
172
		public static function setUpdatelastConnexion($id_identite) {
173
			$dbc = App::getDb();
174
175
			$dbc->update("last_change_mdp", date("Y-m-d"))->from("identite")->where("ID_identite", "=", $id_identite)->set();
176
		}
177
178
		/**
179
		 * permet de récupérer la dernier fois que l'utilisateur s'est connecté au site
180
		 * @param $id_identite
181
		 * @return mixed
182
		 */
183
		public static function getlastConnexion($id_identite) {
184
			$dbc = App::getDb();
185
			$query = $dbc->select("last_change_mdp")->from("identite")->where("ID_identite", "=", $id_identite)->get();
186
			if ((is_array($query)) && (count($query) > 0)) {
187
				foreach ($query as $obj) return $obj->last_change_mdp;
188
			}
189
		}
190
191
		/**
192
		 * @param $id_identite
193
		 * @param string $mdp_nonencrypt_tape
194
		 * @param integer $remember
195
		 */
196
		private static function setTestChangerMdp($id_identite, $mdp_nonencrypt_tape, $remember) {
197
			$membre = new Membre($id_identite);
198
199
			$date_array = DateHeure::dateBddToArray(self::getlastConnexion($id_identite));
200
			$last_change_mdp = mktime(0, 0, 0, $date_array[1], $date_array[2], $date_array[0]);
201
			$today = mktime(0, 0, 0, date("m"), date("d"), date("Y"));
202
203
			if (($today - $last_change_mdp) > 259200) {
204
				self::setUpdatelastConnexion($id_identite);
205
206
				$membre->setMdp($mdp_nonencrypt_tape, $mdp_nonencrypt_tape, $mdp_nonencrypt_tape);
207
			}
208
209
			if ((isset($remember)) && ($remember != 0)) {
210
				setcookie("auth".CLEF_SITE, NULL, -1);
211
				setcookie("auth".CLEF_SITE, $id_identite."-----".sha1($membre->getPseudo().$membre->getMdp()), time() + 3600 * 24 * 3, "/", "", false, true);
212
			}
213
		}
214
	}