README.md

shinylogin

Lifecycle: experimental

shinylogin wraps shiny and bs4Dash to provide user login and registration functionality as a front screen before access is permitted to an R Shiny app. It also creates a user management panel within the app.

WARNING: shinylogin is experimental and I'm not a security specialist. It will ensure that casual users log in before they can access your app and implements basic security good practices such as encrypting stored passwords & preventing SQL injection, but it's unlikely to survive an attack from a hacker who knows what they're doing.

If you need robust application security, please investigate shinyapps.io paid tiers or RStudio Connect.

shinylogin is close to being useable but still has big gaps and will almost certainly see more breaking changes.

Installation

remotes::install_github("neilcharles/shinylogin")

Login screen example

Features

Getting Started

Once you have installed the shinylogin package, in RStudio create a new project with - File > New Project > shinylogin Project

shinylogin will then create a working minimal example project.

Run app.R as you normally would with a shiny app.

You will see three shinylogin files at the top level of the project directory. - shinylogin_server.R - shinylogin_ui.R - shinylogin_sidebar.R

These files should be used to write your app code and are called by app.R, which keeps your own code separate from the login workflow. You probably don't want to edit app.R in normal use of the shinylogin package.

shinylogin uses bs4Dash so the app UI code that you write should be designed to fit within bs4DashPage() and bs4DashSidebar() functions. Your code will be inserted into these functions by shinylogin.

It is recommended that you have at least a little knowledge of bs4Dash before trying to write code for shinylogin.

Google Authentication

Guide coming soon

shinylogin Options

Guide coming soon

Forgotten passwords and smtp authentication

Guide coming soon



neilcharles/shinylogin documentation built on Feb. 13, 2022, 11:52 p.m.