R/Login.R

Defines functions verifyLogin

Documented in verifyLogin

#' @title Validate username and password
#'
#' @description This function allows you to verify a username and password
#' @param verifyUsername user to verify
#' @param verifyPassword password to verify
#' @keywords login
#' @export
verifyLogin <- function(verifyUsername, verifyPassword) {
  library(RMySQL)

  envVars <- Sys.getenv(c("MYSQL_USERNAME", "MYSQL_PASSWORD", "MYSQL_HOST"))
  
  print(paste0('vUsername',verifyUsername,', vPassword',verifyPassword))
  
  username <- toString(envVars["MYSQL_USERNAME"])
  host <- toString(envVars["MYSQL_HOST"])
  password <- toString(envVars["MYSQL_PASSWORD"])
  
  print(paste0('user:',username,', host:',host,', pw:',password))
  
  if (is.null(host) || is.null(username) || is.null(password)) {
    return(c(FALSE, 'Missing environment variables'))
  }
  
  if (is.null(verifyUsername) || is.null(verifyPassword)) {
    return(c(FALSE, 'Missing function arguments'))
  }
  
  tryCatch({
    print("dbConnect")
    db <-
      dbConnect(
        MySQL(),
        user = username,
        password = password,
        dbname = "users",
        host = host
      )
    rs <-
      dbSendQuery(
        db,
        paste0(
          "SELECT COUNT(*) count FROM AspNetUsers where UserName='",
          verifyUsername,
          "' and PasswordHash='",
          verifyPassword,
          "'"
        )
      )
    result <- dbFetch(rs)
    
    if (result$count < 1) {
      stop('User not authenticated')
    }
    
    return(c(TRUE, ''))
    
    #    return(result$count >= 1)
  }, error = function(error_condition) {
    return(c(FALSE, error_condition))
  }, finally = {
    print("disconnect db")
    dbDisconnect(db)
  })
}
kfinnAmpel/RLogin documentation built on July 1, 2020, 12:11 a.m.