From bfe37cd993ac281cad47b4f6cfe21cfe3886f0bc Mon Sep 17 00:00:00 2001 From: Matheus-Ferreira Date: Sat, 5 Feb 2022 19:51:23 -0300 Subject: [PATCH] logica de gerar senha done --- src/components/Settings/Settings.js | 14 +++++++++++--- src/data/caracters.js | 12 ++++++++++++ src/data/letters.js | 4 ---- src/data/numbers.js | 3 --- src/data/symbols.js | 5 ----- src/redux/reducers/CheckboxReducer.js | 15 --------------- src/redux/reducers/LengthPasswordReducer.js | 2 +- src/redux/reducers/index.js | 2 -- 8 files changed, 24 insertions(+), 33 deletions(-) create mode 100644 src/data/caracters.js delete mode 100644 src/data/letters.js delete mode 100644 src/data/numbers.js delete mode 100644 src/data/symbols.js delete mode 100644 src/redux/reducers/CheckboxReducer.js diff --git a/src/components/Settings/Settings.js b/src/components/Settings/Settings.js index 2657433..cc07c2f 100644 --- a/src/components/Settings/Settings.js +++ b/src/components/Settings/Settings.js @@ -5,7 +5,7 @@ import Checkbox from '../Checkbox/Checkbox'; import BtnGenerate from '../BtnGenerate/BtnGenerate'; import './Settings.css'; import { savePassword } from '../../redux/actions'; -import letters from '../../data/letters'; +import caracters from '../../data/caracters'; class Settings extends Component { constructor() { @@ -22,11 +22,19 @@ class Settings extends Component { createPassword = () => { const { lengthPassword } = this.props; + const options = Object.entries(this.state).filter((entrie) => entrie[1]); let password = ''; + let temporaryOptions = [...options]; for (let index = 1; index <= lengthPassword; index += 1) { - const index = Math.ceil(Math.random() * letters.length) - 1; - password += letters[index]; + if (temporaryOptions.length === 0) temporaryOptions = [...options]; + + const indexOptions = Math.ceil(Math.random() * temporaryOptions.length - 1); + const typeCaracter = temporaryOptions[indexOptions][0]; + const indexCaracter = Math.ceil(Math.random() * caracters[typeCaracter].length) - 1; + + password += caracters[typeCaracter][indexCaracter]; + temporaryOptions.splice(indexOptions, 1); }; return password; diff --git a/src/data/caracters.js b/src/data/caracters.js new file mode 100644 index 0000000..325aaa7 --- /dev/null +++ b/src/data/caracters.js @@ -0,0 +1,12 @@ +const caracters = { + lowercase: ['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'], + uppercase: ['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'], + numbers: ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'], + symbols: ['>', '<', '@', '?', '/', '+', '-', '!', '#', '$', '%', '¨', '&', '*', + '(', ')', '_', '=', '°', '®', 'ŧ', 'ø', '[', ']', '~', '^', '}', '{', '|', '.', ',', + ':', ';'], +}; + +export default caracters; diff --git a/src/data/letters.js b/src/data/letters.js deleted file mode 100644 index 143b364..0000000 --- a/src/data/letters.js +++ /dev/null @@ -1,4 +0,0 @@ -const letters = ['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']; - -export default letters; diff --git a/src/data/numbers.js b/src/data/numbers.js deleted file mode 100644 index 49f4586..0000000 --- a/src/data/numbers.js +++ /dev/null @@ -1,3 +0,0 @@ -const numbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']; - -export default numbers; diff --git a/src/data/symbols.js b/src/data/symbols.js deleted file mode 100644 index 469e4d1..0000000 --- a/src/data/symbols.js +++ /dev/null @@ -1,5 +0,0 @@ -const symbols = ['>', '<', '@', '?', '/', '+', '-', '!', '#', '$', '%', '¨', '&', '*', - '(', ')', '_', '=', '°', '®', 'ŧ', 'ø', '[', ']', '~', '^', '}', '{', '|', '.', ',', - ':', ';']; - -export default symbols; diff --git a/src/redux/reducers/CheckboxReducer.js b/src/redux/reducers/CheckboxReducer.js deleted file mode 100644 index 4072c1a..0000000 --- a/src/redux/reducers/CheckboxReducer.js +++ /dev/null @@ -1,15 +0,0 @@ -const INITIAL_STATE = { - uppercase: false, - lowercase: false, - numbers: false, - symbols: false, -}; - -const checkboxReducer = (state = INITIAL_STATE, action) => { - switch (action.type) { - default: - return state; - } -}; - -export default checkboxReducer; diff --git a/src/redux/reducers/LengthPasswordReducer.js b/src/redux/reducers/LengthPasswordReducer.js index 6eaed6a..84f443a 100644 --- a/src/redux/reducers/LengthPasswordReducer.js +++ b/src/redux/reducers/LengthPasswordReducer.js @@ -1,7 +1,7 @@ import { LENGTH_PASSWORD } from '../actions'; const INITIAL_STATE = { - length: 0, + length: 4, }; const lengthPasswordReducer = (state = INITIAL_STATE, action) => { diff --git a/src/redux/reducers/index.js b/src/redux/reducers/index.js index 5c4776b..a91a6dd 100644 --- a/src/redux/reducers/index.js +++ b/src/redux/reducers/index.js @@ -1,10 +1,8 @@ import { combineReducers } from 'redux'; -import checkboxReducer from './CheckboxReducer'; import lengthPasswordReducer from './LengthPasswordReducer'; import passwordReducer from './passwordReducer'; const rootReducer = combineReducers({ - checkboxReducer, lengthPasswordReducer, passwordReducer, });