tldr: You can now use polished
to secure Rmarkdown documents that use the shiny
runtime. This includes flexdashboards!
For example, if you have a flexdashboard that uses shiny
. e.g.
Your Rmd Shiny App
With a single function call, you can add an authentication layer with prebuilt sign in / registration pages, a user admin dashboard, and many other features. Here is an example sign in page:
Sign In Page
For a while now, users have been able to use polished
to secure traditional shiny
apps and static documents, but polished
did not support Rmarkdown documents using the
shiny
runtime (I'll refer to Rmarkdown documents using the shiny
runtime as
"Shiny Rmds"). This was unfortunate as Shiny Rmds are popular, and, since the actual shiny
app
is generated behind the scenes by rmarkdown
, adding authentication to Shiny Rmds is not straightforward.
Polished now allows you to secure your Shiny Rmd by calling the polished::secure_rmd()
function.
Make sure you have the development version of polished installed before trying it out. You can install it with:
remotes::install_github("tychobra/polished")
Here is a full example:
- code: https://github.com/Tychobra/polished_example_apps/tree/master/09_rmarkdown
- live app: https://demo9.polished.tech/
You can sign into the above live app with:
- email: demo@tychobra.com
- password: polished
The polished::secure_rmd()
function takes the shiny
app generated by the your Shiny Rmd and wraps polished
authentication
around it. You can specify the arguments to secure_rmd()
in your Shiny Rmd YAML header, or you can pass the arguments
to the secure_rmd()
function directly.
You can then deploy your app anywhere you can host a regular shiny
app, including Polished Hosting. To deploy to Polished Hosting, use
the polished::deploy_app()
function the same way you would deploy a regular shiny
app.
Additional docs available here:
-
secure_rmd
: https://polished.tech/docs/rmarkdown-auth deployment: https://polished.tech/docs/08-rmarkdown
Please get in touch if you have questions or feedback! We'd love to hear from you.