如何将 {polished} 包与 {brochure} 框架一起使用?

How do I use {polished} package with {brochure} framework?

这是我在使用 {polished}{brochure} 时遇到的复杂逻辑执行。 将 secure_ui/secure_server 放置在 brochure::Page() 中时,按照 {polished} 开发团队给出的示例的相同顺序,Shiny App 的部署方式发生了变化{brochure} 基础设施。我不确定将 polsiehd 逻辑重新定位到哪里。

差异

当需要合并这两个逻辑时,您必须:

  1. globals.R中移动polished_config() --> golem::runApp() [为brochureApp()启动全局设置]
run_app <- function(
  onStart = NULL,
  options = list(),
  enableBookmarking = NULL,
  ...
) {

  # old 'globals.R' logic 
  polished_config(
    app_name = "humblFinance",
    api_key = "xxxx"
  )

  with_golem_options(
    app = brochureApp(
      # Putting the resources here
      golem_add_external_resources(),
      page1(),
    ),
    golem_opts = list(...)
  )
}
  1. 包裹每个 brochure::page() ui/server with 抛光::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)
      }
    )
  )
}

注意

sign_in_custom() 是 returns 来自 polished::sign_in_default() 的自定义 UI 对象创建个人业务网页的功能。 我建议将 polished::sign_in_default() 包装在自定义全局函数中,因为您需要在 brochure::page() 上定义它,您希望在 polished auth.

后面保护它

一旦您通过抛光验证一个页面,您将能够在您仍然登录的情况下访问所有其他受保护的页面。注销后并尝试访问任何一个受保护的页面将导致自定义登录页面