Aller au contenu principal
Coop.tools
Rechercher
×
Voir les cartes
Ajouter une carte
Cartes favorites
Documentation
Se connecter
×
Se connecter
Email ou nom d'utilisateur.ice
Mot de passe
Mot de passe perdu ?
Se souvenir de moi
Se connecter
S'inscrire
Documentation
Présentation YesWiki
Gestion du site
Tableau de bord
Mes contenus
Base de données
Badges Qrcode
Scanner Qrcode
Visualisation Qrcode Troc
Coop.tools
Coop Tools
Des outils pour coopérer
Sauver
Format
Titre 1
Titre 2
Titre 3
Titre 4
Centré
Texte agrandi
Texte mis en valeur
Code source en mode bloc
Code source en mode ligne
Commentaire, visible uniquement en mode édition
Activer JavaScript pour joindre des fichiers.
Fichier
Annuler
échoué
Composants
Éditer le composant sélectionné
Boutons
Mise en forme
Syndication / Flux RSS
Réactions / Votes
Vidéo intégrée
Actions d'envoi d'e-mail/listes
Gestion des tags
Afficher un formulaire de création de fiche
Afficher les données d'un formulaire
Actions avancées
<section class="wrapper"> <h1>Générateur de mot de passe</h1> <div class="password-box"> <span id="password" class="password" v-on:click="copyToClipboard">{{ password }}</span> <span class="regenerate-password" v-on:click="generatePassword"></span> <span class="copy-password" v-on:click="copyToClipboard"></span> <span class="tooltip" v-if="copied">Mot de passe copié avec succès!</span> </div> <form @keydown.enter.prevent=''> <div class="field-wrap"> <label>Force</label> <span class="range-value">{{strength.text}}</span> <div class="range-slider_wrapper slider-strength" v-bind:class="strength.text"> <span class="slider-bar" v-bind:style="{ width: strength.score + '%' }"></span> <input type="range" class="range-slider" min="0" max="100" v-model="strength.score" disabled> </div> </div> <div class="seperator"></div> <div class="field-wrap"> <label>Longueur</label> <span class="range-value">{{settings.length}}</span> <div class="range-slider_wrapper"> <span class="slider-bar" v-bind:style="{ width: lengthThumbPosition + '%' }"></span> <input type="range" class="range-slider" min="6" v-bind:max="settings.maxLength" v-model="settings.length"> </div> </div> <div class="field-wrap"> <label>Nombres</label> <span class="range-value">{{settings.digits}}</span> <div class="range-slider_wrapper"> <span class="slider-bar" v-bind:style="{ width: digitsThumbPosition + '%' }"></span> <input type="range" class="range-slider" min="0" v-bind:max="settings.maxDigits" v-model="settings.digits"> </div> </div> <div class="field-wrap"> <label>Caractères spéciaux</label> <span class="range-value">{{settings.symbols}}</span> <div class="range-slider_wrapper"> <span class="slider-bar" v-bind:style="{ width: symbolsThumbPosition + '%' }"></span> <input type="range" class="range-slider" min="0" v-bind:max="settings.maxSymbols" v-model="settings.symbols"> </div> </div> </form> </section> </div> <style> .wrapper { width: 500px; max-width: 100%; min-height: 400px; margin: 40px auto; position: relative; border: 1px solid #eee; border-radius: 3px; padding: 40px 20px; font-size: 0.85em; -webkit-box-shadow: 0 0 15px 0 rgba(0, 0, 0, 0.05); box-shadow: 0 0 15px 0 rgba(0, 0, 0, 0.05); background-color: #f4f7fc; position: relative; transition: all ease-in 0.25s; } .wrapper h1 { text-align: center; margin: 0 0 40px; font-size:32px; } .field-wrap { margin-bottom: 20px; } form { overflow: overlay; margin-top: 30px; } label { display: inline-block; min-width: 20%; } .range-slider_wrapper { position: relative; width: 100%; margin: 10px 0 30px; } .range-slider { -webkit-appearance: none; appearance: none; background: #9fd2fa; width: 100%; border-radius: 3px; vertical-align: bottom; margin: 0; height: 6px; cursor: pointer; transition: all ease-in 0.25s; } .range-slider::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; border-radius: 0; border: 0; position: relative; width: 4px; height: 15px; background-color: #2799f3; } .range-slider::-moz-range-thumb { -moz-appearance: none; appearance: none; border-radius: 0; border: 0; position: relative; width: 4px; height: 15px; background-color: #2799f3; } .range-slider:focus { outline: none; } .range-slider:hover::-webkit-slider-thumb, .range-slider:active::-webkit-slider-thumb { top: 0px; } ::-moz-range-track { background: transparent; border: 0; } input::-moz-focus-inner, input::-moz-focus-outer { border: 0; } .range-value { text-transform: capitalize; float: right; vertical-align: bottom; min-width: 30px; display: inline-block; text-align: center; border-radius: 3px; font-size: 0.9em; } .slider-bar { position: absolute; height: 6px; border-top-left-radius: 3px; border-bottom-left-radius: 3px; background: #3fa4f4; left: 0; bottom: 0; pointer-events: none; } .slider-strength .range-slider { cursor: default; } .slider-strength .slider-bar { border-radius: 3px; transition: all ease-in 0.25s; } .slider-strength .range-slider::-webkit-slider-thumb { background-color: transparent; } .slider-strength .range-slider::-moz-range-thumb { background-color: transparent; } .slider-strength.weak .range-slider { background-color: white; } .slider-strength.weak .slider-bar, .slider-strength.weak .slider-bar:after { background-color: #ff6666; } .slider-strength.average .range-slider { background-color: #ffd699; } .slider-strength.average .slider-bar, .slider-strength.average .slider-bar:after { background-color: #ff9800; } .slider-strength.strong .range-slider { background-color: #d5e9bd; } .slider-strength.strong .slider-bar, .slider-strength.strong .slider-bar:after { background-color: #8BC34A; } .slider-strength.secure .range-slider { background-color: #d5e9bd; } .slider-strength.secure .slider-bar, .slider-strength.secure .slider-bar:after { background-color: #8BC34A; } .password-box { width: 100%; min-height: 80px; margin-bottom: 40px; position: relative; text-align: center; border-radius: 3px; background: #fff; letter-spacing: 2px; transition: all ease-in 0.3s; border: 1px solid #bdcce6; } .password-box .password { width: 70%; padding: 1.5em 1em; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); word-wrap: break-word; } .regenerate-password, .copy-password { width: 44px; height: 50%; position: absolute; right: 0; transition: all ease-in 0.25s; } .regenerate-password:hover, .copy-password:hover { opacity: 0.8; } .regenerate-password { top: 0; background-color: #fff; background-image: url("https://nourabusoud.github.io/password-genie/images/regenerate.svg"); background-size: 40%; background-position: center center; background-repeat: no-repeat; transition: all ease-in 0.25s; cursor: pointer; } .regenerate-password:hover { background-color: #fff; } .copy-password { bottom: 0; background-color: #fff; background-image: url("https://nourabusoud.github.io/password-genie/images/copy-full.svg"); background-size: 50%; background-position: center center; background-repeat: no-repeat; transition: all ease-in 0.25s; cursor: pointer; } .copy-password:hover { background-color: #fff; } .tooltip { font-size: 0.8em; display: block; text-align: center; padding: 0.5em; border-radius: 3px; position: absolute; bottom: -35px; left: 50%; transform: translateX(-50%); } .seperator { width: 100%; height: 3px; background-color: #fff; margin: 60px 0 40px; } /* Footer */ footer { width: 100%; text-align: center; color: #fff; } footer a { color: #fff; } .github-links { margin-bottom: 30px; } textarea, textarea:focus { font-size: 16px; } </style> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.3/vue.min.js"></script> <script> new Vue({ el: '#app', data() { return { password: '', copied: false, settings: { maxLength: 64, maxDigits: 10, maxSymbols: 10, length: 20, digits: 4, symbols: 2, ambiguous: true, } }; }, computed: { lengthThumbPosition: function() { return (( (this.settings.length - 6) / (this.settings.maxLength - 6)) * 100); }, digitsThumbPosition: function() { return (( (this.settings.digits - 0) / (this.settings.maxDigits - 0)) * 100); }, symbolsThumbPosition: function() { return (( (this.settings.symbols - 0) / (this.settings.maxSymbols - 0)) * 100); }, strength: function() { var count = { excess: 0, upperCase: 0, numbers: 0, symbols: 0 }; var weight = { excess: 3, upperCase: 4, numbers: 5, symbols: 5, combo: 0, flatLower: 0, flatNumber: 0 }; var strength = { text: '', score: 0 }; var baseScore = 30; for (i=0; i < this.password.length;i++){ if (this.password.charAt(i).match(/[A-Z]/g)) {count.upperCase++;} if (this.password.charAt(i).match(/[0-9]/g)) {count.numbers++;} if (this.password.charAt(i).match(/(.*[!,@,#,$,%,^,&,*,?,_,~])/)) {count.symbols++;} } count.excess = this.password.length - 6; if (count.upperCase && count.numbers && count.symbols){ weight.combo = 25; } else if ((count.upperCase && count.numbers) || (count.upperCase && count.symbols) || (count.numbers && count.symbols)){ weight.combo = 15; } if (this.password.match(/^[\sa-z]+$/)) { weight.flatLower = -30; } if (this.password.match(/^[\s0-9]+$/)) { weight.flatNumber = -50; } var score = baseScore + (count.excess * weight.excess) + (count.upperCase * weight.upperCase) + (count.numbers * weight.numbers) + (count.symbols * weight.symbols) + weight.combo + weight.flatLower + weight.flatNumber; if(score < 30 ) { strength.text = "faible"; strength.score = 10; return strength; } else if (score >= 30 && score < 75 ){ strength.text = "moyen"; strength.score = 40; return strength; } else if (score >= 75 && score < 150 ){ strength.text = "fort"; strength.score = 75; return strength; } else { strength.text = "sécurisé"; strength.score = 100; return strength; } }, }, mounted() { this.generatePassword(); }, watch: { settings: { handler: function() { this.generatePassword(); }, deep: true } }, methods: { // copy password to clipboard copyToClipboard(){ // we should create a textarea, put the password inside it, select it and finally copy it var copyElement = document.createElement("textarea"); copyElement.style.opacity = '0'; copyElement.style.position = 'fixed'; copyElement.textContent = this.password; var body = document.getElementsByTagName('body')[0]; body.appendChild(copyElement); copyElement.select(); document.execCommand('copy'); body.removeChild(copyElement); this.copied = true; // reset this.copied setTimeout(() => { this.copied = false; }, 750); }, // generate the password generatePassword() { var lettersSetArray = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]; var symbolsSetArray = [ "=","+","-","^","?","!","%","&","*","$","#","^","@","|"]; //var ambiguousSetArray = ["(",")","{","}","[","]","(",")","/","~",";",":",".","<",">"]; var passwordArray = []; var digitsArray = []; var digitsPositionArray = []; // first, fill the password array with letters, uppercase and lowecase for (var i = 0; i < this.settings.length; i++) { // get an array for all indexes of the password array digitsPositionArray.push(i); var upperCase = Math.round(Math.random() * 1); if (upperCase === 0) { passwordArray[i] = lettersSetArray[Math.floor(Math.random()*lettersSetArray.length)].toUpperCase(); } else { passwordArray[i] = lettersSetArray[Math.floor(Math.random()*lettersSetArray.length)]; } } // Add digits to password for (i = 0; i < this.settings.digits; i++) { digit = Math.round(Math.random() * 9); numberIndex = digitsPositionArray[Math.floor(Math.random()*digitsPositionArray.length)]; passwordArray[numberIndex] = digit; /* remove position from digitsPositionArray so we make sure to the have the exact number of digits in our password since without this step, numbers may override other numbers */ var j = digitsPositionArray.indexOf(numberIndex); if(i != -1) { digitsPositionArray.splice(j, 1); } } // add special charachters "symbols" for (i = 0; i < this.settings.symbols; i++) { var symbol = symbolsSetArray[Math.floor(Math.random()*symbolsSetArray.length)]; var symbolIndex = digitsPositionArray[Math.floor(Math.random()*digitsPositionArray.length)]; passwordArray[symbolIndex] = symbol; /* remove position from digitsPositionArray so we make sure to the have the exact number of digits in our password since without this step, numbers may override other numbers */ var j = digitsPositionArray.indexOf(symbolIndex); if(i != -1) { digitsPositionArray.splice(j, 1); } } this.password = passwordArray.join(''); }, }, }); </script>"" Crédit code : https://codepen.io/nourabusoud/pen/YeMOVv [[https://separated.startdorp.nl/ https://separated.startdorp.nl/]] [[https://divorced-ads.sonasi.nl/ https://divorced-ads.sonasi.nl/]] [[https://indian-divorced-girl.surfplezier.nl/ https://indian-divorced-girl.surfplezier.nl/]] [[https://indian-divorced.bannerstartpagina.nl/ https://indian-divorced.bannerstartpagina.nl/]] [[https://divorce.winkel.net/ https://divorce.winkel.net/]] [[https://divrocedwomen.jougids.nl/ https://divrocedwomen.jougids.nl/]] [[https://separated.startdigitaal.nl/ https://separated.startdigitaal.nl/]] [[https://separated.rosadoc.be/ https://separated.rosadoc.be/]]
Mots clés
Sauver
Annuler
Thème
×
Choisissez un formulaire
Nb. : Il est possible d'afficher plusieurs bases de données d'un coup en entrant leur id séparé par une virgule [
accéder à la documentation
].
Code à inclure dans la page
×
Ajouter un lien au texte selectionné ou créer une page
Modifier le lien
Créer une page
Nom de la page, existante ou à créer, ou URL externe
Nom de la page à créer
Le nom de la page ne doit pas contenir de caractères spéciaux autre que - ou _ . Les URL doivent commencer par https://
Pour créer une nouvelle page, il suffit de saisir un mot non listé
Cette page existe déjà !
Texte affiché
Texte du lien vers cette page
Texte au survol
Le lien s'ouvre dans l'onglet courant
Le lien s'ouvre dans un nouvel onglet
Le lien s'ouvre dans une fenêtre modale
×
Télécharger le fichier
Texte du lien de téléchargement
Afficher le pdf dans la page :
sous forme de lien
directement inclus dans la page
Alignement de l'image
Texte en dessous
Gauche
Centre
Droite
Taille de l'image
Miniature (140x97)
Moyenne (300x209)
Large (780x544)
Taille originale
Texte alternatif pour les personnes malvoyantes
Ce texte sera affiché à la place de l'image si elle est introuvable sur le serveur. C'est aussi celle qui sera lue par les technologies d'assistance aux personnes malvoyantes. À laisser vide si l'image est purement décorative
Paramètres avancés
Lien web associé au clic
Effets graphiques
Bord blanc
Ombre portée
Agrandissement au survol
Permettre de cliquer sur l'image pour l'afficher en grand
Oui
Non
Texte affiché au survol
Protection anti-spam active
×
Apparence de la page PasswordGenerator
Thème
margot
Squelette
1col
1col.vertical-menu
2cols-left
2cols-right
full-page
Style
margot-fun
margot
light
Preset
Preset par défaut (custom/coop.tools)
default
fun
landes
red
yellow
coop.tools
Image de fond
‹
›
Paramètres avancés
Langue de la page
Català
English
Español, castellano
Français
Nederlands, vlaams
Português
Română
Choisir une page pour:
le menu horizontal
les raccourcis en haut à droite
l'entête (bandeau)
le pied de page
le menu vertical