У меня есть проблема, когда некоторые пользователи могут иметь доступ к данным, а другие нет.Хотя я могу встраивать проверки данных в существующие приложения, это довольно болезненно (и должно выполняться несколькими пользователями).То, что я хотел бы сделать, это что-то вроде следующего примера:
library(shiny)
jsResetCode <- "shinyjs.reset = function() {history.go(0)}" # Define the js method that resets the page
if (!file.exists("example.csv")) {
shinyApp(ui = function() {
fixedPage(useShinyjs(),extendShinyjs(text = jsResetCode),div(
class="jumbotron",
tags$p("Please enter your username and password in order to initialize access."),
div(
textInput("user", "User Name"),
passwordInput("pass", "Password"),
actionButton("submit", "submit")
)
)
)
},
server = function(input, output, session) {
observeEvent(input$submit, {
write.csv(1, "example.csv")
js$reset()
# Want to reload the page now!
})
}
)
}
shinyApp(ui = function() {
fluidPage(plotOutput("myplot"))
},
server = function(input, output, session) {
output$myplot <- renderPlot({plot(rnorm(100))})
}
)
Здесь я представляю, что у меня есть некоторый файл аутентификации, пользователь дает свое имя пользователя и пароль, и он генерирует указанный файл и перезапускает, этовремя, не оценивающее первый вызов.
В идеальном мире этот первый сегмент будет затем обернут в функцию auth_check()
, которую я только что поместил в начало файла app.R.
Тем не менее, похоже, что тестирование показывает, что первый набор кода просто игнорируется, и оценивается только последний блестящий вызов.
Возможно ли это вообще?Можете ли вы предложить альтернативы, если нет, которые в идеале позволяют мне добавлять код в мой вызов app.R, а не изменять существующее приложение?