7

Is there a way to disable the masking in the rstudioapi::askForPassword pop up window so a user can enter their username?

I am building a function I can share with my team for connecting to our Oracle DB instance using the ROracle pacakge

Current solution,

  connection <- dbConnect(
    driver
    , username = rstudioapi::askForPassword(prompt = 'Please enter username: ')
    , password = rstudioapi::askForPassword(prompt = 'Password: ')
    , dbname = 'my.connection.string'
  )

This pops up the following prompt: (image in link)

which is the solution described in the RStudio database docs that uses the Rstudio api

Would like to fund a solution that does not mask the password but pops up the same prompt (one nice line of code if possible...)

blakiseskream
  • 338
  • 4
  • 9
  • the function you are using doesn't allow unmasked input, why not use `readline()` from `base`? If you need it to be graphical, writing a Shiny Gadget (`miniUI`) for this is trivial. – Kevin Arseneau Sep 07 '17 at 02:06
  • not using readline from base because easier for users on my team to see the modal pop up (but admit its possible to use it). will look into the shiny gadget use case, have only used shiny for fully fledged web apps – blakiseskream Sep 07 '17 at 19:37
  • preview edition flagged a virustotal error for my organization so just waiting for approval then going to roll it out to my team – blakiseskream Sep 15 '17 at 16:46
  • finally managed to get it globally approved. have my whole department upgrading now this is amazing thank you – blakiseskream Sep 22 '17 at 20:37

2 Answers2

9

If you are using the preview version of RStudio (1.1.67+) there are newer functions available to you in the rstudioapi package, showPrompt seems to accomplish what you are after.

connection <- dbConnect(
    driver,
    username = rstudioapi::showPrompt(
      title = "Username", message = "Username", default = ""
    ),
    password = rstudioapi::askForPassword(prompt = "Password"),
    dbname = "my.connection.string"
)
Kevin Arseneau
  • 6,186
  • 1
  • 21
  • 40
7

For newer versions of rstudioapi::askForPassword I noticed the following...

  • If you just include the string username in your argument phrase, the text is unmasked.
  • Including password will strictly enforce masking.

For example:

rstudioapi::askForPassword("Enter username") # <-- UNMASKED
rstudioapi::askForPassword("Enter password") # <-- MASKED

rstudioapi::askForPassword("Enter foobar xyz123 username") # <-- UNMASKED
rstudioapi::askForPassword("Enter foobar xyz123 username password") # <-- MASKED 

I stumbled on this by accident of course, in that the pw prompted text box automatically unmasks for username... There could be more info at:

Etienne Jacquot
  • 176
  • 1
  • 9