shinymanager : SQLite Admin"

knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

Introduction

Using SQL database protected (create_db()), an admin mode is available to manage access to the application, features included are

# Credentials data
credentials <- data.frame(
  user = c("shiny", "shinymanager"),
  password = c("azerty", "12345"),
  # password will automatically be hashed
  admin = c(FALSE, TRUE),
  stringsAsFactors = FALSE
)

# you can use keyring package to set database key
library(keyring)
key_set("R-shinymanager-key", "obiwankenobi")

# Init the database
create_db(
  credentials_data = credentials,
  sqlite_path = "path/to/database.sqlite", # will be created
  passphrase = key_get("R-shinymanager-key", "obiwankenobi")
  # passphrase = "passphrase_wihtout_keyring"
)

# Wrap your UI with secure_app, enabled admin mode or not
ui <- secure_app(ui, enable_admin = TRUE)


server <- function(input, output, session) {

  # check_credentials directly on sqlite db
  res_auth <- secure_server(
    check_credentials = check_credentials(
        "path/to/database.sqlite",
        passphrase = key_get("R-shinymanager-key", "obiwankenobi")
        # passphrase = "passphrase_wihtout_keyring"
    )
  )

  output$auth_output <- renderPrint({
    reactiveValuesToList(res_auth)
  })

  # your classic server logic
  ...
}

Starting page of the application will be :

{width=100%}

Once logged, the application will be launched and a button added to navigate between the app and the admin panel (if user is authorized to access it), and to logout from the application :

{width=100%}

Admin mode

{width=100%}

Manage users

The first table lists all current users :

{width=100%}

A user is defined (at least) by the following information :

Add user

{width=100%}

Using Add user button. So you can edit user information in the modal box :

{width=50%}

Notes :

{width=100%}

Finally, the creation is effective clicking on validation button.

Edit current user

It's possible to edit user information clicking on the blue button on the table.

Remove a user

You can remove one user using red button on table.

Password management

The second table allows password management :

{width=100%}

Moreover, by defaut, the module uses some security rules :

Additive information :

Logs

You can visualize and download connexion logs on the second tab.

{width=100%}



Try the shinymanager package in your browser

Any scripts or data that you put into this service are public.

shinymanager documentation built on Sept. 27, 2022, 9:06 a.m.