diff --git a/404.html b/404.html index 91728b3..7ea6beb 100644 --- a/404.html +++ b/404.html @@ -1,66 +1,27 @@ - - - - + + + + - Page not found (404) • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + - - - - -
-
- + +
+ + + - - -
+
+
-
+ + - - diff --git a/LICENSE-text.html b/LICENSE-text.html index 9a7fc4d..3302bc2 100644 --- a/LICENSE-text.html +++ b/LICENSE-text.html @@ -1,66 +1,12 @@ - - - - - - - -License • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -License • shinyauthr - + + - - - -
-
- -
- -
+
+
-
- - + + diff --git a/LICENSE.html b/LICENSE.html index e3df320..c8a9861 100644 --- a/LICENSE.html +++ b/LICENSE.html @@ -1,66 +1,12 @@ - - - - - - - -MIT License • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -MIT License • shinyauthr - - + + - - -
-
- -
- -
+
-

Copyright (c) 2021 shinyauthr authors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

@@ -124,31 +62,27 @@

MIT License

+
-
- - + + diff --git a/authors.html b/authors.html index 82897da..e2209f9 100644 --- a/authors.html +++ b/authors.html @@ -1,66 +1,12 @@ - - - - - - - -Authors • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Authors and Citation • shinyauthr - + + - - - - -
-
-
- -
+
- @@ -130,22 +89,20 @@

Authors

-
- - + + diff --git a/index.html b/index.html index fd1e6e1..71b536c 100644 --- a/index.html +++ b/index.html @@ -21,6 +21,8 @@ + +
-
- +
+ - - -

shinyauthr is an R package providing module functions that can be used to add an authentication layer to your shiny apps.

-
-

-Installation

-

You can install the package from CRAN.

+

shinyauthr is an R package providing module functions that can be used to add an authentication layer to your shiny apps.

+
+

Installation +

+

You can install the package from CRAN.

-install.packages("shinyauthr")
-

Or the development version from github with the remotes package.

+install.packages("shinyauthr")
+

Or the development version from github with the remotes package.

-remotes::install_github("paulc91/shinyauthr")
+remotes::install_github("paulc91/shinyauthr")
-
-

-Run example apps

+
+

Run example apps +

Code for example apps using various UI frameworks can be found in inst/shiny-examples. You can launch 3 example apps with the runExample function.

 # login with user1 pass1 or user2 pass2
@@ -98,9 +98,9 @@ 

shinyauthr::runExample("shinydashboard") shinyauthr::runExample("navbarPage")

-
-

-Usage

+
+

Usage +

The package provides 2 module functions each with a UI and server element:

-

Note: the server modules use shiny’s new (version >= 1.5.0) shiny::moduleServer method as opposed to the shiny::callModule method used by the now deprecated shinyauthr::login and shinyauthr::logout functions. These functions will remain in the package for backwards compatibility but it is recommended you migrate to the new server functions. This will require some adjustments to the module server function calling method used in your app. For details on how to migrate see the ‘Migrating from callModule to moduleServer’ section of Modularizing Shiny app code.

-

Below is a minimal reproducible example of how to use the authentication modules in a shiny app. Note that this package invisibly calls shinyjs::useShinyjs() internally and there is no need for you to do so yourself (although there is no harm if you do).

+

Note: the server modules use shiny’s new (version >= 1.5.0) shiny::moduleServer method as opposed to the shiny::callModule method used by the now deprecated shinyauthr::login and shinyauthr::logout functions. These functions will remain in the package for backwards compatibility but it is recommended you migrate to the new server functions. This will require some adjustments to the module server function calling method used in your app. For details on how to migrate see the ‘Migrating from callModule to moduleServer’ section of Modularizing Shiny app code.

+

Below is a minimal reproducible example of how to use the authentication modules in a shiny app. Note that this package invisibly calls shinyjs::useShinyjs() internally and there is no need for you to do so yourself (although there is no harm if you do).

-library(shiny)
+library(shiny)
 
 # dataframe that holds usernames, passwords and other user data
-user_base <- tibble::tibble(
-  user = c("user1", "user2"),
-  password = c("pass1", "pass2"),
-  permissions = c("admin", "standard"),
-  name = c("User One", "User Two")
+user_base <- tibble::tibble(
+  user = c("user1", "user2"),
+  password = c("pass1", "pass2"),
+  permissions = c("admin", "standard"),
+  name = c("User One", "User Two")
 )
 
-ui <- fluidPage(
+ui <- fluidPage(
   # add logout button UI
-  div(class = "pull-right", shinyauthr::logoutUI(id = "logout")),
+  div(class = "pull-right", shinyauthr::logoutUI(id = "logout")),
   # add login panel UI function
   shinyauthr::loginUI(id = "login"),
   # setup table output to show user info after login
-  tableOutput("user_table")
+  tableOutput("user_table")
 )
 
 server <- function(input, output, session) {
@@ -139,27 +139,27 @@ 

data = user_base, user_col = user, pwd_col = password, - log_out = reactive(logout_init()) + log_out = reactive(logout_init()) ) # call the logout module with reactive trigger to hide/show logout_init <- shinyauthr::logoutServer( id = "logout", - active = reactive(credentials()$user_auth) + active = reactive(credentials()$user_auth) ) - output$user_table <- renderTable({ + output$user_table <- renderTable({ # use req to only render results when credentials()$user_auth is TRUE - req(credentials()$user_auth) + req(credentials()$user_auth) credentials()$info }) } -shinyApp(ui = ui, server = server)

+shinyApp(ui = ui, server = server)
-
-

-Details

+
+

Details +

When the login module is called, it returns a reactive list containing 2 elements:

  • user_auth
  • @@ -167,28 +167,28 @@

The initial values of these variables are FALSE and NULL respectively. However, given a data frame or tibble containing user names, passwords and other user data (optional), the login module will assign a user_auth value of TRUE if the user supplies a matching user name and password. The value of info then becomes the row of data associated with that user which can be used in the main app to control content based on user permission variables etc.

The logout button will only show when user_auth is TRUE. Clicking the button will reset user_auth back to FALSE which will hide the button and show the login panel again.

-

You can set the code in your server functions to only run after a successful login through use of the req() function inside all reactives, renders and observers. In the example above, using req(credentials()$user_auth) inside the renderTable function ensures the table showing the returned user information is only rendered when user_auth is TRUE.

+

You can set the code in your server functions to only run after a successful login through use of the req() function inside all reactives, renders and observers. In the example above, using req(credentials()$user_auth) inside the renderTable function ensures the table showing the returned user information is only rendered when user_auth is TRUE.

- -
-

-Hashing Passwords with sodium +
+

Hashing Passwords with sodium +

-

If you are hosting your user passwords on the internet, it is a good idea to first encrypt them with a hashing algorithm. You can use the sodium package to do this. Sodium uses a slow hashing algorithm that is specifically designed to protect stored passwords from brute-force attacks. More on this here. You then tell the shinyauthr::loginServer module that your passwords have been hashed by sodium and shinyauthr will then decrypt when login is requested. Your plain text passwords must be a character vector, not factors, when hashing for this to work as shiny inputs are passed as character strings.

+

If you are hosting your user passwords on the internet, it is a good idea to first encrypt them with a hashing algorithm. You can use the sodium package to do this. Sodium uses a slow hashing algorithm that is specifically designed to protect stored passwords from brute-force attacks. More on this here. You then tell the shinyauthr::loginServer module that your passwords have been hashed by sodium and shinyauthr will then decrypt when login is requested. Your plain text passwords must be a character vector, not factors, when hashing for this to work as shiny inputs are passed as character strings.

For example, a sample user base like the following can be incorporated for use with shinyauthr:

 # create a user base then hash passwords with sodium
 # then save to an rds file in app directory
-library(sodium)
+library(sodium)
 
-user_base <- tibble::tibble(
-  user = c("user1", "user2"),
-  password = purrr::map_chr(c("pass1", "pass2"), sodium::password_store),
-  permissions = c("admin", "standard"),
-  name = c("User One", "User Two")
+user_base <- tibble::tibble(
+  user = c("user1", "user2"),
+  password = purrr::map_chr(c("pass1", "pass2"), sodium::password_store),
+  permissions = c("admin", "standard"),
+  name = c("User One", "User Two")
 )
 
-saveRDS(user_base, "user_base.rds")
+saveRDS(user_base, "user_base.rds")
 # in your app code, read in the user base rds file
-user_base <- readRDS("user_base.rds")
+user_base <- readRDS("user_base.rds")

 # then when calling the module set sodium_hashed = TRUE
 credentials <- shinyauthr::loginServer(
@@ -297,21 +297,21 @@ 

user_col = user, pwd_col = password, sodium_hashed = TRUE, - log_out = reactive(logout_init()) + log_out = reactive(logout_init()) )

-
-

-Credits

-

shinyauthr originally borrowed some code from treysp’s shiny_password template with the goal of making implementation simpler for end users and allowing the login/logout UIs to fit easily into any UI framework, including shinydashboard.

-

Thanks to Michael Dewar for his contribution of cookie-based authentication. Some code was borrowed from calligross’s Shiny Cookie Based Authentication Example and from an earlier PR from aqualogy.

+
+

Credits +

+

shinyauthr originally borrowed some code from treysp’s shiny_password template with the goal of making implementation simpler for end users and allowing the login/logout UIs to fit easily into any UI framework, including shinydashboard.

+

Thanks to Michael Dewar for his contribution of cookie-based authentication. Some code was borrowed from calligross’s Shiny Cookie Based Authentication Example and from an earlier PR from aqualogy.

-
-

-Disclaimer

+
+

Disclaimer +

I’m not a security professional so cannot guarantee this authentication procedure to be foolproof. It is ultimately the shiny app developer’s responsibility not to expose any sensitive content to the client without the necessary login criteria being met.

I would welcome any feedback on any potential vulnerabilities in the process. I know that apps hosted on a server without an SSL certificate could be open to interception of user names and passwords submitted by a user. As such I would not recommend the use of shinyauthr without a HTTPS connection.

-

For apps intended for use within commercial organisations, I would recommend one of RStudio’s commercial shiny hosting options, or shinyproxy, both of which have built in authentication options.

+

For apps intended for use within commercial organisations, I would recommend one of RStudio’s commercial shiny hosting options, or shinyproxy, both of which have built in authentication options.

However, I hope that having an easy-to-implement open-source shiny authentication option like this will prove useful when alternative options are not feasible.

Paul Campbell

@@ -320,51 +320,62 @@

@@ -373,5 +384,7 @@

Dev status

+ + diff --git a/news/index.html b/news/index.html index 23821b8..f3f4985 100644 --- a/news/index.html +++ b/news/index.html @@ -1,66 +1,12 @@ - - - - - - - -Changelog • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Changelog • shinyauthr - - - - + + -
-
- -
- -
+
-
-

-shinyauthr 1.0.0 2021-07-20 -

-
    -
  • New loginServer and logoutServer functions added. login and logout are now deprecated, full details in README.
  • +
    + +
    • New loginServer and logoutServer functions added. login and logout are now deprecated, full details in README.
    • Tests added.
    • CRAN submission
    • -
    -
    -
    -

    -shinyauthr 0.1.1 Unreleased -

    -
      -
    • Added cookie-based authentication
    • -
    -
    -
    -

    -shinyauthr 0.1.0 Unreleased -

    -
      -
    • Prepare for CRAN submission
    • -
    -
    -
    -

    -shinyauthr 0.0.99 Unreleased -

    -
      -
    • Switched to the sodium package for password hashing and decryption
    • -
    -

    If you plan to use hashed passwords with shinyauthr you now must use the sodium package to hash your passwords and the sodium_hashed = TRUE argument of the shinyauthr::login module call for decryption to work appropriately.

    +
+
+ +
  • Added cookie-based authentication
+
+ +
  • Prepare for CRAN submission
+
+ +
  • Switched to the sodium package for password hashing and decryption

If you plan to use hashed passwords with shinyauthr you now must use the sodium package to hash your passwords and the sodium_hashed = TRUE argument of the shinyauthr::login module call for decryption to work appropriately.

This means that previously used hashed and algo arguments that interfaced with the digest package are now deprecated. If you had previously hashed your passwords with the digest package to use with shinyauthr, please re-hash them with sodium and use the sodium_hashed argument instead.

-

Sorry for this breaking change, but sodium hashing provides added protection against brute-force attacks on stored passwords. More information on this here.

+

Sorry for this breaking change, but sodium hashing provides added protection against brute-force attacks on stored passwords. More information on this here.

+
-
- - + + diff --git a/pkgdown.css b/pkgdown.css index 1273238..80ea5b8 100644 --- a/pkgdown.css +++ b/pkgdown.css @@ -56,8 +56,10 @@ img.icon { float: right; } -img { +/* Ensure in-page images don't run outside their container */ +.contents img { max-width: 100%; + height: auto; } /* Fix bug in bootstrap (only seen in firefox) */ @@ -78,11 +80,10 @@ dd { /* Section anchors ---------------------------------*/ a.anchor { - margin-left: -30px; - display:inline-block; - width: 30px; - height: 30px; - visibility: hidden; + display: none; + margin-left: 5px; + width: 20px; + height: 20px; background-image: url(./link.svg); background-repeat: no-repeat; @@ -90,17 +91,15 @@ a.anchor { background-position: center center; } -.hasAnchor:hover a.anchor { - visibility: visible; -} - -@media (max-width: 767px) { - .hasAnchor:hover a.anchor { - visibility: hidden; - } +h1:hover .anchor, +h2:hover .anchor, +h3:hover .anchor, +h4:hover .anchor, +h5:hover .anchor, +h6:hover .anchor { + display: inline-block; } - /* Fixes for fixed navbar --------------------------*/ .contents h1, .contents h2, .contents h3, .contents h4 { @@ -264,31 +263,26 @@ table { /* Syntax highlighting ---------------------------------------------------- */ -pre { - word-wrap: normal; - word-break: normal; - border: 1px solid #eee; -} - -pre, code { +pre, code, pre code { background-color: #f8f8f8; color: #333; } +pre, pre code { + white-space: pre-wrap; + word-break: break-all; + overflow-wrap: break-word; +} -pre code { - overflow: auto; - word-wrap: normal; - white-space: pre; +pre { + border: 1px solid #eee; } -pre .img { +pre .img, pre .r-plt { margin: 5px 0; } -pre .img img { +pre .img img, pre .r-plt img { background-color: #fff; - display: block; - height: auto; } code a, pre a { @@ -305,9 +299,8 @@ a.sourceLine:hover { .kw {color: #264D66;} /* keyword */ .co {color: #888888;} /* comment */ -.message { color: black; font-weight: bolder;} -.error { color: orange; font-weight: bolder;} -.warning { color: #6A0366; font-weight: bolder;} +.error {font-weight: bolder;} +.warning {font-weight: bolder;} /* Clipboard --------------------------*/ @@ -365,3 +358,27 @@ mark { content: ""; } } + +/* Section anchors --------------------------------- + Added in pandoc 2.11: https://github.com/jgm/pandoc-templates/commit/9904bf71 +*/ + +div.csl-bib-body { } +div.csl-entry { + clear: both; +} +.hanging-indent div.csl-entry { + margin-left:2em; + text-indent:-2em; +} +div.csl-left-margin { + min-width:2em; + float:left; +} +div.csl-right-inline { + margin-left:2em; + padding-left:1em; +} +div.csl-indent { + margin-left: 2em; +} diff --git a/pkgdown.js b/pkgdown.js index 7e7048f..6f0eee4 100644 --- a/pkgdown.js +++ b/pkgdown.js @@ -80,7 +80,7 @@ $(document).ready(function() { var copyButton = ""; - $(".examples, div.sourceCode").addClass("hasCopyButton"); + $("div.sourceCode").addClass("hasCopyButton"); // Insert copy buttons: $(copyButton).prependTo(".hasCopyButton"); @@ -91,7 +91,7 @@ // Initialize clipboard: var clipboardBtnCopies = new ClipboardJS('[data-clipboard-copy]', { text: function(trigger) { - return trigger.parentNode.textContent; + return trigger.parentNode.textContent.replace(/\n#>[^\n]*/g, ""); } }); diff --git a/pkgdown.yml b/pkgdown.yml index 7fb6567..b0d87cb 100644 --- a/pkgdown.yml +++ b/pkgdown.yml @@ -1,9 +1,9 @@ pandoc: 2.7.3 -pkgdown: 1.6.1 +pkgdown: 2.0.3 pkgdown_sha: ~ articles: {} -last_built: 2021-08-30T10:08Z +last_built: 2022-05-12T21:36Z urls: - reference: https://paulc91.github.io/shinyauthr//reference - article: https://paulc91.github.io/shinyauthr//articles + reference: https://paulc91.github.io/shinyauthr/reference + article: https://paulc91.github.io/shinyauthr/articles diff --git a/reference/cookie_placeholders.html b/reference/cookie_placeholders.html deleted file mode 100644 index 42f6e19..0000000 --- a/reference/cookie_placeholders.html +++ /dev/null @@ -1,177 +0,0 @@ - - - - - - - - -Place Holder Database Cookie Handlers — cookie_placeholders • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- -
-
- - -
-

These functions silently reject all cookies during login and ignore requests to save session -ids to a database. Use these if you don't want to allow automatic login with cookies. These are -default values for `callModule(shinyauthr::login, ...)`. Replace them with your own functions which -get and set the user and session ids in a database.

-
- -
default_cookie_getter(user_string, session_string)
-
-default_cookie_setter(user, session)
- -

Arguments

- - - - - - - - - - -
user

character string representing the user id

session

character string representing the session id

- -

Value

- -

`default_cookie_setter` returns a data.frame with zero rows and two columns: `user` and `session`

- -
- -
- - - -
- - - - - - - - diff --git a/reference/index.html b/reference/index.html index a313bcc..ae22d0b 100644 --- a/reference/index.html +++ b/reference/index.html @@ -1,66 +1,12 @@ - - - - - - - -Function reference • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Function reference • shinyauthr - - + + - - -
-
- -
- -
+
- - - - - - - - - - - + + + + + + + +
-

Login

-

Login modules

+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
+

Login

+

Login modules

+

loginUI()

login UI module

+

loginServer()

login server module

-

Logout

-

Logout modules

+
+

Logout

+

Logout modules

+

logoutUI()

logout UI module

+

logoutServer()

logout server module

- +
+

Examples

+

Run example apps

+
+

runExample()

+

Run shinyauthr examples

+

Deprecated

+

Deprecated login and logout server functions

+
+

login

+

login server module (deprecated)

+

logout

+

logout server module (deprecated)

+
-
- - + + diff --git a/reference/js_cookie_to_r_code.html b/reference/js_cookie_to_r_code.html deleted file mode 100644 index e49f5ab..0000000 --- a/reference/js_cookie_to_r_code.html +++ /dev/null @@ -1,181 +0,0 @@ - - - - - - - - -Generate required Javascript — js_cookie_to_r_code • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- -
-
- - -
-

This is used to generate the Javascript which gets and sets the cookies in the -user's browser. We need to glue it together to handle the variable expiry time and -to get the correct module namespace. This function is used internally only.

-
- -
js_cookie_to_r_code(id, expire_days = 7)
- -

Arguments

- - - - - - - - - - -
id

name of input object to hold the cookie value

expire_days

number of days to ask browser to retain cookie

- -

Value

- -

Character string of Javascript code

- -

Examples

-
if (FALSE) { -shinyjs::extendShinyjs( - text = js_cookie_to_r_code(ns("jscookie")), - functions = c("getcookie", "setcookie", "rmcookie") -) -} -
-
- -
- - - -
- - - - - - - - diff --git a/reference/js_return_click.html b/reference/js_return_click.html deleted file mode 100644 index b35187f..0000000 --- a/reference/js_return_click.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - -Javascript code to trigger login button with return key — js_return_click • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- -
-
- - -
-

Javascript code to trigger login button with return key

-
- -
js_return_click(idpassword, idbutton)
- -

Arguments

- - - - - - - - - - -
idpassword

name of password input, with correct namespace

idbutton

name of action button, with correct namespace

- - -
- -
- - - -
- - - - - - - - diff --git a/reference/jscookie_script.html b/reference/jscookie_script.html deleted file mode 100644 index 4ef0a33..0000000 --- a/reference/jscookie_script.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - -Javascript code for managing cookies — jscookie_script • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- -
-
- - -
-

This code is minified from the GitHub project js-cookie/js-cookie. We include it here -to make the shinyauthr package more self-contained

-
- -
jscookie_script()
- - - -
- -
- - - -
- - - - - - - - diff --git a/reference/login.html b/reference/login.html index f5599a7..9812e8d 100644 --- a/reference/login.html +++ b/reference/login.html @@ -1,67 +1,12 @@ - - - - - - - -login server module (deprecated) — login • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -login server module (deprecated) — login • shinyauthr - + + - - - -
-
- -
- -
+
-

Deprecated. Use loginServer instead.

+

Deprecated. Use loginServer instead.

-

Arguments

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
input

shiny input

output

shiny output

session

shiny session

data

data frame or tibble containing usernames, passwords and other user data

user_col

bare (unquoted) column name containing usernames

pwd_col

bare (unquoted) column name containing passwords

sodium_hashed

have the passwords been hash encrypted using the sodium package? defaults to FALSE

hashed

Deprecated. shinyauthr now uses the sodium package for password hashing and decryption. If you have previously hashed your passwords with the digest package to use with shinyauthr please re-hash them with sodium for decryption to work.

algo

Deprecated

log_out

[reactive] supply the returned reactive from logout here to trigger a user logout

sessionid_col

bare (unquoted) column name containing session ids

cookie_getter

a function that returns a data.frame with at least two columns: user and session

cookie_setter

a function with two parameters: user and session. The function must save these to a database.

reload_on_logout

should app force reload on logout?

- -

Value

- +
+

Arguments

+
input
+

shiny input

+
output
+

shiny output

+
session
+

shiny session

+
data
+

data frame or tibble containing usernames, passwords and other user data

+
user_col
+

bare (unquoted) column name containing usernames

+
pwd_col
+

bare (unquoted) column name containing passwords

+
sodium_hashed
+

have the passwords been hash encrypted using the sodium package? defaults to FALSE

+
hashed
+

Deprecated. shinyauthr now uses the sodium package for password hashing and decryption. If you have previously hashed your passwords with the digest package to use with shinyauthr please re-hash them with sodium for decryption to work.

+
algo
+

Deprecated

+
log_out
+

[reactive] supply the returned reactive from logout here to trigger a user logout

+
sessionid_col
+

bare (unquoted) column name containing session ids

+
cookie_getter
+

a function that returns a data.frame with at least two columns: user and session

+
cookie_setter
+

a function with two parameters: user and session. The function must save these to a database.

+
reload_on_logout
+

should app force reload on logout?

+
+
+

Value

The module will return a reactive 2 element list to your main application. First element user_auth is a boolean indicating whether there has been a successful login or not. Second element info will be the data frame provided to the function, filtered to the row matching the successfully logged in username. When user_auth is FALSE info is NULL.

-

Details

- -

Shiny authentication module for use with loginUI

-

Call via shiny::callModule(shinyauthr::login, "id", ...)

-

This function is now deprecated in favour of loginServer which uses shiny's new moduleServer -method as opposed to the callModule method used by this function. -See the loginServer documentation For details on how to migrate.

- -

Examples

-
if (FALSE) { -user_credentials <- shiny::callModule( - login, - id = "login", - data = user_base, - user_col = user, - pwd_col = password, - log_out = reactive(logout_init()) -) -} - -
+
+
+

Details

+

Shiny authentication module for use with loginUI

+

Call via shiny::callModule(shinyauthr::login, "id", ...)

+

This function is now deprecated in favour of loginServer which uses shiny's new moduleServer +method as opposed to the callModule method used by this function. +See the loginServer documentation For details on how to migrate.

+
+ +
+

Examples

+
if (FALSE) {
+user_credentials <- shiny::callModule(
+  login,
+  id = "login",
+  data = user_base,
+  user_col = user,
+  pwd_col = password,
+  log_out = reactive(logout_init())
+)
+}
+
+
+
+
-
- - + + diff --git a/reference/loginServer.html b/reference/loginServer.html index ae7032d..21dfac4 100644 --- a/reference/loginServer.html +++ b/reference/loginServer.html @@ -1,67 +1,12 @@ - - - - - - - -login server module — loginServer • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -login server module — loginServer • shinyauthr + + - - - - -
-
- -
- -
+
-

Shiny authentication module for use with loginUI

+

Shiny authentication module for use with loginUI

-
loginServer(
-  id,
-  data,
-  user_col,
-  pwd_col,
-  sodium_hashed = FALSE,
-  log_out = shiny::reactiveVal(),
-  reload_on_logout = FALSE,
-  cookie_logins = FALSE,
-  sessionid_col,
-  cookie_getter,
-  cookie_setter
-)
- -

Arguments

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
id

An ID string that corresponds with the ID used to call the module's UI function

data

data frame or tibble containing user names, passwords and other user data

user_col

bare (unquoted) or quoted column name containing user names

pwd_col

bare (unquoted) or quoted column name containing passwords

sodium_hashed

have the passwords been hash encrypted using the sodium package? defaults to FALSE

log_out

[reactive] supply the returned reactive from logoutServer here to trigger a user logout

reload_on_logout

should app force a session reload on logout?

cookie_logins

enable automatic logins via browser cookies?

sessionid_col

bare (unquoted) or quoted column name containing session ids

cookie_getter

a function that returns a data.frame with at least two columns: user and session

cookie_setter

a function with two parameters: user and session. The function must save these to a database.

- -

Value

+
+
loginServer(
+  id,
+  data,
+  user_col,
+  pwd_col,
+  sodium_hashed = FALSE,
+  log_out = shiny::reactiveVal(),
+  reload_on_logout = FALSE,
+  cookie_logins = FALSE,
+  sessionid_col,
+  cookie_getter,
+  cookie_setter
+)
+
+
+

Arguments

+
id
+

An ID string that corresponds with the ID used to call the module's UI function

+
data
+

data frame or tibble containing user names, passwords and other user data

+
user_col
+

bare (unquoted) or quoted column name containing user names

+
pwd_col
+

bare (unquoted) or quoted column name containing passwords

+
sodium_hashed
+

have the passwords been hash encrypted using the sodium package? defaults to FALSE

+
log_out
+

[reactive] supply the returned reactive from logoutServer here to trigger a user logout

+
reload_on_logout
+

should app force a session reload on logout?

+
cookie_logins
+

enable automatic logins via browser cookies?

+
sessionid_col
+

bare (unquoted) or quoted column name containing session ids

+
cookie_getter
+

a function that returns a data.frame with at least two columns: user and session

+
cookie_setter
+

a function with two parameters: user and session. The function must save these to a database.

+
+
+

Value

The module will return a reactive 2 element list to your main application. First element user_auth is a boolean indicating whether there has been a successful login or not. Second element info will be the data frame provided to the function, filtered to the row matching the successfully logged in username. When user_auth is FALSE info is NULL.

-

Details

- -

This module uses shiny's new moduleServer method as opposed to the callModule -method used by the now deprecated login function and must be called differently in your app. +

+
+

Details

+

This module uses shiny's new moduleServer method as opposed to the callModule +method used by the now deprecated login function and must be called differently in your app. For details on how to migrate see the 'Migrating from callModule to moduleServer' section of -Modularizing Shiny app code.

- -

Examples

-
#> -#> Attaching package: ‘shiny’
#> The following object is masked from ‘package:shinyauthr’: -#> -#> runExample
-# dataframe that holds usernames, passwords and other user data -user_base <- dplyr::tibble( - user = c("user1", "user2"), - password = c("pass1", "pass2"), - permissions = c("admin", "standard"), - name = c("User One", "User Two") -) - -ui <- fluidPage( - # add logout button UI - div(class = "pull-right", shinyauthr::logoutUI(id = "logout")), - # add login panel UI function - shinyauthr::loginUI(id = "login"), - # setup table output to show user info after login - tableOutput("user_table") -) - -server <- function(input, output, session) { - # call login module supplying data frame, - # user and password cols and reactive trigger - credentials <- shinyauthr::loginServer( - id = "login", - data = user_base, - user_col = user, - pwd_col = password, - log_out = reactive(logout_init()) - ) - - # call the logout module with reactive trigger to hide/show - logout_init <- shinyauthr::logoutServer( - id = "logout", - active = reactive(credentials()$user_auth) - ) - - output$user_table <- renderTable({ - # use req to only render results when credentials()$user_auth is TRUE - req(credentials()$user_auth) - credentials()$info - }) -} +Modularizing Shiny app code.

+
-if (interactive()) shinyApp(ui = ui, server = server) -
+
+

Examples

+
library(shiny)
+#> 
+#> Attaching package: ‘shiny’
+#> The following object is masked from ‘package:shinyauthr’:
+#> 
+#>     runExample
+
+# dataframe that holds usernames, passwords and other user data
+user_base <- dplyr::tibble(
+  user = c("user1", "user2"),
+  password = c("pass1", "pass2"),
+  permissions = c("admin", "standard"),
+  name = c("User One", "User Two")
+)
+
+ui <- fluidPage(
+  # add logout button UI
+  div(class = "pull-right", shinyauthr::logoutUI(id = "logout")),
+  # add login panel UI function
+  shinyauthr::loginUI(id = "login"),
+  # setup table output to show user info after login
+  tableOutput("user_table")
+)
+
+server <- function(input, output, session) {
+  # call login module supplying data frame, 
+  # user and password cols and reactive trigger
+  credentials <- shinyauthr::loginServer(
+    id = "login",
+    data = user_base,
+    user_col = user,
+    pwd_col = password,
+    log_out = reactive(logout_init())
+  )
+  
+  # call the logout module with reactive trigger to hide/show
+  logout_init <- shinyauthr::logoutServer(
+    id = "logout",
+    active = reactive(credentials()$user_auth)
+  )
+  
+  output$user_table <- renderTable({
+    # use req to only render results when credentials()$user_auth is TRUE
+    req(credentials()$user_auth)
+    credentials()$info
+  })
+}
+
+if (interactive()) shinyApp(ui = ui, server = server)
+
+
+
-
- - + + diff --git a/reference/loginUI.html b/reference/loginUI.html index efb2dcc..8ed6b6f 100644 --- a/reference/loginUI.html +++ b/reference/loginUI.html @@ -1,67 +1,12 @@ - - - - - - - -login UI module — loginUI • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -login UI module — loginUI • shinyauthr - + + - - - -
-
- -
- -
+
-

Shiny UI Module for use with loginServer

+

Shiny UI Module for use with loginServer

-
loginUI(
-  id,
-  title = "Please log in",
-  user_title = "User Name",
-  pass_title = "Password",
-  login_title = "Log in",
-  error_message = "Invalid username or password!",
-  additional_ui = NULL,
-  cookie_expiry = 7
-)
- -

Arguments

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
id

An ID string that corresponds with the ID used to call the module's server function

title

header title for the login panel

user_title

label for the user name text input

pass_title

label for the password text input

login_title

label for the login button

error_message

message to display after failed login

additional_ui

additional shiny UI element(s) to add below login button. Wrap multiple inside shiny::tagList()

cookie_expiry

number of days to request browser to retain login cookie

- -

Value

+
+
loginUI(
+  id,
+  title = "Please log in",
+  user_title = "User Name",
+  pass_title = "Password",
+  login_title = "Log in",
+  login_btn_class = "btn-primary",
+  error_message = "Invalid username or password!",
+  additional_ui = NULL,
+  cookie_expiry = 7
+)
+
+
+

Arguments

+
id
+

An ID string that corresponds with the ID used to call the module's server function

+
title
+

header title for the login panel

+
user_title
+

label for the user name text input

+
pass_title
+

label for the password text input

+
login_title
+

label for the login button

+
login_btn_class
+

bootstrap class for the login button. defaults to "btn-primary"

+
error_message
+

message to display after failed login

+
additional_ui
+

additional shiny UI element(s) to add below login button. Wrap multiple inside shiny::tagList()

+
cookie_expiry
+

number of days to request browser to retain login cookie

+
+
+

Value

Shiny UI login panel with user name text input, password text input and login action button.

+
-

Examples

-
library(shiny) - -# dataframe that holds usernames, passwords and other user data -user_base <- dplyr::tibble( - user = c("user1", "user2"), - password = c("pass1", "pass2"), - permissions = c("admin", "standard"), - name = c("User One", "User Two") -) - -ui <- fluidPage( - # add logout button UI - div(class = "pull-right", shinyauthr::logoutUI(id = "logout")), - # add login panel UI function - shinyauthr::loginUI(id = "login"), - # setup table output to show user info after login - tableOutput("user_table") -) - -server <- function(input, output, session) { - # call login module supplying data frame, - # user and password cols and reactive trigger - credentials <- shinyauthr::loginServer( - id = "login", - data = user_base, - user_col = user, - pwd_col = password, - log_out = reactive(logout_init()) - ) - - # call the logout module with reactive trigger to hide/show - logout_init <- shinyauthr::logoutServer( - id = "logout", - active = reactive(credentials()$user_auth) - ) - - output$user_table <- renderTable({ - # use req to only render results when credentials()$user_auth is TRUE - req(credentials()$user_auth) - credentials()$info - }) -} - -if (interactive()) shinyApp(ui = ui, server = server) -
+
+

Examples

+
library(shiny)
+
+# dataframe that holds usernames, passwords and other user data
+user_base <- dplyr::tibble(
+  user = c("user1", "user2"),
+  password = c("pass1", "pass2"),
+  permissions = c("admin", "standard"),
+  name = c("User One", "User Two")
+)
+
+ui <- fluidPage(
+  # add logout button UI
+  div(class = "pull-right", shinyauthr::logoutUI(id = "logout")),
+  # add login panel UI function
+  shinyauthr::loginUI(id = "login"),
+  # setup table output to show user info after login
+  tableOutput("user_table")
+)
+
+server <- function(input, output, session) {
+  # call login module supplying data frame, 
+  # user and password cols and reactive trigger
+  credentials <- shinyauthr::loginServer(
+    id = "login",
+    data = user_base,
+    user_col = user,
+    pwd_col = password,
+    log_out = reactive(logout_init())
+  )
+  
+  # call the logout module with reactive trigger to hide/show
+  logout_init <- shinyauthr::logoutServer(
+    id = "logout",
+    active = reactive(credentials()$user_auth)
+  )
+  
+  output$user_table <- renderTable({
+    # use req to only render results when credentials()$user_auth is TRUE
+    req(credentials()$user_auth)
+    credentials()$info
+  })
+}
+
+if (interactive()) shinyApp(ui = ui, server = server)
+
+
+
-
- - + + diff --git a/reference/logout.html b/reference/logout.html index a6f854f..807886b 100644 --- a/reference/logout.html +++ b/reference/logout.html @@ -1,67 +1,12 @@ - - - - - - - -logout server module (deprecated) — logout • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -logout server module (deprecated) — logout • shinyauthr - + + - - - -
-
- -
- -
+
-

Deprecated. Use logoutServer instead.

+

Deprecated. Use logoutServer instead.

-

Arguments

- - - - - - - - - - - - - - - - - - -
input

shiny input

output

shiny output

session

shiny session

active

[reactive] supply the returned user_auth boolean reactive from login -here to hide/show the logout button

- -

Value

- +
+

Arguments

+
input
+

shiny input

+
output
+

shiny output

+
session
+

shiny session

+
active
+

[reactive] supply the returned user_auth boolean reactive from login +here to hide/show the logout button

+
+
+

Value

Reactive boolean, to be supplied as the log_out argument of the - login module to trigger the logout process

-

Details

- -

Shiny authentication module for use with logoutUI

-

Call via shiny::callModule(shinyauthr::logout, "id", ...)

-

This function is now deprecated in favour of logoutServer which uses shiny's new moduleServer -method as opposed to the callModule method used by this function. -See the logoutServer documentation For details on how to migrate.

- -

Examples

-
if (FALSE) { -logout_init <- shiny::callModule( - logout, - id = "logout", - active = reactive(user_credentials()$user_auth) -) -} - -
+login module to trigger the logout process

+
+
+

Details

+

Shiny authentication module for use with logoutUI

+

Call via shiny::callModule(shinyauthr::logout, "id", ...)

+

This function is now deprecated in favour of logoutServer which uses shiny's new moduleServer +method as opposed to the callModule method used by this function. +See the logoutServer documentation For details on how to migrate.

+
+ +
+

Examples

+
if (FALSE) {
+logout_init <- shiny::callModule(
+  logout,
+  id = "logout",
+  active = reactive(user_credentials()$user_auth)
+)
+}
+
+
+
+
-
- - + + diff --git a/reference/logoutServer.html b/reference/logoutServer.html index 8ba40e5..7139d72 100644 --- a/reference/logoutServer.html +++ b/reference/logoutServer.html @@ -1,67 +1,12 @@ - - - - - - - -logout server module — logoutServer • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -logout server module — logoutServer • shinyauthr - - - - + + -
-
- -
- -
+
-

Shiny authentication module for use with logoutUI

+

Shiny authentication module for use with logoutUI

-
logoutServer(id, active, ...)
- -

Arguments

- - - - - - - - - - - - - - -
id

An ID string that corresponds with the ID used to call the module's UI function

active

reactive supply the returned user_auth boolean reactive from loginServer -here to hide/show the logout button

...

arguments passed to toggle

- -

Value

+
+
logoutServer(id, active, ...)
+
+
+

Arguments

+
id
+

An ID string that corresponds with the ID used to call the module's UI function

+
active
+

reactive supply the returned user_auth boolean reactive from loginServer +here to hide/show the logout button

+
...
+

arguments passed to toggle

+
+
+

Value

Reactive boolean, to be supplied as the log_out argument of the - loginServer module to trigger the logout process

-

Details

- -

This module uses shiny's new moduleServer method as opposed to the callModule -method used by the now deprecated login function and must be called differently in your app. +loginServer module to trigger the logout process

+
+
+

Details

+

This module uses shiny's new moduleServer method as opposed to the callModule +method used by the now deprecated login function and must be called differently in your app. For details on how to migrate see the 'Migrating from callModule to moduleServer' section of -Modularizing Shiny app code.

- -

Examples

-
library(shiny) - -# dataframe that holds usernames, passwords and other user data -user_base <- dplyr::tibble( - user = c("user1", "user2"), - password = c("pass1", "pass2"), - permissions = c("admin", "standard"), - name = c("User One", "User Two") -) - -ui <- fluidPage( - # add logout button UI - div(class = "pull-right", shinyauthr::logoutUI(id = "logout")), - # add login panel UI function - shinyauthr::loginUI(id = "login"), - # setup table output to show user info after login - tableOutput("user_table") -) - -server <- function(input, output, session) { - # call login module supplying data frame, - # user and password cols and reactive trigger - credentials <- shinyauthr::loginServer( - id = "login", - data = user_base, - user_col = user, - pwd_col = password, - log_out = reactive(logout_init()) - ) - - # call the logout module with reactive trigger to hide/show - logout_init <- shinyauthr::logoutServer( - id = "logout", - active = reactive(credentials()$user_auth) - ) - - output$user_table <- renderTable({ - # use req to only render results when credentials()$user_auth is TRUE - req(credentials()$user_auth) - credentials()$info - }) -} - -if (interactive()) shinyApp(ui = ui, server = server) -
+Modularizing Shiny app code.

+
+ +
+

Examples

+
library(shiny)
+
+# dataframe that holds usernames, passwords and other user data
+user_base <- dplyr::tibble(
+  user = c("user1", "user2"),
+  password = c("pass1", "pass2"),
+  permissions = c("admin", "standard"),
+  name = c("User One", "User Two")
+)
+
+ui <- fluidPage(
+  # add logout button UI
+  div(class = "pull-right", shinyauthr::logoutUI(id = "logout")),
+  # add login panel UI function
+  shinyauthr::loginUI(id = "login"),
+  # setup table output to show user info after login
+  tableOutput("user_table")
+)
+
+server <- function(input, output, session) {
+  # call login module supplying data frame, 
+  # user and password cols and reactive trigger
+  credentials <- shinyauthr::loginServer(
+    id = "login",
+    data = user_base,
+    user_col = user,
+    pwd_col = password,
+    log_out = reactive(logout_init())
+  )
+  
+  # call the logout module with reactive trigger to hide/show
+  logout_init <- shinyauthr::logoutServer(
+    id = "logout",
+    active = reactive(credentials()$user_auth)
+  )
+  
+  output$user_table <- renderTable({
+    # use req to only render results when credentials()$user_auth is TRUE
+    req(credentials()$user_auth)
+    credentials()$info
+  })
+}
+
+if (interactive()) shinyApp(ui = ui, server = server)
+
+
+
-
- - + + diff --git a/reference/logoutUI.html b/reference/logoutUI.html index e9b3a24..2eb7df1 100644 --- a/reference/logoutUI.html +++ b/reference/logoutUI.html @@ -1,67 +1,12 @@ - - - - - - - -logout UI module — logoutUI • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -logout UI module — logoutUI • shinyauthr - + + - - - -
-
- -
- -
+
-

Shiny UI Module for use with logoutServer

+

Shiny UI Module for use with logoutServer

-
logoutUI(
-  id,
-  label = "Log out",
-  icon = NULL,
-  class = "btn-danger",
-  style = "color: white;"
-)
- -

Arguments

- - - - - - - - - - - - - - - - - - - - - - -
id

An ID string that corresponds with the ID used to call the module's server function

label

label for the logout button

icon

An optional icon to appear on the button.

class

bootstrap class for the logout button

style

css styling for the logout button

- -

Value

+
+
logoutUI(
+  id,
+  label = "Log out",
+  icon = NULL,
+  class = "btn-danger",
+  style = "color: white;"
+)
+
+
+

Arguments

+
id
+

An ID string that corresponds with the ID used to call the module's server function

+
label
+

label for the logout button

+
icon
+

An optional icon to appear on the button.

+
class
+

bootstrap class for the logout button

+
style
+

css styling for the logout button

+
+
+

Value

Shiny UI action button

+
-

Examples

-
library(shiny) - -# dataframe that holds usernames, passwords and other user data -user_base <- dplyr::tibble( - user = c("user1", "user2"), - password = c("pass1", "pass2"), - permissions = c("admin", "standard"), - name = c("User One", "User Two") -) - -ui <- fluidPage( - # add logout button UI - div(class = "pull-right", shinyauthr::logoutUI(id = "logout")), - # add login panel UI function - shinyauthr::loginUI(id = "login"), - # setup table output to show user info after login - tableOutput("user_table") -) - -server <- function(input, output, session) { - # call login module supplying data frame, - # user and password cols and reactive trigger - credentials <- shinyauthr::loginServer( - id = "login", - data = user_base, - user_col = user, - pwd_col = password, - log_out = reactive(logout_init()) - ) - - # call the logout module with reactive trigger to hide/show - logout_init <- shinyauthr::logoutServer( - id = "logout", - active = reactive(credentials()$user_auth) - ) - - output$user_table <- renderTable({ - # use req to only render results when credentials()$user_auth is TRUE - req(credentials()$user_auth) - credentials()$info - }) -} - -if (interactive()) shinyApp(ui = ui, server = server) -
+
+

Examples

+
library(shiny)
+
+# dataframe that holds usernames, passwords and other user data
+user_base <- dplyr::tibble(
+  user = c("user1", "user2"),
+  password = c("pass1", "pass2"),
+  permissions = c("admin", "standard"),
+  name = c("User One", "User Two")
+)
+
+ui <- fluidPage(
+  # add logout button UI
+  div(class = "pull-right", shinyauthr::logoutUI(id = "logout")),
+  # add login panel UI function
+  shinyauthr::loginUI(id = "login"),
+  # setup table output to show user info after login
+  tableOutput("user_table")
+)
+
+server <- function(input, output, session) {
+  # call login module supplying data frame, 
+  # user and password cols and reactive trigger
+  credentials <- shinyauthr::loginServer(
+    id = "login",
+    data = user_base,
+    user_col = user,
+    pwd_col = password,
+    log_out = reactive(logout_init())
+  )
+  
+  # call the logout module with reactive trigger to hide/show
+  logout_init <- shinyauthr::logoutServer(
+    id = "logout",
+    active = reactive(credentials()$user_auth)
+  )
+  
+  output$user_table <- renderTable({
+    # use req to only render results when credentials()$user_auth is TRUE
+    req(credentials()$user_auth)
+    credentials()$info
+  })
+}
+
+if (interactive()) shinyApp(ui = ui, server = server)
+
+
+
-
- - + + diff --git a/reference/randomString.html b/reference/randomString.html deleted file mode 100644 index 3414b43..0000000 --- a/reference/randomString.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - - - - - -Generate random string — randomString • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- -
-
- - -
-

This function is used to generate random session ids.

-
- -
randomString(n = 64)
- -

Arguments

- - - - - - -
n

length of string

- -

Value

- -

A random character string.

- -
- -
- - - -
- - - - - - - - diff --git a/reference/runExample.html b/reference/runExample.html index cf41ac6..54e98fe 100644 --- a/reference/runExample.html +++ b/reference/runExample.html @@ -1,68 +1,13 @@ - - - - - - - -Run shinyauthr examples — runExample • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Run shinyauthr examples — runExample • shinyauthr - + + - - - -
-
- -
- -
+
@@ -122,54 +60,51 @@

Run shinyauthr examples

Use user1 pass1 or user2 pass2 to login.

-
runExample(example = c("basic", "shinydashboard", "navbarPage"))
- -

Arguments

- - - - - - -
example

The app to launch. Options are "basic", "shinydashboard" or "navbarPage"

- -

Value

+
+
runExample(example = c("basic", "shinydashboard", "navbarPage"))
+
+
+

Arguments

+
example
+

The app to launch. Options are "basic", "shinydashboard" or "navbarPage"

+
+
+

Value

No return value, a shiny app is launched.

+
-

Examples

-
## Only run this example in interactive R sessions -if (interactive()) { - runExample("basic") - runExample("shinydashboard") - runExample("navbarPage") -} -
+
+

Examples

+
## Only run this example in interactive R sessions
+if (interactive()) {
+  runExample("basic")
+  runExample("shinydashboard")
+  runExample("navbarPage")
+}
+
+
+
-
- - + + diff --git a/reference/runNavbarPageExample.html b/reference/runNavbarPageExample.html deleted file mode 100644 index 9ecc9dd..0000000 --- a/reference/runNavbarPageExample.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - -Run navbarPage example — runNavbarPageExample • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- -
-
- - -
-

Launch example shiny navbarPage app using shinyauthr authentication modules

-
- -
runNavbarPageExample()
- - - -
- -
- - - -
- - - - - - - - diff --git a/reference/runShinyDashboardExample.html b/reference/runShinyDashboardExample.html deleted file mode 100644 index 3a940b3..0000000 --- a/reference/runShinyDashboardExample.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - -Run shinyauthr example — runShinyDashboardExample • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- -
-
- - -
-

Launch example shinydashboard using shinyauthr authentication modules

-
- -
runShinyDashboardExample()
- - - -
- -
- - - -
- - - - - - - - diff --git a/reference/runShinyExample.html b/reference/runShinyExample.html deleted file mode 100644 index 425b8c8..0000000 --- a/reference/runShinyExample.html +++ /dev/null @@ -1,157 +0,0 @@ - - - - - - - - -Run shinyauthr example — runShinyExample • shinyauthr - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
- -
-
- - -
-

Launch example shiny dashboard using shinyauthr authentication modules

-
- -
runShinyExample()
- - -

Author

- -

Paul Campbell, pacampbell91@gmail.com

- -
- -
- - - -
- - - - - - - - diff --git a/sitemap.xml b/sitemap.xml index 05307e6..36a7a81 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1,27 +1,45 @@ - https://paulc91.github.io/shinyauthr//index.html + https://paulc91.github.io/shinyauthr/404.html - https://paulc91.github.io/shinyauthr//reference/login.html + https://paulc91.github.io/shinyauthr/LICENSE-text.html - https://paulc91.github.io/shinyauthr//reference/loginServer.html + https://paulc91.github.io/shinyauthr/LICENSE.html - https://paulc91.github.io/shinyauthr//reference/loginUI.html + https://paulc91.github.io/shinyauthr/authors.html - https://paulc91.github.io/shinyauthr//reference/logout.html + https://paulc91.github.io/shinyauthr/index.html - https://paulc91.github.io/shinyauthr//reference/logoutServer.html + https://paulc91.github.io/shinyauthr/news/index.html - https://paulc91.github.io/shinyauthr//reference/logoutUI.html + https://paulc91.github.io/shinyauthr/reference/index.html - https://paulc91.github.io/shinyauthr//reference/runExample.html + https://paulc91.github.io/shinyauthr/reference/login.html + + + https://paulc91.github.io/shinyauthr/reference/loginServer.html + + + https://paulc91.github.io/shinyauthr/reference/loginUI.html + + + https://paulc91.github.io/shinyauthr/reference/logout.html + + + https://paulc91.github.io/shinyauthr/reference/logoutServer.html + + + https://paulc91.github.io/shinyauthr/reference/logoutUI.html + + + https://paulc91.github.io/shinyauthr/reference/runExample.html