Почему моя кнопка выхода из системы не работает на Shiny? - PullRequest
0 голосов
/ 05 октября 2018

Я хочу знать, знает ли кто-нибудь, как заставить работать мою кнопку выхода из системы.

Моя программа имеет вид:

UI

 ui2 <- function(){
        tagList(tabPanel(""),
        pageWithSidebar(
        headerPanel(
            ""
        ),
        sidebarPanel
        (
            actionButton("logout", "Logout")        
        ),
            mainPanel(tableOutput('aaa'))
        )
    )   
}


ui1 <- function(){
    tagList(h2("Hello", align = "center"),
    div(id = "login",
        wellPanel(textInput("userName", "Username"),
                  passwordInput("passwd", "Password"),
                  br(),actionButton("Login", "Log in"),
  )}
}

Сервер

server = (function(input, output,session) {

USER <- reactiveValues(Logged=FALSE)
observe({ 
    if (USER$Logged == FALSE) {
      if (!is.null(input$Login)) {
        if (input$Login > 0) {
            Username <- isolate(input$userName)
            Password <- isolate(input$passwd)
            query <- sprintf({"
              SELECT rowid 
              FROM users 
              WHERE username='%s' and password ='%s'"}, 
                           Username, Password, serialize=F) 
            db   <- RSQLite::dbConnect(RSQLite::SQLite(), dbname="db.sqlite")
            user <- RSQLite::dbGetQuery(db, query) 
            RSQLite::dbDisconnect(db)
            if ( length(user$rowid)==1 ) {
              USER$Logged <- TRUE
          }
        } 
      }
    }    
})
observe({
    if (USER$Logged == FALSE)
    {
      output$page <- renderUI({div(class="outer",do.call(bootstrapPage,c("",ui1())))})
    }
    if (USER$Logged == TRUE) 
    {
      output$page <- renderUI({div(class="outer",do.call(navbarPage,c(inverse=TRUE,title = paste("Welcome", isolate(input$userName)," !"),ui2())))})
      print(ui)
    }
})
observeEvent(input$logout, {
    output$page <- renderUI({div(class="outer",do.call(bootstrapPage,c("",ui1())))})
    USER$Logged <- FALSE   
})

})

Мне нужны все эти пользовательские интерфейсы, и мне сложно присоединиться к ним, потому что я не знаю, как это сделать.

Я попытался использовать следующий код, чтобы вернуть его на домашнюю страницу:

на сервере. R

observeEvent(input$reset_button, {

    shinyjs::runjs("window.location.href = 'https://yoursubdomain.shinyapps.io/yourapp';")

})

в пользовательском интерфейсе. R

actionButton("reset_button", "Restart", icon = icon("undo"), class = "btn-info"))

Но этотоже не работает.И я полагаю, что в этом случае с мультиинтерфейсом проще кнопку, которая перенаправляет на домашнюю страницу, чем кнопку для выхода.

Можете ли вы мне помочь?Кто-нибудь знает как?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...