|
| 1 | +#' Generador de nombre de usuario y contraseña segura |
| 2 | +#' |
| 3 | +#' Esta función genera un nombre de usuario y una contraseña combinando partes |
| 4 | +#' del nombre, apellido y un número, incluyendo un número aleatorio. |
| 5 | +#' |
| 6 | +#' @param codigo Entero de dos cifras. Número que se usará en el cálculo de la contraseña. |
| 7 | +#' @param nombre Caracter. Nombre del usuario. Por defecto es `"silvina"`. |
| 8 | +#' @param apellido Caracter. Apellido del usuario. Por defecto es `"perez"`. |
| 9 | +#' |
| 10 | +#' @return Una lista con dos elementos: |
| 11 | +#' \describe{ |
| 12 | +#' \item{nombre_usuario}{El nombre de usuario en formato `nombre_apellido`, todo en minúsculas.} |
| 13 | +#' \item{contraseña}{Una cadena que conforma una contraseña creada con los datos aportados} |
| 14 | +#' } |
| 15 | +#' |
| 16 | +#' @details |
| 17 | +#' La contraseña se construye de la siguiente manera: |
| 18 | +#' \itemize{ |
| 19 | +#' \item 3 primeras letras del apellido (minúsculas) |
| 20 | +#' \item cantidad de vocales del nombre multiplicada por la cantidad de consonantes del apellido |
| 21 | +#' \item 2 primeras letras del nombre |
| 22 | +#' \item código multiplicado por un número aleatorio del 1 al 10 |
| 23 | +#' } |
| 24 | +#' |
| 25 | +#' Se imprime un mensaje indicando que la contraseña fue generada correctamente. |
| 26 | +#' |
| 27 | +#' @examples |
| 28 | +#' generar_clave(42, "Juan", "Martinez") |
| 29 | +#' generar_clave(32) |
| 30 | +#' |
| 31 | +#' @export |
| 32 | +generar_clave <- function(codigo, nombre = "silvina", apellido = "perez") { |
| 33 | + if(!(codigo %% 1 == 0 && codigo < 100 && codigo > 9)){ |
| 34 | + stop("El código no es válido.") |
| 35 | + } |
| 36 | + nombre <- tolower(nombre) |
| 37 | + apellido <- tolower(apellido) |
| 38 | + |
| 39 | + letras_nombre <- strsplit(nombre, "")[[1]] |
| 40 | + letras_apellido <- strsplit(apellido, "")[[1]] |
| 41 | + |
| 42 | + # se podria usar funciones como chartr para eliminar acentos, diéreisis, etc, pero no nos fijemos en eso |
| 43 | + n_vocales_nombre <- sum(letras_nombre %in% c("a", "e", "i", "o", "u")) |
| 44 | + n_conson_apellido <- length(letras_apellido) - sum(letras_apellido %in% c("a", "e", "i", "o", "u")) |
| 45 | + |
| 46 | + |
| 47 | + primeras_3_apellido <- substr(apellido, 1, 3) |
| 48 | + prod <- n_vocales_nombre * n_conson_apellido |
| 49 | + primeras_2_nombre <- substr(nombre, 1, 2) |
| 50 | + numero_azar <- sample(1:10, 1) |
| 51 | + prod_codigo <- codigo * numero_azar |
| 52 | + clave <- paste0(primeras_3_apellido, prod, primeras_2_nombre, prod_codigo) |
| 53 | + |
| 54 | + nombre_usuario <- paste(nombre, apellido, sep = "_") |
| 55 | + |
| 56 | + message("¡La contraseña se ha generado correctamente!") |
| 57 | + |
| 58 | + return(list(nombre_usuario = nombre_usuario, contraseña = clave)) |
| 59 | +} |
0 commit comments