dolibarr 18.0.6
modGeneratePassStandard.class.php
Go to the documentation of this file.
1<?php
2/* Copyright (C) 2006-2011 Laurent Destailleur <eldy@users.sourceforge.net>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <https://www.gnu.org/licenses/>.
16 * or see https://www.gnu.org/
17 */
18
25require_once DOL_DOCUMENT_ROOT.'/core/modules/security/generate/modules_genpassword.php';
26
27
32{
36 public $id;
37
38 public $picto = 'fa-shield-alt';
39
45 public $length;
46
52 public $length2;
53
57 public $db;
58
59 public $conf;
60 public $lang;
61 public $user;
62
63
72 public function __construct($db, $conf, $langs, $user)
73 {
74 $this->id = "standard";
75 $this->length = 12;
76 $this->length2 = 12;
77
78 $this->db = $db;
79 $this->conf = $conf;
80 $this->langs = $langs;
81 $this->user = $user;
82 }
83
89 public function getDescription()
90 {
91 global $langs;
92 return $langs->trans("PasswordGenerationStandard", $this->length);
93 }
94
100 public function getExample()
101 {
102 return $this->getNewGeneratedPassword();
103 }
104
110 public function getNewGeneratedPassword()
111 {
112 // start with a blank password
113 $password = "";
114
115 // define possible characters
116 $possible = "0123456789qwertyuiopasdfghjklzxcvbnmASDFGHJKLZXCVBNMQWERTYUIOP";
117
118 // set up a counter
119 $i = 0;
120
121 // add random characters to $password until $length is reached
122 while ($i < $this->length) {
123 // pick a random character from the possible ones
124 if (function_exists('random_int')) { // Cryptographic random
125 $char = substr($possible, random_int(0, dol_strlen($possible) - 1), 1);
126 } else {
127 $char = substr($possible, mt_rand(0, dol_strlen($possible) - 1), 1);
128 }
129
130 if (substr_count($password, $char) <= 6) { // we don't want this character if it's already 5 times in the password
131 $password .= $char;
132 $i++;
133 }
134 }
135
136 // done!
137 return $password;
138 }
139
147 public function validatePassword($password)
148 {
149 global $langs;
150
151 if (dol_strlen($password) < $this->length2) {
152 $langs->load("other");
153 $this->error = $langs->trans("YourPasswordMustHaveAtLeastXChars", $this->length2);
154 return 0;
155 }
156
157 return 1;
158 }
159}
Parent class for password rules/management modules.
Class to generate a password according to a dolibarr standard rule (12 random chars)
validatePassword($password)
Validate a password This function is called by User->setPassword() and internally to validate that th...
getDescription()
Return description of module.
getExample()
Return an example of password generated by this module.
__construct($db, $conf, $langs, $user)
Constructor.
dol_strlen($string, $stringencoding='UTF-8')
Make a strlen call.
conf($dolibarr_main_document_root)
Load conf file (file must exists)
Definition inc.php:400
$conf db user
Definition repair.php:124