This was a complicating in logic execution i came across using {polished}
and {brochure}
.
When placing secure_ui
/secure_server
inside of a brochure::Page()
in the same order of the example given by the {polished}
dev team, there are changes to how a Shiny App is deploy on the {brochure}
infrastructure. I was not sure where to relocate the polsiehd logic to.
Differences
- no global.R file in a
brochureApp()
- multiple calls to different module_ui/server functions since each
brochure::page()
is its owns shiny session - single page shinyApp vs true multipage shinyApp
CodePudding user response:
When needing to merge the two logics you must:
- move
polished_config()
inglobals.R
-->golem::runApp()
[initiate global setting forbrochureApp()
]
run_app <- function(
onStart = NULL,
options = list(),
enableBookmarking = NULL,
...
) {
# old 'globals.R' logic
polished_config(
app_name = "humblFinance",
api_key = "2JmavWZtcHBIifVl0FpPtczZjk7zfhvV6O"
)
with_golem_options(
app = brochureApp(
# Putting the resources here
golem_add_external_resources(),
page1(),
),
golem_opts = list(...)
)
}
- wrap each
brochure::page() ui/server with
polished::secure_ui/server()`
# an example login page
login <- function(id = "login", href = "/login") {
page(
href = href,
ui = secure_ui(
mod_login_ui(id = id),
sign_in_page_ui = sign_in_custom()
),
server = secure_server(
function(input, output, session) {
mod_login_server(id = id)
}
)
)
}
NOTE
sign_in_custom()
is a function that returns a customized UI object from polished::sign_in_default()
to create personal business webpages.
I would recommend wrapping polished::sign_in_default()
in a custom global function since you will need to define this on ever brochure::page()
that you want to have protected behind polished
auth.
once you authenticate one page through polished, you will be able to access all other protected pages while you are still logged in. After loggign out and attempting to access any one of the protected pages will result in a custom login page