mirror of
https://github.com/LucasVbr/password-generator.git
synced 2026-05-13 17:21:57 +00:00
Update
This commit is contained in:
+69
-39
@@ -4,65 +4,95 @@
|
|||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<link href="styles/style.css" rel="stylesheet">
|
<link href="styles/style.css" rel="stylesheet">
|
||||||
<title>Générateur de MDP</title>
|
<title>Générateur de MDP</title>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body onload="init()">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="card">
|
|
||||||
|
|
||||||
<!-- Resultat -->
|
<!-- Resultat -->
|
||||||
<div>
|
<div class="resultat">
|
||||||
<span id="password">Générateur de mot de passe</span>
|
<span id="password">Générateur de mot de passe</span>
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Paramètres -->
|
|
||||||
<fieldset>
|
|
||||||
<legend>Paramètres :</legend>
|
|
||||||
<div>
|
|
||||||
<input type="checkbox" id="caps-checkbox" name="caps-checkbox">
|
|
||||||
<label for="caps-checkbox">Majuscules</label>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<input type="checkbox" id="numbers-checkbox" name="numbers-checkbox">
|
|
||||||
<label for="numbers-checkbox">Nombres</label>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<input type="checkbox" id="specials-checkbox" name="specials-checkbox">
|
|
||||||
<label for="specials-checkbox">Caractères spéciaux</label>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<input type="range" name="nbDigits-range" id="nbDigits-range" min="1" , max="25" step="1">
|
|
||||||
<label for="nbDigits-range">Nombre de caractères</label>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<input type="button" id="submit-button" value="Generate" onclick="generate()">
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<label id="nbDigits-range-label"
|
||||||
|
for="nbDigits-range">Longueur ()</label>
|
||||||
|
<input type="range" name="nbDigits-range" id="nbDigits-range"
|
||||||
|
value="16" min="4" , max="40" step="1">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Paramètres -->
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox"
|
||||||
|
id="caps-checkbox" name="caps-checkbox">
|
||||||
|
<label for="caps-checkbox">Majuscules</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox"
|
||||||
|
id="numbers-checkbox" name="numbers-checkbox">
|
||||||
|
<label for="numbers-checkbox">Nombres</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="checkbox"
|
||||||
|
id="specials-checkbox" name="specials-checkbox">
|
||||||
|
<label for="specials-checkbox">Caractères spéciaux</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="button"
|
||||||
|
id="submit-button" value="Generate">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<script src="scripts/main.js"></script>
|
<script src="scripts/main.js"></script>
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
function generate() {
|
function init() {
|
||||||
/* HTML Elements */
|
updateNbDigitsRange()
|
||||||
let capsCheckBox = document.getElementById("caps-checkbox");
|
generate()
|
||||||
let numbersCheckBox = document.getElementById("numbers-checkbox");
|
}
|
||||||
let specialsCheckBox = document.getElementById("specials-checkbox");
|
|
||||||
let nbDigitsRange = document.getElementById("nbDigits-range");
|
|
||||||
let passwordInput = document.getElementById("password");
|
|
||||||
|
|
||||||
|
function generate() {
|
||||||
/* Values */
|
/* Values */
|
||||||
var nbDigits = nbDigitsRange.value
|
var nbDigits = nbDigitsRange.value
|
||||||
var hasCaps = capsCheckBox.checked;
|
var hasCaps = capsCheckBox.checked;
|
||||||
var hasNumbers = numbersCheckBox.checked;
|
var hasNumbers = numbersCheckBox.checked;
|
||||||
var hasSpecials = specialsCheckBox.checked;
|
var hasSpecials = specialsCheckBox.checked;
|
||||||
|
|
||||||
var passwordGenerated = generatePassword(nbDigits, hasCaps, hasNumbers, hasSpecials)
|
var passwordGenerated = generatePassword(nbDigits,
|
||||||
|
hasCaps,
|
||||||
|
hasNumbers,
|
||||||
|
hasSpecials)
|
||||||
|
|
||||||
password.innerHTML = passwordGenerated
|
password.innerHTML = passwordGenerated
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function updateNbDigitsRange() {
|
||||||
|
var nbDigits = nbDigitsRange.value
|
||||||
|
nbDigitsRangeLabel.innerHTML = `Longueur (${nbDigits})`
|
||||||
|
}
|
||||||
|
|
||||||
|
/* HTML Elements */
|
||||||
|
let capsCheckBox = document.getElementById("caps-checkbox");
|
||||||
|
let numbersCheckBox = document.getElementById("numbers-checkbox");
|
||||||
|
let specialsCheckBox = document.getElementById("specials-checkbox");
|
||||||
|
let nbDigitsRange = document.getElementById("nbDigits-range");
|
||||||
|
let passwordInput = document.getElementById("password");
|
||||||
|
let nbDigitsRangeLabel = document.getElementById("nbDigits-range-label")
|
||||||
|
let submitButton = document.getElementById("submit-button");
|
||||||
|
|
||||||
|
/* Events */
|
||||||
|
capsCheckBox.addEventListener("input", () => generate())
|
||||||
|
numbersCheckBox.addEventListener("input", () => generate())
|
||||||
|
specialsCheckBox.addEventListener("input", () => generate())
|
||||||
|
submitButton.addEventListener("click", () => generate())
|
||||||
|
nbDigitsRange.addEventListener("input", () => {
|
||||||
|
updateNbDigitsRange()
|
||||||
|
generate()
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
|
|||||||
+4
-3
@@ -2,20 +2,21 @@ function generatePassword(nbDigits, caps, numbers, specials) {
|
|||||||
var resultat = ""
|
var resultat = ""
|
||||||
|
|
||||||
for (let i = 0; i < nbDigits ; i++) {
|
for (let i = 0; i < nbDigits ; i++) {
|
||||||
resultat += generateCharacter(caps, numbers, specials)
|
resultat += generateCharacter(true, caps, numbers, specials)
|
||||||
}
|
}
|
||||||
|
|
||||||
return resultat
|
return resultat
|
||||||
}
|
}
|
||||||
|
|
||||||
function generateCharacter(caps, numbers, specials) {
|
function generateCharacter(letters, caps, numbers, specials) {
|
||||||
var LETTERS_TABLE = "abcdefghijklmnopqrstuvwxyz"
|
var LETTERS_TABLE = "abcdefghijklmnopqrstuvwxyz"
|
||||||
var CAPS_TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
var CAPS_TABLE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||||
var NUMBERS_TABLE = "0123456789"
|
var NUMBERS_TABLE = "0123456789"
|
||||||
var SPECIALS_TABLE = "!#$%&'()*+,-./:;=?@[]^_`{|}~";
|
var SPECIALS_TABLE = "!#$%&'()*+,-./:;=?@[]^_`{|}~";
|
||||||
|
|
||||||
var resultat = LETTERS_TABLE
|
var resultat = ""
|
||||||
|
|
||||||
|
if (letters) resultat += LETTERS_TABLE
|
||||||
if (caps) resultat += CAPS_TABLE
|
if (caps) resultat += CAPS_TABLE
|
||||||
if (numbers) resultat += NUMBERS_TABLE
|
if (numbers) resultat += NUMBERS_TABLE
|
||||||
if (specials) resultat += SPECIALS_TABLE
|
if (specials) resultat += SPECIALS_TABLE
|
||||||
|
|||||||
+37
-18
@@ -1,38 +1,57 @@
|
|||||||
|
@import url('https://fonts.googleapis.com/css2?family=Open+Sans&display=swap');
|
||||||
|
|
||||||
body {
|
body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
|
|
||||||
|
font-family: 'Open Sans', sans-serif;
|
||||||
background-color: #2c3e50;
|
background-color: #2c3e50;
|
||||||
color: #ecf0f1;
|
color: #ecf0f1;
|
||||||
}
|
}
|
||||||
|
|
||||||
.container {
|
.container {
|
||||||
text-align: center;
|
|
||||||
height: 100%;
|
height: 100%;
|
||||||
display: grid;
|
padding: 2.5rem 10rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card {
|
.resultat {
|
||||||
width: 500px;
|
padding: 25px 0;
|
||||||
height: 700px;
|
|
||||||
|
|
||||||
margin: auto;
|
|
||||||
padding: 25px;
|
|
||||||
|
|
||||||
background-color: #34495e;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#password {
|
#password {
|
||||||
background-color: #2c3e50;
|
|
||||||
padding: 0 10px;
|
font-size: 2rem;
|
||||||
font-size: 2em;
|
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
font-family : consolas
|
font-family: consolas;
|
||||||
|
color: #2ecc71;
|
||||||
}
|
}
|
||||||
|
|
||||||
fieldset div {
|
/* General Range */
|
||||||
text-align: left;
|
input[type="range"] {
|
||||||
}
|
-webkit-appearance: none;
|
||||||
|
margin: 18px 0;
|
||||||
|
width: 100%;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
input[type="range"]:focus {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Chrome Range */
|
||||||
|
input[type="range"]::-webkit-slider-runnable-track {
|
||||||
|
height: 8px;
|
||||||
|
cursor: pointer;
|
||||||
|
background-color: #ecf0f1;
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
input[type="range"]::-webkit-slider-thumb {
|
||||||
|
height: 30px;
|
||||||
|
width: 30px;
|
||||||
|
border-radius: 50%;
|
||||||
|
background: #ffffff;
|
||||||
|
cursor: pointer;
|
||||||
|
-webkit-appearance: none;
|
||||||
|
margin-top: calc( (8px - 30px) / 2);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user