Tutoriels

Installation du framework Premiers pas Mises à jour du framework Gérer les utilisateurs Gestion des textes et des langues Gestion des erreurs Créer ses classes & librairies

Classes & librairies

DSM.class.php DSMUser.class.php DSMMessage.class.php Libraire LJ Librairies internes

DSMUser.class.php

Constructeurs Attributs Méthodes Héritage de DSMRanks

DSMUser.class.php

Description

La classe DSMUser est la classe principale permettant de gérer un utilisateur, de sa création jusqu'à sa suppression. Cette classe héritant de la classe DSMRanks vous permet de gérer tous les rangs et les droits que posséderont vos utilisateurs. La classe DSMUser vous évite au maximum les tâches de communication avec la base de donnée, les vérifications fastidieuses des données de l'utilisateur, l'inscription, la modification, la connexion,...

L'inscription d'un de vos utilisateurs ne vous prend plus que 3 lignes tout en gérant les erreurs ! Leur connexion au site de manière sécurisée et chiffrée en 5 lignes, et la gestion des sessions et des cookies y est integré (appel d'une fonction et le tour est joué).

Cette classe est entièrement modulaire ! En effet, le moteur instancie l'objet resources/class/User.class.php qui hérite de DSMUser. Vous pouvez ajouter autant de méthodes et d'attributs à votre utilisateur que vous le souhaitez, et chacune des méthodes de DSMUser fonctionnera avec vos nouveaux attributs. Consultez le guide sur la gestion d'utilisateurs.

En bref : Tout ce qui concerne de près ou de loin un utilisateur se fait grâce à l'objet DSMUser. Pour créer un utilisateur on instancie d'abord un objet User, pour supprimer un utilisateur on l'instancie d'abord grâce aux informations stockées sur la base de donnée, pour afficher ou modifier les informations d'un utilisateur on l'instancie d'abord !

Constructeurs

Dans tout ce tutoriel, nous utiliserons l'objet User et non DSMUser. Sachant que par défaut, l'objet User ne fait rien d'autre que d'hériter de toutes les méthodes et attributs de DSMUser. Il n'est pas conseillé d'instancier directement des objets DSMUser.

Afin de générer un utilisateur lambda qui aura un rang de niveau 0, il suffit d'instancier l'objet avec une instance du DSM. Sans cette instance, la gestion d'erreurs ainsi que toutes les méthodes communiquant avec la base de donnée ne fonctionneront pas.

$user = new User($dsm);

Vous pouvez fournir les informations concernant l'utilisateur lors de son instanciation en créant un tableau associatif :

$array = array('id' => 12, 'nickname' => 'Babar', 'password' => 'a1b2c3d4');
$babar = new User($dsm, $array);

echo $babar -> get('nickname'); //Affiche Babar

Toujours en prenant l'exemple de Babar qui a l'id '12', vous pouvez l'instancié directement depuis sa sauvegarde dans la base de donnée en précisant en second paramètre son id :

$id = 12; //Identifiant de l'utilisateur Babar
$babar = new User($dsm, $id);

echo $babar -> get('nickname'); //Affiche Babar

Paramètres

$dsm Vous devez fournir une instance du DSM valide (celle qui fait tourner votre page), par défaut rentrez la variable $dsm.
$array Tableau associatif qui sera directement utilisé en paramètre de la méthode hydrate (qui sera donc appelé dans le constructeur). Cela permet d'affecter des valeurs aux attributs sans passer par l'appel de la méthode set pour chaque attribut.
$id En précisant un int en second paramètre, vous appelez la méthode getById qui va hydrater votre objet (affecter des valeurs aux attributs) grâce aux données stockés dans la base de donnée corresponsant à l'utilisateur d'identifiant id.

Attributs

Le seul attribut qui vous est utile est l'attribut publique isConnected, tous les autres attributs sont en protected (sont donc utilisables dans l'objet User

- dsm (protected) : contient une instance du DSM
- id (protected) : identifiant unique de l'utilisateur dans la base de donnée
- rank (protected) : rang (int) de l'utilisateur
- rights (protected) : liste tous les droits de l'utilisateurs (array)
- nickname (protected) : pseudo de l'utilisateur
- password (protected) : mot de passe chiffré de l'utilisateur
- passwordConfirm (protected) : confirmation chiffré du mot de passe (en réception d'un formulaire)
- email (protected) : email de l'utilisateur
- emailConfirm (protected) : confirmation de l'email de l'utilisateur
- subscribed (protected) : date d'inscription sous format timestamp (seconde)
- isConnected (public) : permet de savoir si l'utilisateur (le visiteur de la page) est connecté
- methodUsed (protected) : utilisé pour les sessions et cookies

Constantes

Liste des constantes d'attributs d'un utilisateur (utilisé pour les colonnes dans la base de donnée) :
- ID = id
- RANK = rank
- RIGHTS = rights
- NICKNAME = nickname
- PASSWORD = password
- CONFIRM_PASSWORD = passwordConfirm
- EMAIL = email
- CONFIRM_EMAIL = emailConfirm
- SUBSCRIBED = subscribed


Liste des constantes de types d'attributs :
- DATA_TYPE_NUMERIC = 100 - Pour tous les attributs numériques (int, float, double)
- DATA_TYPE_STRING = 101 - Pour tous les attributs qui sont des chaînes de caractères
- DATA_TYPE_ARRAY = 102 - Pour tous les attributs qui sont des tableaux (simples, associatifs, multidimenssionels, ...)
- DATA_TYPE_EMAIL = 103 - Pour tous les attributs d'emails comme utilisateur@serveur.com
- DATA_TYPE_PASSWORD = 104 - Pour tous les attributs de mots de passe chiffrés
Ces constantes de types d'attributs sont utilisées uniquement pour la méthode statique verifyAttribute.


Liste des constantes de méthodes de connexions :
- CONNECT_SIMPLE = 200 - Connexion avec le nickname ou l'email (sans mot de passe)
- CONNECT_SIMPLE_NICKNAME = 201 - Connexion avec le nickname uniquement (sans mot de passe)
- CONNECT_SIMPLE_EMAIL = 202 - Connexion avec l'email uniquement (sans mot de passe)
- CONNECT_CLASSIC = 203 - Connexion avec le nickname ou l'email (avec mot de passe)
- CONNECT_CLASSIC_NICKNAME = 203 - Connexion avec le nickname (avec mot de passe)
- CONNECT_CLASSIC_EMAIL = 203 - Connexion avec l'email (avec mot de passe)
Les constantes de connexion permettent de choisir une méthode de connexion et sont utilisés notamment par la méthode connect.


Liste des constantes pouvant être contenus dans le tableau retourné par la méthode exist :
- EXIST_ID = 300 - Un utilisateur existe déjà avec cet id
- EXIST_NICKNAME = 301 - Un utilisateur possède déjà ce nickname
- EXIST_EMAIL = 302 - Un utilisateur possède déjà cet email
Ces constantes ne sont pas vouées à être utiliser en dehors de la classe DSMUser.

Méthodes de DSMUser

boolean public access ( [string right, ...] )
boolean public add ( )
boolean public addGroup ( [int group, ...] )
boolean public addRight ( [string right, ...] )
boolean public autoConnect ( )
void public ban ( string reason, int duration )
boolean public changePassword ( string new, string confirmation )
boolean public changePassword ( string old, string new, string confirmation )
boolean public connect ( array[] parameters )
boolean public connect ( constant method, [string informations, ...] )
int public countloads ( )
int public countLoads ( int since )
int public countVisits ( )
int public countVisits ( int id )
void public disconnect ( )
boolean|array[] public exist ( )
boolean|array[] public exist ( [string attribute, ...] )
boolean|array[] public exist ( string attribute, ? value )
string public get ( string attribute )
boolean public getById ( int id )
array[key] public getGroupsInfos ( )
array[key] public getHighestGroup ( )
string public getHighestGroupName ( )
array[] public getIpList ( )
boolean public has ( [string right, ...] )
boolean public hydrate ( array[key] attributes )
boolean public isAdmin ( )
boolean public static isEmail ( string email )
int public lastVisit ( )
int public lastVisit ( int id )
array[key] public load ( int id )
array[key] public load ( constant|string attribute, ? value )
boolean public static passwordsMatch ( string reference, string test )
boolean public rememberMe ( int seconds )
boolean public removeGroup ( int group )
boolean public removeRight ( string right )
boolean public secureConnect ( constant method, string login )
boolean public secureConnect ( constant method, string login, int maxAttmpts )
boolean public secureConnect ( constant method, string login, int maxAttempts, int timelimit )
boolean public secureConnect ( constant method, string login, string password )
boolean public secureConnect ( constant method, string login, string password, int maxAttempts )
boolean public secureConnect ( constant method, string login, string password, int maxAttempts, int timelimit )
void public session ( )
boolean public set ( constant|string attribute, ? value )
boolean|array public subscribe ( mutliple constant flag )
int public totalUsers ( )
boolean public update ( )
array[key] public static treatDataForm ( array[key] form, string toDelete )
true|DSMError public static verifyAttribute ( constant type, ? value )

Setters d'attributs

- setId
- setGroups
- setRights
- setNickname
- setPassword
- setPasswordConfirm
- setEmail
- setEmailConfirm
- setLang
- setSubscribed
- Pour les autres, voir la méthode set

Accesseurs d'attributs

- getId
- getGroups
- getRights
- getNickname
- getPassword
- getPasswordConfirm
- getEmail
- getEmailConfirm
- getLang
- getSubscribed
- Pour les autres, voir la méthode get

Méthodes et attributs héritées de DSMRanks

Attributs :
- rankList (protected) : tableau associatif contenant tous les rangs et les informations des rang
- rightList (protected) : tableau associatif contenant tous les droits et la description des droits

Méthodes :
- getRankFromList (public) : récupère les informations d'un rang
- getRankList (public) : Renvoie l'attribut rankList
- getRightFromList (public) : récupère les informations d'un droit
- getRightList (public) : Renvoie l'attribut rightList

addGroup

Syntaxe

public boolean addGroup ( [int group, ...] )

Description

Permet d'ajouter plusieurs groupes à la liste de groupes de l'utilisateur courant (modifie la valeur de l'attribut groups)

Paramètre

  • int group : Le groupe dans lequel vous souhaitez que l'utilisateur soit ajouté. Vous pouvez spécifier plusieurs groupes à la fois en un seul appel de méthode les séparant par des virgules.

Valeur de retour

  • boolean : Retourne vrai si l'utilisateur a rejoint au moins un groupe.

Erreurs

Plage erreur : 11329xx

Exemple

$dsm -> addGroup(300);
$user -> update();

addRight

Syntaxe

public boolean addRight ( [string right, ...] )

Description

Permet d'ajouter plusieurs droits à la liste de groupes de l'utilisateur courant (modifie la valeur de l'attribut rights)

Paramètre

  • string right : Le droit que vous souhaitez ajouter à l'utilisateur. Vous pouvez spécifier plusieurs droits à la fois en un seul appel de méthode, en séparant les droits par des virgules.

Valeur de retour

  • boolean : Retourne vrai si le(s) droit(s) a été ajouté à l'utilisateur.

Erreurs

Plage erreur : 11328xx

Exemple

$dsm -> addRight('admin.control.console');
$user -> update();

removeGroup

Syntaxe

public boolean removeGroup ( int group )

Description

removeGroup-description

Paramètre

  • int group : removeGroup-p-group

Valeur de retour

  • boolean : removeGroup-return

Erreurs

Plage erreur : 11331xx

  • #1133100 : Impossible to remove the user from this group : the user is not in this group

Exemple

$dsm -> removeGroup(300);
$user -> update();

removeRight

Syntaxe

public boolean removeGroup ( string right )

Description

removeRight-description

Paramètre

  • string right : removeRight-p-right

Valeur de retour

  • boolean : removeRight-return

Erreurs

Plage erreur : 11330xx

  • #1133000 : Impossible to remove the right to the user : the user doesn't have this right

Exemple

$dsm -> removeRight('admin.control.console');
$user -> update();

hydrate

La méthode hydrate va attribuer des valeurs aux attributs de l'objet User instancié. Pour cela, il faut fournir un tableau associatif avec les clés correspondant aux noms des attributs.

Cette méthode est compatible avec tous les attributs rajoutés dans votre classe User à condition qu'ils aient des setter valides.

Syntaxe :

$array(DSMUser::ID => 14, DSMUser::NICKNAME => "Babar", DSMUser::Email => "babar@lelephan.com");

$user -> hydrate($array);

Valeur de retour : (boolean) correspondant au succès ou nom de l'hydratation. Il est possible que la méthode retourne false alors que certains attributs ont bien reçus une valeur. Cela est causé par le renvoie de false (en fin d'execution de la méthode) si il y a eu une seule affectation d'attribut qui a raté.

Utilisation avec un formulaire :
Il peut être intéressant de coupler la méthode hydrate avec un formulaire HTML. Il suffit de fournir en paramètre de la méthode hydrate la variable $post (ou $_POST si vous n'utilisez pas le DSM).

// $post reçu : Array("otherPost" => "datadatadata", "test_id" => 14, "test_nickname" => "Babar")

$getValues = DSMUser::treatDataForm($post, "test_");
//$getValues contient : Array("id" => 14, "nickname" => "Babar")

$newUser = new User();
$newUser -> hydrate($getValues);

L'utilisation de treatDataForm est expliqué ici.

Plage erreur : 11301--

set

La méthode set permet d'affecter une valeur à un attribut. Cette méthode permet d'affecter des valeurs aux attributs natifs de la classe DSMUser mais aussi aux attributs que vous avez rajoutés à la classe User. En effet, la méthode set va chercher le setter correspondant à votre attribut personnalisé.

Syntaxe :

$user -> set(DSMUser::ID, 14);

$user -> set(DSMUser::NICKNAME, "Babar");
//Vous pouvez aussi écrirer directement le nom de l'attribut :
$user -> set('nickname', 'Babar');

Valeur de retour : (boolean) Résultat du set (réussit ou échoué)
Plage erreur : 11302--

Tous les attributs natifs qui peuvent être set se trouvent dans la liste des constantes d'attributs.

verifyAttribute

Permet la vérification de la validité de la valeur pour un certain type d'attribut. Par exemple vérifier que la valeur est bien bien un nombre, un mot de passe, ou encore un email (liste détaillé plus bas).
Syntaxe :

DSMUser::verifyAttribute($type, $value);

Paramètres :

  • type : string - Voir liste des types d'attributs ci-dessous
  • value : valeur à tester

Types d'attributs :

  • DATA_TYPE_NUMERIC = 100 - Pour tous les attributs numériques (int, float, double)
  • DATA_TYPE_STRING = 102 - Pour tous les attributs qui sont des chaînes de caractères
  • DATA_TYPE_EMAIL = 104 - Pour tous les attributs d'emails comme utilisateur@serveur.com
  • DATA_TYPE_PASSWORD = 105 - Pour tous les attributs de mots de passe chiffrés
  • DATA_TYPE_LANG = 106 - Pour tous les attributs de types langues

Valeurs de retour :

  • En cas de valeur valide la méthode retourne true (boolean).
  • En cas de valeur non valide pour le type d'attribute, la méthode retourne un objet DSMError

Plage erreur : 11303--

Exemple :

$test = DSMUser::verifyAttribute(DSMUser::DATA_TYPE_NUMERIC, $value);

if ($test instanceof DSMError) { 
	echo "Erreur ! La valeur n'est pas un nombre !";
	$dsm -> error($test);
} else echo "Succès !";

setId

Cette méthode est équivalente à :

$dsm -> set(DSMUser::ID, $value)

setGroups

Cette méthode est équivalente à :

$dsm -> set(DSMUser::GROUPS, $value)

setRights

Cette méthode est équivalente à :

$dsm -> set(DSMUser::RIGHTS, $value)

setNickname

Cette méthode est équivalente à :

$dsm -> set(DSMUser::NICKNAME, $value)

setPassword

Cette méthode est équivalente à :

$dsm -> set(DSMUser::PASSWORD, $value)

setPasswordConfirm

Cette méthode est équivalente à :

$dsm -> set(DSMUser::CONFIRM_PASSWORD, $value)

setEmail

Cette méthode est équivalente à :

$dsm -> set(DSMUser::EMAIL, $value)

setEmailConfirm

Cette méthode est équivalente à :

$dsm -> set(DSMUser::CONFIRM_EMAIL, $value)

setLang

Cette méthode est équivalente à :

$dsm -> set(DSMUser::LANG, $value)

setSubscribed

Cette méthode est équivalente à :

$dsm -> set(DSMUser::SUBSCRIBED, $value)

get

La méthode get permet de récupérer la valeur d'un attribut. Elle peut récupérer les valeurs des attributs natifs de la classe DSMUser mais aussi de tous les attributs ajoutés à la classe User à condition qu'ils aient une méthode get associée.

Syntaxe :

$user -> get($type);

Paramètre :

  • type (string) : C'est l'attribut de l'utilisateur que vous souhaitez récupérer

Valeur de retour : Valeur de l'attribut, ou false si aucun getter n'existe pour l'attribut.
Plage erreur : 11304--

Tous les attributs natifs qui peuvent être récupérer par get se trouvent dans la liste des constantes d'attributs. Pour des attributs que vous avez créé vous même dans User, mettez simplement son nom, ou implémentez une constante correspondante.

getId

Cette méthode est équivalente à :

$dsm -> get(DSMUser::ID, $value)

getGroups

Cette méthode est équivalente à :

$dsm -> get(DSMUser::GROUPS, $value)

getRights

Cette méthode est équivalente à :

$dsm -> get(DSMUser::RIGHTS, $value)

getNickname

Cette méthode est équivalente à :

$dsm -> get(DSMUser::NICKNAME, $value)

getPassword

Cette méthode est équivalente à :

$dsm -> get(DSMUser::PASSWORD, $value)

getPasswordConfirm

Cette méthode est équivalente à :

$dsm -> get(DSMUser::CONFIRM_PASSWORD, $value)

getEmail

Cette méthode est équivalente à :

$dsm -> get(DSMUser::EMAIL, $value)

getEmailConfirm

Cette méthode est équivalente à :

$dsm -> get(DSMUser::CONFIRM_EMAIL, $value)

getLang

Cette méthode est équivalente à :

$dsm -> get(DSMUser::LANG, $value)

getSubscribed

Cette méthode est équivalente à :

$dsm -> get(DSMUser::SUBSCRIBED, $value)

exist

Recherche l'existence d'utilisateurs ayant le même ID, nickname, ou email.
Syntaxes :

Pour tester si il existe un utilisateur ayant le même ID, ou nickname, ou email dans la base de donnée :

$user -> exist();

Pour tester si il existe un utilisateur ayant la même valeur pour l'attribut désigné par $attribute :

$user -> exist($attribute);

Pour tester si un utilisateur a $value comme valeur pour $attribute :

$user -> exist($attribute, $value);

Pour tester si il existe un utilisateur ayant la même valeur pour l'attribut $attribute1, ou la même valeur pour l'attribute2, ou la même valeur pour l'attribute3, ...

$user -> exist($attribute1, $attribute2, ...);

Valeurs de retour : Si aucun utilisateur n'a été trouvé la méthode renvoie false. Sinon renvoie un tableau contenant les attributs dont on a trouvé une valeur identique dans la base de donnée.

Plage erreur : 11310--

access

Cette méthode est très similaire à la méthode has à ceci près qu'en plus de tester si l'utilisateur possède les droits donnés, il vérifie son groupe : si l'utilisateur a un group de niveau 1000 (équivalent au groupe Administrateur), la méthode renvoie systematiquement true. Syntaxe :

$user -> access($right);
$user -> access($right1, $right2, $right2, $right3, ...);

La méthode access accepte autant de paramètres $right que vous le souhaitez.
Paramètre :

  • $right : Droit d'accès sous forme de string. Peut être référencé ou non sur la page admin.

Valeur de retour : (Boolean) pour "possède" ou "ne possède pas" le droit ET/OU si l'utilisateur fait partie du groupe de niveau 1000
Plage erreur : 11305--

La gestion des droits est très complète et ne se limite pas à la détention simple d'un droit, vous pouvez en savoir plus ici.

Exemple :

if ($user -> access("gestion")) {
	//Accès à la partie Gestion
}

//Est équivalent à :
if ($user isAdmin() || $user -> has("gestion")) {
	//Accès à la partie Gestion
}

isAdmin

Permet de savoir si l'utilisateur fait partie du groupe Administrateur de niveau 1000. Syntaxe :

if ($user -> isAdmin())
	
//Est equivalent à :
if ($user -> partOf(1000))

Valeur de retour : (boolean)
Plage erreur : 11319--

load

La récupération de données via cette méthode n'est pas du tout conseillée. La méthode load permet de charger sous forme de tableau associatif (retour de fetch sur un objet PDO) les données d'un utilisateur directement depuis la base de donnée. Syntaxes :

$user -> load($id);
$user -> load($attribute, $value);

Valeur de retour : Retourne un tableau associatif contenant les données de l'utilisateur récupéré
Plage erreur : 11306--

subscribe

Cette méthode est communément utilisée pour l'inscription d'un utilisateur. Elle va ajouter l'utilisateur instancié dans la base de donnée à l'aide de la méthode add.
Avant l'appel de add, subscribe peut effectuer plusieurs vérifications, tels que la préexistance de l'utilisateur dans la base de donnée selon les paramètres que vous lui fournirez, mais aussi que le mot de passe et sa confirmation sont identiques, tout comme l'e-mail et sa confirmation.

Syntaxes :

$user -> subscribe(); //Equivalent à la méthode add
			
//Vous pouvez ajouter autant de flags que vous le souhaitez, chaque flag correspond à une vérification avant l'inscription :
$this -> subscribe($flag, ...);

Paramètres :

  • DSMUser::CONFIRM_PASSWORD : vérifie que les valeurs de password et passwordConfirm sont identiques
  • DSMUser::CONFIRM_EMAIL : vérifie que les valeurs email et emailConfirm sont identiques
  • DSMUser::ID : vérifie qu'aucun utilisateur n'a cet ID dans la base de donnée
  • DSMUser::NICKNAME : vérifie qu'aucun utilisateur n'a ce nickname dans la base de donnée
  • DSMUser::EMAIL : vérifie qu'aucun utilisateur n'a cet email dans la base de donnée
  • Toute autre constante désignant un attribut (enregistré via registerAttribute) peut être vérifié.

Valeurs de retour :

  • L'utilisateur a réussi tous les tests : Retourne la valeur de add
  • Au moins un test a échoué : on renvoie un tableau contenant tous les flags de tests échoués.

Plage erreur : 11314--

add

Cette méthode permet de sauvegarder l'utilisateur dans la base de donnée.

Aucune vérification n'est faite sur l'existence dans la base de donnée d'un utilisateur avec le même id/nickname/email. Il est donc conseillé d'entourer cette méthode d'un test avec la méthode exist.

Syntaxe :

$dsm -> add();
			
//Utilisation sécurisée :
if (!$user -> exist("id")) $user -> add();
else $dsm -> error(0, "Un utilisateur avec cet identifiant existe déjà dans la base de donnée !");

Valeur de retour : boolean
Plage erreur : 11307--

update

Permet de mettre à jour les données d'un utilisateur enregistré.

Syntaxe :

$user -> update();

Valeur de retour : boolean
Plage erreur : 11309-

Exemple :

$user = new User();
$user -> getBydId(14);

$user -> set('nickname', "Laurent");
$user -> update();

changePassword

Cette méthode permet de modifier le mot de passe de l'utilisateur et les met automatiqument à jour dans la base de donnée via la méthode update.

Syntaxes :

$user -> changePassword($newPassword, $newPasswordConfirmation);
$user -> changePassword($oldPassword, $newPassword, $newPasswordConfirmation);

Paramètres :

  • $oldPassword : Mot de passe avant changement (doit être identique à $user -> password)
  • $newPassword : Nouveau mot de passe (doit être identique à $newPasswordConfirmation)
  • $oldPassword : Confirmation du nouveau mot de passe (doit être identique à $newPassword)

Valeur de retour : boolean
Plage erreur : 11320xx

secureConnect

Permet à l'utilisateur de se connecter de manière sécurisée. C'est à dire de fournir des identifiants (nickname/email/password) pour instancier un utilisateur, cette instance pourra être utilisé sur toutes les pages de la session (ou même pour plusieurs session grâce au cookie).

La méthode appelle la méthode connect mais empêche le visiteur de la page d'effectuer plus d'un certain nombre de tentatives de connexions pendant un laps de temps définit.

Syntaxes :

$user -> secureConnect($method, $identifiant);
$user -> secureConnect($method, $identifiant, $password); 
$user -> secureConnect($method, $identifiant, $maxAttempts);
$user -> secureConnect($method, $identifiant, $maxAttempts, $timelimit);
$user -> secureConnect($method, $identifiant, $password, $maxAttempts);
$user -> secureConnect($method, $identifiant, $password, $maxAttempts, $timelimit);

Paramètres :

  • $method : Constante de méthode de connexion. Consulter la liste ici
  • $identifiant : Dépend de la méthode de connexion, peut être à la fois un nickname ou un email
  • $password : Mot de passe de l'utilisateur (facultatif suivant la méthode de connexion)
  • $maxAttempts : Nombre de tentatives de connexion autorisées pendant le laps de temps $limit. Valeur par défaut : 10
  • $timelimit : Temps à attendre en secondes lorsque le nombre de tentatives autorisées $maxAttemps a été atteint. C'est également le temps que l'utilisateur qui souhaite se connecter a pour effectuer ses $maxAttempts tentatives de connexion. Valeur par défaut : 900

Valeur de retour : boolean
Exemple :

$user = new User();
$connection = $user -> secureConnect(DSMUser::CONNECT_CLASSIC_NICKNAME, $post['nickname'], $post['password'], 3, 1800);

if ($connection)
	//Succès

Plage erreur : 11312xx

connect

Permet à l'utilisateur de se connecter. C'est à dire de fournir des identifiants (nickname/email/password) pour instancier un utilisateur et le sauvegarder pour la session.

7 Il existe plusieurs méthodes de connexion plus ou moins permissives pour l'utilisateur. Elles sontr très simples d'utilisation.

Syntaxe :

$user -> connect($method, $identifiant);
$user -> connect($method, $identifiant, $password);

Paramètres :

  • $method : Constante de méthode de connexion. Consulter la liste ici
  • $identifiant : Dépend de la méthode de connexion, peut être à la fois un nickname ou un email
  • $password : Mot de passe de l'utilisateur (facultatif suivant la méthode de connexion)

Exemple :

$user = new User(14);

$user -> connect(DSMUser::CONNECT_CLASSIC, $post['email'], $post['password']);

Vous pouvez également créer votre propre méthode de connexion. Pour cela, mettez le nom de la méthode que vous avez créé comme argument pour $method. Vous pouvez gérer les autres arguments au sein de votre méthode personnalisé avec le tableau d'arguments $a. Cette méthode personnalisé sera compatible avec toutes les méthodes de la classe DSMUser.
Plage erreur : 11308xx

autoConnect

La méthode autoConnect permet d'appeler la méthode connect suivant les données sauvées dans la variable session ou cookie : c'est une connexion automatique.

Appelez la méthode autoConnect pour hydrater automatiquement un objet User correspondant au visiteur de la page.

Lors de la connexion (appel de la fonction connect ou secureConnect), il faut appeler la méthode session afin que cette connexion soit automatique pour tout le reste de la session de l'utilisateur. Toujours au cours de la connexion, appelez rememberMe pour que la connexion soit sauvegardée en cookie.

La sauvegarde de connexion via session ou cookie se fait de manière chiffrée.

Syntaxe :

$user = new User();

$user -> autoConnect();

Valeur de retour : boolean
Plage erreur : N/A (attention, autoConnect appelle connect, possible erreurs 11308xx)

rememberMe

Sauvegarde dans un cookie toutes les informations utiles à la connexion automatique de l'utilisateur (via autoConnect). Ce cookie est chiffrée à l'aide de TCS6 et votre clé (fichier config)

Syntaxe :

$user -> rememberMe($seconds);

Paramètre :

  • $seconds : Temps de validité du cookie en secondes

Valeur de retour : boolean
Plage erreur : N/A

session

Sauvegarde le temps d'une session les informations utiles à la connexion automatique de l'utilisateur (via autoConnect). Cette variable session est chiffrée à l'aide de TCS6 et votre clé (fichier config).

Syntaxe :

$user -> session();

Valeurs de retour : void

Plage erreur : N/A

disconnect

Déconnecte l'utilisateur : suppression de la variable session et du cookie.

Syntaxe :

$user -> disconnect();

Valeur de retour : void

getGroupsInfos

Permet d'obtenir toutes les informations sur les groupes dont l'utilisateur fait partie.

Syntaxe :

echo $user -> getGroupsInfos();

Valeur de retour : array associatif de la forme de la variable groupList de la classe DSMGroups.
Plage erreur : N/A

getHighestGroup

Renvoie le niveau le plus haut de tous les groupes dont l'utilisateur fait partie

Syntaxe :

$user -> getHighestGroup();

Valeur de retour : (int) niveau du groupe
Plage erreur : N/A
Exemple :

if ($user -> getHighestGroup() > 10)
	echo "Vous avez le rang suffisant";

getById

Permet de récupérer les données d'un utilisateur depuis la base de donnée en précisant son ID.

Après la récupération des données depuis la base de donnée, la méthode hydrate l'objet avec les données récupérées.

Syntaxe :

$user -> getById($id);

Paramètre :

  • id : int - identifiant unique de l'utilisateur

Plage erreur : 11315xx

lastVisit

Retourne la dernière visite de l'utilisateur (recherché dans les logs).

Syntaxe :

$user -> lastVisit();
$user -> lastVisit($id);

Paramètre :

  • $id Retourne la dernière connexion de l'utilisateur ayant comme id la valeur $id. Sans ce paramètre, c'est la dernière visite de l'utilisateur $user qui est renvoyée.

Valeur de retour : int - temps de la dernière visite en secondes (timestamp)
Plage erreur : 11153--

countLoads

Compte le nombre de pages que l'utilisateur a chargé depuis un temps donné.

Syntaxes :

$user -> countLoads();
$user -> countLoads($since);

Paramètre :

  • $since : timestamp à parti duquel il faut compter le nombre de chargements de pages (vaut 0 si non fournit).

Valeur de retour : int - Nombre de pages chargées par l'utilisateur depuis $since.
Plage erreur : 11316xx

countVisits

Compte le nombre de sessions qui ont été ouvertes par l'utilisateur depuis un temps donné.

Syntaxes :

$user -> countVisits();
$user -> countVisits($since);

Paramètre :

  • $since : timestamp à parti duquel il faut compter le nombre de sessions (vaut 0 si non fournit).

Valeur de retour : int - retourne le nombre de visites depuis $since.
Plage erreur : 11317xx

passwordsMatch

Cette méthode statique indique si les deux mots de passe fournits en paramètre sont identiques, peu importe si l'un d'eux est chiffré ou non.

Syntaxe :

DSMUser::passwordsMatch($reference, $test);

Paramètre :

  • $reference : mot de passe chiffré (généralement c'est la valeur de l'attribut password)
  • $test : mot de passe chiffré ou non qu'on va comparer à la référence

Valeur de retour : boolean - true si les mots de passes correspondent
Exemple :

if (DSMUser::passwordsMatch($user -> get('password'), $post['password'])) echo "Yeap!";

getIpList

Retourne la liste de toutes les IP avec lesquelles l'utilisateur s'est connecté.

Syntaxes :

$list = $user -> getIpList();
$list = $user -> getIpList($id);

Paramètre :

  • id : Si vous souhaitez obtenir la liste d'IP d'un utilisateur différent de l'objet instancié, précisez son identifiant.

Valeur de retour : array contenant toutes les IP de l'utilisateurs
Plage erreur : 11318xx

isEmail

La méthode isEmail détermine si une chaîne donnée a bien le format d'un e-mail.
Syntaxe :

DSMUser::isEmail($email);

Valeur de retour : boolean - Si la chaîne $email est un email, renvoie true.
Exemple : Plage erreur : N/A

has

Cette méthode permet de déterminer si l'utilisateur possède les droits donnés en paramètre. Afin de retourner true, il faut que l'utilisateur possède tous les droits passés en paramètre. Syntaxe :

$user -> has($right);
$user -> has($right1, $right2, $right2, $right3, ...);

La méthode has accepte autant de paramètres $right que vous le souhaitez.
Paramètre :

  • $right : Droit d'accès sous forme de string. Peut être référencé ou non sur la page admin.

Valeur de retour : (Boolean) pour "possède" ou "ne possède pas" le droit
Plage erreur : 11305--

La gestion des droits est très complète et ne se limite pas à la détention simple d'un droit, vous pouvez en savoir plus ici.

treatDataForm

Cette méthode statique permet de traiter plusieurs formulaires utilisateurs contenant plusieurs champs nickname. Afin de les différencier, mettez une constante devant ces champs.

Au moment du traitement, treatDataForm va retirer une constante en début de chaîne à toutes les clés d'un tableau associatif donnée.

Syntaxe :

DSMUser::treatDataForm($form, $toDelete);

Paramètre :

  • form : array - tableau associatif contenant les variables à traiter
  • toDelete : string - constante à enlever des débuts de clés des entrées du tableau

Valeur de retour : array - retourne le tableau contenant toutes les entrées avec des clés qui commençaient par $toDelete dans $form, mais en enlevant $toDelete du début des clés.

Exemple : Vous recevez le formulaire d'ajout d'utilisateur suivant :

print_r($post);
			
//Affiche : Array("addUser_nickname" => "Babar", "addUser_password" => "123456", "addUser_rank" => 4, "autre_clef" => "autre_valeur")

$userArray = DSMUser::treatDataForm($post, "addUser_");

print_r($userArray);

//Affiche : Array("nickname" => "Babar", "password" => "123456", "rank" => 4);
//Toutes les clés contenant addUser_ se sont vus retirés addUser_, la clé ne contenant pas addUser_ n'a pas été ajoutée

$newUser = new User($dsm, $userArray);
$user -> subscribe();