Запустите аутентификацию shinymanager после нажатия кнопки на первой вкладке, затем отобразите другие вкладки

#r #shiny

Вопрос:

Мне было интересно, можно ли защитить блестящее приложение с помощью shinymanager, но с возможностью доступа к первой вкладке приложения перед вводом имени пользователя и пароля, в то время как вторая и третья вкладки скрыты ?

Я хотел бы, чтобы кнопка «подключиться» запустила страницу shinymanager, а затем отобразила другие вкладки.

Кто-нибудь знает, выполнимо ли это, или я должен использовать свою собственную форму аутентификации (что означает менее защищенную…) ?

Моя попытка:

 library(shiny)
library(shinymanager)
library(shinydashboard)
library(shinyWidgets)
library(shinythemes)

credentials <- data.frame(
  user = c("user1"),
  password = c("1"),
  stringsAsFactors = FALSE
)

# user interface
ui <- navbarPage(id="navbarid",
                 "TEST",  theme = shinytheme("cosmo"),
                 header = tagList(
                   useShinydashboard()),

                 tabPanel(
                   "Welcome", fluidRow(align = "center", 
                        column(6, offset=4,
                               box(title = "Authentification", background = "black", 
                                 fluidRow(column(6, align = "center", style='padding-top:20px;',
                                    actionButton(inputId = "connect", label = "Log in")),
                                          column(6, align = "center", style='padding-top:20px;',
                                    actionButton(inputId = "register", label = "Register here"))))))),

                 tabPanel("Tab2", verbatimTextOutput("label1")
                   ),

                 tabPanel("Tab3", verbatimTextOutput("label2")
                 ))

ui <- secure_app(ui)

server <- function(input, output, session) {
  
  res_auth <- secure_server(
    check_credentials = check_credentials(credentials)
  )
  
  output$icon1 <- renderText(as.character(icon("sign-in-alt")))
  output$icon2 <- renderText(as.character(icon("users")))

  output$label1 <- renderText("First tab content here")
  output$label2 <- renderText("Second tab content here")
}

shinyApp(ui, server)
 

Я попытался добавить

 observeEvent(input$connect, {
  res_auth <- secure_server(
    check_credentials = check_credentials(credentials)
  )})
 

в начале моей серверной части, но это не сработало !