diff --git a/.Rbuildignore b/.Rbuildignore index 85f07ff..78a1a22 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -7,3 +7,5 @@ ^docs$ ^Meta$ ^examples$ +^_pkgdown\.yml$ +^pkgdown$ diff --git a/.gitignore b/.gitignore index 738fd2e..fe81641 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ inst/doc doc Meta examples/demo/rsconnect +docs diff --git a/_pkgdown.yml b/_pkgdown.yml new file mode 100644 index 0000000..e69de29 diff --git a/docs/404.html b/docs/404.html index 0f217d3..2bd4d8c 100644 --- a/docs/404.html +++ b/docs/404.html @@ -8,23 +8,29 @@ <title>Page not found (404) • shinymanager</title> + <!-- jquery --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <!-- Bootstrap --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" /> -<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous" /> + +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script> + +<!-- bootstrap-toc --> +<link rel="stylesheet" href="bootstrap-toc.css"> +<script src="bootstrap-toc.js"></script> <!-- Font Awesome icons --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/all.min.css" integrity="sha256-PbSmjxuVAzJ6FPvNYsrXygfGhNJYyZ2GktDbkMBqQZg=" crossorigin="anonymous" /> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/v4-shims.min.css" integrity="sha256-A6jcAdwFD48VMjlI3GDxUd+eCQa7/KWy6G9oe/ovaPA=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" /> <!-- clipboard.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script> <!-- headroom.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> <!-- pkgdown --> <link href="pkgdown.css" rel="stylesheet"> @@ -32,10 +38,12 @@ + <meta property="og:title" content="Page not found (404)" /> + <!-- mathjax --> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script> @@ -49,7 +57,7 @@ </head> - <body> + <body data-spy="scroll" data-target="#toc"> <div class="container template-title-body"> <header> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> @@ -63,7 +71,7 @@ </button> <span class="navbar-brand"> <a class="navbar-link" href="index.html">shinymanager</a> - <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.200</span> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.300</span> </span> </div> @@ -94,10 +102,9 @@ <a href="news/index.html">Changelog</a> </li> </ul> - <ul class="nav navbar-nav navbar-right"> <li> - <a href="https://github.com/datastorm-open/shinymanager"> + <a href="https://github.com/datastorm-open/shinymanager/"> <span class="fab fa fab fa-github fa-lg"></span> </a> @@ -122,6 +129,12 @@ <h1>Page not found (404)</h1> </div> + <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar"> + <nav id="toc" data-toggle="toc" class="sticky-top"> + <h2 data-toc-skip>Contents</h2> + </nav> + </div> + </div> @@ -132,7 +145,7 @@ <h1>Page not found (404)</h1> </div> <div class="pkgdown"> - <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.9000.</p> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p> </div> </footer> diff --git a/docs/articles/SQLite_Admin.html b/docs/articles/SQLite_Admin.html index bd764f0..419a13d 100644 --- a/docs/articles/SQLite_Admin.html +++ b/docs/articles/SQLite_Admin.html @@ -6,19 +6,19 @@ <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>shinymanager : SQLite Admin • shinymanager</title> -<!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script><!-- Bootstrap --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous"> -<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/all.min.css" integrity="sha256-PbSmjxuVAzJ6FPvNYsrXygfGhNJYyZ2GktDbkMBqQZg=" crossorigin="anonymous"> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/v4-shims.min.css" integrity="sha256-A6jcAdwFD48VMjlI3GDxUd+eCQa7/KWy6G9oe/ovaPA=" crossorigin="anonymous"> -<!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- pkgdown --><link href="../pkgdown.css" rel="stylesheet"> +<!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script><!-- Bootstrap --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous"> +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script><!-- bootstrap-toc --><link rel="stylesheet" href="../bootstrap-toc.css"> +<script src="../bootstrap-toc.js"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous"> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous"> +<!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- pkgdown --><link href="../pkgdown.css" rel="stylesheet"> <script src="../pkgdown.js"></script><meta property="og:title" content="shinymanager : SQLite Admin"> -<meta property="og:description" content=""> -<meta name="twitter:card" content="summary"> +<meta property="og:description" content="shinymanager"> <!-- mathjax --><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script><!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> -<body> +<body data-spy="scroll" data-target="#toc"> <div class="container template-article"> <header><div class="navbar navbar-default navbar-fixed-top" role="navigation"> <div class="container"> @@ -31,7 +31,7 @@ </button> <span class="navbar-brand"> <a class="navbar-link" href="../index.html">shinymanager</a> - <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.200</span> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.300</span> </span> </div> @@ -64,7 +64,7 @@ </ul> <ul class="nav navbar-nav navbar-right"> <li> - <a href="https://github.com/datastorm-open/shinymanager"> + <a href="https://github.com/datastorm-open/shinymanager/"> <span class="fab fa fab fa-github fa-lg"></span> </a> @@ -79,10 +79,10 @@ - </header><div class="row"> + </header><script src="SQLite_Admin_files/accessible-code-block-0.0.1/empty-anchor.js"></script><div class="row"> <div class="col-md-9 contents"> <div class="page-header toc-ignore"> - <h1>shinymanager : SQLite Admin</h1> + <h1 data-toc-skip>shinymanager : SQLite Admin</h1> <small class="dont-index">Source: <a href="https://github.com/datastorm-open/shinymanager/blob/master/vignettes/SQLite_Admin.Rmd"><code>vignettes/SQLite_Admin.Rmd</code></a></small> @@ -101,46 +101,63 @@ <h2 class="hasAnchor"> <li>ask the user to change his password</li> <li>see logs about application usage</li> </ul> -<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Credentials data</span> -credentials <-<span class="st"> </span><span class="kw"><a href="https://rdrr.io/r/base/data.frame.html">data.frame</a></span>( - <span class="dt">user =</span> <span class="kw"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="st">"shiny"</span>, <span class="st">"shinymanager"</span>), - <span class="dt">password =</span> <span class="kw"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="st">"azerty"</span>, <span class="st">"12345"</span>), - <span class="dt">admin =</span> <span class="kw"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="ot">FALSE</span>, <span class="ot">TRUE</span>), - <span class="dt">stringsAsFactors =</span> <span class="ot">FALSE</span> +<div class="sourceCode" id="cb1"><html><body><pre class="r"><span class="co"># Credentials data</span> +<span class="no">credentials</span> <span class="kw"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html">data.frame</a></span>( + <span class="kw">user</span> <span class="kw">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="st">"shiny"</span>, <span class="st">"shinymanager"</span>), + <span class="kw">password</span> <span class="kw">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="st">"azerty"</span>, <span class="st">"12345"</span>), + <span class="co"># password will automatically be hashed</span> + <span class="kw">admin</span> <span class="kw">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="fl">FALSE</span>, <span class="fl">TRUE</span>), + <span class="kw">stringsAsFactors</span> <span class="kw">=</span> <span class="fl">FALSE</span> ) <span class="co"># you can use keyring package to set database key</span> -<span class="kw"><a href="https://rdrr.io/r/base/library.html">library</a></span>(keyring) -<span class="kw">key_set</span>(<span class="st">"R-shinymanager-key"</span>, <span class="st">"obiwankenobi"</span>) +<span class="fu"><a href="https://rdrr.io/r/base/library.html">library</a></span>(<span class="no">keyring</span>) +<span class="fu">key_set</span>(<span class="st">"R-shinymanager-key"</span>, <span class="st">"obiwankenobi"</span>) <span class="co"># Init the database</span> -<span class="kw"><a href="../reference/create_db.html">create_db</a></span>( - <span class="dt">credentials_data =</span> credentials, - <span class="dt">sqlite_path =</span> <span class="st">"path/to/database.sqlite"</span>, <span class="co"># will be created</span> - <span class="dt">passphrase =</span> <span class="kw">key_get</span>(<span class="st">"R-shinymanager-key"</span>, <span class="st">"obiwankenobi"</span>) -)</code></pre></div> +<span class="fu"><a href="../reference/create_db.html">create_db</a></span>( + <span class="kw">credentials_data</span> <span class="kw">=</span> <span class="no">credentials</span>, + <span class="kw">sqlite_path</span> <span class="kw">=</span> <span class="st">"path/to/database.sqlite"</span>, <span class="co"># will be created</span> + <span class="kw">passphrase</span> <span class="kw">=</span> <span class="fu">key_get</span>(<span class="st">"R-shinymanager-key"</span>, <span class="st">"obiwankenobi"</span>) + <span class="co"># passphrase = "passphrase_wihtout_keyring"</span> +) + +<span class="co"># Wrap your UI with secure_app, enabled admin mode or not</span> +<span class="no">ui</span> <span class="kw"><-</span> <span class="fu"><a href="../reference/secure-app.html">secure_app</a></span>(<span class="no">ui</span>, <span class="kw">enable_admin</span> <span class="kw">=</span> <span class="fl">TRUE</span>) + + +<span class="no">server</span> <span class="kw"><-</span> <span class="kw">function</span>(<span class="no">input</span>, <span class="no">output</span>, <span class="no">session</span>) { + + <span class="co"># check_credentials directly on sqlite db</span> + <span class="no">res_auth</span> <span class="kw"><-</span> <span class="fu"><a href="../reference/secure-app.html">secure_server</a></span>( + <span class="kw">check_credentials</span> <span class="kw">=</span> <span class="fu"><a href="../reference/check_credentials.html">check_credentials</a></span>( + <span class="st">"path/to/database.sqlite"</span>, + <span class="kw">passphrase</span> <span class="kw">=</span> <span class="fu">key_get</span>(<span class="st">"R-shinymanager-key"</span>, <span class="st">"obiwankenobi"</span>) + <span class="co"># passphrase = "passphrase_wihtout_keyring"</span> + ) + ) + + <span class="no">output</span>$<span class="no">auth_output</span> <span class="kw"><-</span> <span class="fu">renderPrint</span>({ + <span class="fu">reactiveValuesToList</span>(<span class="no">res_auth</span>) + }) + + <span class="co"># your classic server logic</span> + <span class="no">...</span> +}</pre></body></html></div> <p>Starting page of the application will be :</p> -<div class="figure"> -<img src="../man/figures/shinymanager-login.png" style="width:100.0%"> -</div> +<p><img src="../man/figures/shinymanager-login.png" style="width:100.0%"></p> <p>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 :</p> -<div class="figure"> -<img src="../man/figures/shinymanager-info-nav.png" style="width:100.0%"> -</div> +<p><img src="../man/figures/shinymanager-info-nav.png" style="width:100.0%"></p> </div> <div id="admin-mode" class="section level2"> <h2 class="hasAnchor"> <a href="#admin-mode" class="anchor"></a>Admin mode</h2> -<div class="figure"> -<img src="../man/figures/shinymanager-admin.png" style="width:100.0%"> -</div> +<p><img src="../man/figures/shinymanager-admin.png" style="width:100.0%"></p> <div id="manage-users" class="section level3"> <h3 class="hasAnchor"> <a href="#manage-users" class="anchor"></a>Manage users</h3> <p>The first table lists all current users :</p> -<div class="figure"> -<img src="../man/figures/user_table.png" style="width:100.0%"> -</div> +<p><img src="../man/figures/user_table.png" style="width:100.0%"></p> <p>A user is defined (at least) by the following information :</p> <ul> <li> @@ -153,13 +170,9 @@ <h3 class="hasAnchor"> <div id="add-user" class="section level4"> <h4 class="hasAnchor"> <a href="#add-user" class="anchor"></a>Add user</h4> -<div class="figure"> -<img src="../man/figures/add_user.png" style="width:100.0%"> -</div> +<p><img src="../man/figures/add_user.png" style="width:100.0%"></p> <p>Using <strong>Add user</strong> button. So you can edit user information in the modal box :</p> -<div class="figure"> -<img src="../man/figures/popup.png" style="width:50.0%"> -</div> +<p><img src="../man/figures/popup.png" style="width:50.0%"></p> <p>Notes :</p> <ul> <li> @@ -169,9 +182,7 @@ <h4 class="hasAnchor"> <li> <strong>Password</strong> : By defaut, a temporary password is generated. But you can put your own password and disable asking user to change it on first connexion.</li> </ul> -<div class="figure"> -<img src="../man/figures/shinymanager-pwd.png" style="width:100.0%"> -</div> +<p><img src="../man/figures/shinymanager-pwd.png" style="width:100.0%"></p> <p>Finally, the creation is effective clicking on validation button.</p> </div> </div> @@ -188,9 +199,7 @@ <h4 class="hasAnchor"> <h4 class="hasAnchor"> <a href="#password-management" class="anchor"></a>Password management</h4> <p>The second table allows password management :</p> -<div class="figure"> -<img src="../man/figures/password_table.png" style="width:100.0%"> -</div> +<p><img src="../man/figures/password_table.png" style="width:100.0%"></p> <ul> <li> <strong>Change password button :</strong> Ask user to change password on next connexion</li> @@ -217,23 +226,16 @@ <h4 class="hasAnchor"> <h3 class="hasAnchor"> <a href="#logs" class="anchor"></a>Logs</h3> <p>You can visualize and download connexion logs on the second tab.</p> -<div class="figure"> -<img src="../man/figures/shinymanager-logs.png" style="width:100.0%"> -</div> +<p><img src="../man/figures/shinymanager-logs.png" style="width:100.0%"></p> </div> </div> </div> <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar"> - <div id="tocnav"> - <h2 class="hasAnchor"> -<a href="#tocnav" class="anchor"></a>Contents</h2> - <ul class="nav nav-pills nav-stacked"> -<li><a href="#introduction">Introduction</a></li> - <li><a href="#admin-mode">Admin mode</a></li> - </ul> + + <nav id="toc" data-toggle="toc"><h2 data-toc-skip>Contents</h2> + </nav> </div> - </div> </div> @@ -244,7 +246,7 @@ <h2 class="hasAnchor"> </div> <div class="pkgdown"> - <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.9000.</p> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p> </div> </footer> diff --git a/docs/articles/index.html b/docs/articles/index.html index 5274f28..3840e4c 100644 --- a/docs/articles/index.html +++ b/docs/articles/index.html @@ -8,23 +8,29 @@ <title>Articles • shinymanager</title> + <!-- jquery --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <!-- Bootstrap --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" /> -<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous" /> + +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script> + +<!-- bootstrap-toc --> +<link rel="stylesheet" href="../bootstrap-toc.css"> +<script src="../bootstrap-toc.js"></script> <!-- Font Awesome icons --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/all.min.css" integrity="sha256-PbSmjxuVAzJ6FPvNYsrXygfGhNJYyZ2GktDbkMBqQZg=" crossorigin="anonymous" /> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/v4-shims.min.css" integrity="sha256-A6jcAdwFD48VMjlI3GDxUd+eCQa7/KWy6G9oe/ovaPA=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" /> <!-- clipboard.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script> <!-- headroom.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> <!-- pkgdown --> <link href="../pkgdown.css" rel="stylesheet"> @@ -32,10 +38,12 @@ + <meta property="og:title" content="Articles" /> + <!-- mathjax --> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script> @@ -49,7 +57,7 @@ </head> - <body> + <body data-spy="scroll" data-target="#toc"> <div class="container template-article-index"> <header> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> @@ -63,7 +71,7 @@ </button> <span class="navbar-brand"> <a class="navbar-link" href="../index.html">shinymanager</a> - <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.200</span> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.300</span> </span> </div> @@ -94,10 +102,9 @@ <a href="../news/index.html">Changelog</a> </li> </ul> - <ul class="nav navbar-nav navbar-right"> <li> - <a href="https://github.com/datastorm-open/shinymanager"> + <a href="https://github.com/datastorm-open/shinymanager/"> <span class="fab fa fab fa-github fa-lg"></span> </a> @@ -122,9 +129,10 @@ <h1>Articles</h1> <h3>All vignettes</h3> <p class="section-desc"></p> - <ul> - <li><a href="SQLite_Admin.html">shinymanager : SQLite Admin</a></li> - </ul> + <dl> + <dt><a href="SQLite_Admin.html">shinymanager : SQLite Admin</a></dt> + <dd></dt> + </dl> </div> </div> </div> @@ -136,7 +144,7 @@ <h3>All vignettes</h3> </div> <div class="pkgdown"> - <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.9000.</p> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p> </div> </footer> diff --git a/docs/authors.html b/docs/authors.html index c97e260..3cf6359 100644 --- a/docs/authors.html +++ b/docs/authors.html @@ -8,23 +8,29 @@ <title>Authors • shinymanager</title> + <!-- jquery --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <!-- Bootstrap --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" /> -<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous" /> + +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script> + +<!-- bootstrap-toc --> +<link rel="stylesheet" href="bootstrap-toc.css"> +<script src="bootstrap-toc.js"></script> <!-- Font Awesome icons --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/all.min.css" integrity="sha256-PbSmjxuVAzJ6FPvNYsrXygfGhNJYyZ2GktDbkMBqQZg=" crossorigin="anonymous" /> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/v4-shims.min.css" integrity="sha256-A6jcAdwFD48VMjlI3GDxUd+eCQa7/KWy6G9oe/ovaPA=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" /> <!-- clipboard.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script> <!-- headroom.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> <!-- pkgdown --> <link href="pkgdown.css" rel="stylesheet"> @@ -32,10 +38,12 @@ + <meta property="og:title" content="Authors" /> + <!-- mathjax --> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script> @@ -49,7 +57,7 @@ </head> - <body> + <body data-spy="scroll" data-target="#toc"> <div class="container template-authors"> <header> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> @@ -63,7 +71,7 @@ </button> <span class="navbar-brand"> <a class="navbar-link" href="index.html">shinymanager</a> - <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.200</span> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.300</span> </span> </div> @@ -94,10 +102,9 @@ <a href="news/index.html">Changelog</a> </li> </ul> - <ul class="nav navbar-nav navbar-right"> <li> - <a href="https://github.com/datastorm-open/shinymanager"> + <a href="https://github.com/datastorm-open/shinymanager/"> <span class="fab fa fab fa-github fa-lg"></span> </a> @@ -141,7 +148,7 @@ <h1>Authors</h1> </div> <div class="pkgdown"> - <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.9000.</p> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p> </div> </footer> diff --git a/docs/index.html b/docs/index.html index 17e811d..9bdc410 100644 --- a/docs/index.html +++ b/docs/index.html @@ -6,21 +6,21 @@ <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Authentication Management for Shiny Applications • shinymanager</title> -<!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script><!-- Bootstrap --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous"> -<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/all.min.css" integrity="sha256-PbSmjxuVAzJ6FPvNYsrXygfGhNJYyZ2GktDbkMBqQZg=" crossorigin="anonymous"> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/v4-shims.min.css" integrity="sha256-A6jcAdwFD48VMjlI3GDxUd+eCQa7/KWy6G9oe/ovaPA=" crossorigin="anonymous"> -<!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- pkgdown --><link href="pkgdown.css" rel="stylesheet"> +<!-- jquery --><script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script><!-- Bootstrap --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous"> +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script><!-- bootstrap-toc --><link rel="stylesheet" href="bootstrap-toc.css"> +<script src="bootstrap-toc.js"></script><!-- Font Awesome icons --><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous"> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous"> +<!-- clipboard.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script><!-- headroom.js --><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script><!-- pkgdown --><link href="pkgdown.css" rel="stylesheet"> <script src="pkgdown.js"></script><meta property="og:title" content="Authentication Management for Shiny Applications"> <meta property="og:description" content="Simple and secure authentification mechanism for single Shiny applications. Credentials are stored in an encrypted SQLite database. Source code of main application is protected until authentication is successful."> -<meta name="twitter:card" content="summary"> <!-- mathjax --><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script><!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> </head> -<body> +<body data-spy="scroll" data-target="#toc"> <div class="container template-home"> <header><div class="navbar navbar-default navbar-fixed-top" role="navigation"> <div class="container"> @@ -33,7 +33,7 @@ </button> <span class="navbar-brand"> <a class="navbar-link" href="index.html">shinymanager</a> - <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.200</span> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.300</span> </span> </div> @@ -66,7 +66,7 @@ </ul> <ul class="nav navbar-nav navbar-right"> <li> - <a href="https://github.com/datastorm-open/shinymanager"> + <a href="https://github.com/datastorm-open/shinymanager/"> <span class="fab fa fab fa-github fa-lg"></span> </a> @@ -83,13 +83,13 @@ </header><div class="row"> <div class="contents col-md-9"> -<div id="shinymanager" class="section level1"> +<div id="shinymanager-" class="section level1"> <div class="page-header"><h1 class="hasAnchor"> -<a href="#shinymanager" class="anchor"></a>shinymanager <img src="reference/figures/shinymanager.png" width="200" align="right"> +<a href="#shinymanager-" class="anchor"></a>shinymanager <img src="reference/figures/shinymanager.png" width="200" align="right"> </h1></div> <blockquote> -<p>Simple and secure authentification mechanism for single ‘Shiny’ applications. Credentials are stored in an encrypted ‘SQLite’ database. Source code of main application is protected until authentication is successful.</p> +<p>Simple and secure authentication mechanism for single ‘Shiny’ applications. Credentials are stored in an encrypted ‘SQLite’ database. Password are hashed using ‘scrypt’ R package. Source code of main application is protected until authentication is successful.</p> </blockquote> <p>Live demo:</p> <ul> @@ -104,13 +104,32 @@ </li> <li>user: <code>shinymanager</code> / password: <code>shinymanager</code> (Admin)</li> </ul> +<p>Online documentation : <a href="https://datastorm-open.github.io/shinymanager/" class="uri">https://datastorm-open.github.io/shinymanager/</a></p> +<div id="news-on-shinymanager-10300" class="section level3"> +<h3 class="hasAnchor"> +<a href="#news-on-shinymanager-10300" class="anchor"></a>News on shinymanager 1.0.300</h3> +<ul> +<li>Add <code>autofocus</code> on username input.</li> +<li>Fix some (strange) bug with <code>input$shinymanager_where</code> +</li> +<li>Fix <code>inputs_list</code> with some shiny version</li> +<li> +<code><a href="reference/module-authentication.html">auth_ui()</a></code> now accept a <code>choose_language</code> arguments.</li> +<li>Rename <code>br</code> language into <code>pt-BR</code> (iso code)</li> +<li>add user info in downloaded log file</li> +<li>add <code><a href="reference/custom-labels.html">set_labels()</a></code> for customize labels</li> +<li>Fix simultaneous admin session</li> +<li>(#37) hashing password using <code>scrypt</code> +</li> +</ul> +</div> <div id="installation" class="section level3"> <h3 class="hasAnchor"> <a href="#installation" class="anchor"></a>Installation</h3> <p>Install from CRAN with :</p> -<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="kw"><a href="https://rdrr.io/r/utils/install.packages.html">install.packages</a></span>(<span class="st">"shinymanager"</span>)</code></pre></div> +<div class="sourceCode" id="cb1"><pre class="r"><span class="fu"><a href="https://rdrr.io/r/utils/install.packages.html">install.packages</a></span>(<span class="st">"shinymanager"</span>)</pre></div> <p>Or install development version from GitHub :</p> -<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r">remotes<span class="op">::</span><span class="kw"><a href="https://rdrr.io/pkg/remotes/man/install_github.html">install_github</a></span>(<span class="st">"datastorm-open/shinymanager"</span>)</code></pre></div> +<div class="sourceCode" id="cb2"><pre class="r"><span class="kw pkg">remotes</span><span class="kw ns">::</span><span class="fu"><a href="https://remotes.r-lib.org/reference/install_github.html">install_github</a></span>(<span class="st">"datastorm-open/shinymanager"</span>)</pre></div> </div> <div id="usage" class="section level3"> <h3 class="hasAnchor"> @@ -123,47 +142,47 @@ <h3 class="hasAnchor"> <code><a href="reference/secure-app.html">secure_server()</a></code> & <code><a href="reference/check_credentials.html">check_credentials()</a></code> </li> </ul> -<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># define some credentials</span> -credentials <-<span class="st"> </span><span class="kw"><a href="https://rdrr.io/r/base/data.frame.html">data.frame</a></span>( - <span class="dt">user =</span> <span class="kw"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="st">"shiny"</span>, <span class="st">"shinymanager"</span>), <span class="co"># mandatory</span> - <span class="dt">password =</span> <span class="kw"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="st">"azerty"</span>, <span class="st">"12345"</span>), <span class="co"># mandatory</span> - <span class="dt">start =</span> <span class="kw"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="st">"2019-04-15"</span>), <span class="co"># optinal (all others)</span> - <span class="dt">expire =</span> <span class="kw"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="ot">NA</span>, <span class="st">"2019-12-31"</span>), - <span class="dt">admin =</span> <span class="kw"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="ot">FALSE</span>, <span class="ot">TRUE</span>), - <span class="dt">comment =</span> <span class="st">"Simple and secure authentification mechanism </span> -<span class="st"> for single ‘Shiny’ applications."</span>, - <span class="dt">stringsAsFactors =</span> <span class="ot">FALSE</span> +<div class="sourceCode" id="cb3"><pre class="r"><span class="co"># define some credentials</span> +<span class="no">credentials</span> <span class="kw"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html">data.frame</a></span>( + <span class="kw">user</span> <span class="kw">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="st">"shiny"</span>, <span class="st">"shinymanager"</span>), <span class="co"># mandatory</span> + <span class="kw">password</span> <span class="kw">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="st">"azerty"</span>, <span class="st">"12345"</span>), <span class="co"># mandatory</span> + <span class="kw">start</span> <span class="kw">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="st">"2019-04-15"</span>), <span class="co"># optinal (all others)</span> + <span class="kw">expire</span> <span class="kw">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="fl">NA</span>, <span class="st">"2019-12-31"</span>), + <span class="kw">admin</span> <span class="kw">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="fl">FALSE</span>, <span class="fl">TRUE</span>), + <span class="kw">comment</span> <span class="kw">=</span> <span class="st">"Simple and secure authentification mechanism + for single ‘Shiny’ applications."</span>, + <span class="kw">stringsAsFactors</span> <span class="kw">=</span> <span class="fl">FALSE</span> ) -<span class="kw"><a href="https://rdrr.io/r/base/library.html">library</a></span>(shiny) -<span class="kw"><a href="https://rdrr.io/r/base/library.html">library</a></span>(shinymanager) +<span class="fu"><a href="https://rdrr.io/r/base/library.html">library</a></span>(<span class="no">shiny</span>) +<span class="fu"><a href="https://rdrr.io/r/base/library.html">library</a></span>(<span class="no">shinymanager</span>) -ui <-<span class="st"> </span><span class="kw">fluidPage</span>( - tags<span class="op">$</span><span class="kw">h2</span>(<span class="st">"My secure application"</span>), - <span class="kw">verbatimTextOutput</span>(<span class="st">"auth_output"</span>) +<span class="no">ui</span> <span class="kw"><-</span> <span class="fu"><a href="https://shiny.rstudio.com/reference/shiny/latest/fluidPage.html">fluidPage</a></span>( + <span class="no">tags</span>$<span class="fu"><a href="https://shiny.rstudio.com/reference/shiny/latest/reexports.html">h2</a></span>(<span class="st">"My secure application"</span>), + <span class="fu"><a href="https://shiny.rstudio.com/reference/shiny/latest/textOutput.html">verbatimTextOutput</a></span>(<span class="st">"auth_output"</span>) ) <span class="co"># Wrap your UI with secure_app</span> -ui <-<span class="st"> </span><span class="kw"><a href="reference/secure-app.html">secure_app</a></span>(ui) +<span class="no">ui</span> <span class="kw"><-</span> <span class="fu"><a href="reference/secure-app.html">secure_app</a></span>(<span class="no">ui</span>) -server <-<span class="st"> </span><span class="cf">function</span>(input, output, session) { - +<span class="no">server</span> <span class="kw"><-</span> <span class="kw">function</span>(<span class="no">input</span>, <span class="no">output</span>, <span class="no">session</span>) { + <span class="co"># call the server part</span> <span class="co"># check_credentials returns a function to authenticate users</span> - res_auth <-<span class="st"> </span><span class="kw"><a href="reference/secure-app.html">secure_server</a></span>( - <span class="dt">check_credentials =</span> <span class="kw"><a href="reference/check_credentials.html">check_credentials</a></span>(credentials) + <span class="no">res_auth</span> <span class="kw"><-</span> <span class="fu"><a href="reference/secure-app.html">secure_server</a></span>( + <span class="kw">check_credentials</span> <span class="kw">=</span> <span class="fu"><a href="reference/check_credentials.html">check_credentials</a></span>(<span class="no">credentials</span>) ) - - output<span class="op">$</span>auth_output <-<span class="st"> </span><span class="kw">renderPrint</span>({ - <span class="kw">reactiveValuesToList</span>(res_auth) + + <span class="no">output</span>$<span class="no">auth_output</span> <span class="kw"><-</span> <span class="fu"><a href="https://shiny.rstudio.com/reference/shiny/latest/renderPrint.html">renderPrint</a></span>({ + <span class="fu"><a href="https://shiny.rstudio.com/reference/shiny/latest/reactiveValuesToList.html">reactiveValuesToList</a></span>(<span class="no">res_auth</span>) }) - + <span class="co"># your classic server logic</span> - + } -<span class="kw">shinyApp</span>(ui, server)</code></pre></div> +<span class="fu"><a href="https://shiny.rstudio.com/reference/shiny/latest/shinyApp.html">shinyApp</a></span>(<span class="no">ui</span>, <span class="no">server</span>)</pre></div> <p>Starting page of the application will be :</p> <p><img src="reference/figures/shinymanager-login.png"></p> <p>Once logged, the application will be launched and a button added to navigate between the app and the admin panel (SQL credentials only and if user is authorized to access it), and to logout from the application :</p> @@ -172,28 +191,53 @@ <h3 class="hasAnchor"> <div id="secure-database" class="section level3"> <h3 class="hasAnchor"> <a href="#secure-database" class="anchor"></a>Secure database</h3> -<p>Store your credentials data in SQL database protected with a symmetric AES encryption from <code>openssl</code> :</p> +<p>Store your credentials data in SQL database protected with a symmetric AES encryption from <code>openssl</code>, and password hashing using <code>scrypt</code> :</p> <ul> <li><code><a href="reference/create_db.html">create_db()</a></code></li> </ul> -<div class="sourceCode"><pre class="sourceCode r"><code class="sourceCode r"><span class="co"># Credentials data</span> -credentials <-<span class="st"> </span><span class="kw"><a href="https://rdrr.io/r/base/data.frame.html">data.frame</a></span>( - <span class="dt">user =</span> <span class="kw"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="st">"shiny"</span>, <span class="st">"shinymanager"</span>), - <span class="dt">password =</span> <span class="kw"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="st">"azerty"</span>, <span class="st">"12345"</span>), - <span class="dt">admin =</span> <span class="kw"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="ot">FALSE</span>, <span class="ot">TRUE</span>), - <span class="dt">stringsAsFactors =</span> <span class="ot">FALSE</span> +<div class="sourceCode" id="cb4"><pre class="r"><span class="co"># Init DB using credentials data</span> +<span class="no">credentials</span> <span class="kw"><-</span> <span class="fu"><a href="https://rdrr.io/r/base/data.frame.html">data.frame</a></span>( + <span class="kw">user</span> <span class="kw">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="st">"shiny"</span>, <span class="st">"shinymanager"</span>), + <span class="kw">password</span> <span class="kw">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="st">"azerty"</span>, <span class="st">"12345"</span>), + <span class="co"># password will automatically be hashed</span> + <span class="kw">admin</span> <span class="kw">=</span> <span class="fu"><a href="https://rdrr.io/r/base/c.html">c</a></span>(<span class="fl">FALSE</span>, <span class="fl">TRUE</span>), + <span class="kw">stringsAsFactors</span> <span class="kw">=</span> <span class="fl">FALSE</span> ) <span class="co"># you can use keyring package to set database key</span> -<span class="kw"><a href="https://rdrr.io/r/base/library.html">library</a></span>(keyring) -<span class="kw">key_set</span>(<span class="st">"R-shinymanager-key"</span>, <span class="st">"obiwankenobi"</span>) +<span class="fu"><a href="https://rdrr.io/r/base/library.html">library</a></span>(<span class="no">keyring</span>) +<span class="fu">key_set</span>(<span class="st">"R-shinymanager-key"</span>, <span class="st">"obiwankenobi"</span>) <span class="co"># Init the database</span> -<span class="kw"><a href="reference/create_db.html">create_db</a></span>( - <span class="dt">credentials_data =</span> credentials, - <span class="dt">sqlite_path =</span> <span class="st">"path/to/database.sqlite"</span>, <span class="co"># will be created</span> - <span class="dt">passphrase =</span> <span class="kw">key_get</span>(<span class="st">"R-shinymanager-key"</span>, <span class="st">"obiwankenobi"</span>) -)</code></pre></div> +<span class="fu"><a href="reference/create_db.html">create_db</a></span>( + <span class="kw">credentials_data</span> <span class="kw">=</span> <span class="no">credentials</span>, + <span class="kw">sqlite_path</span> <span class="kw">=</span> <span class="st">"path/to/database.sqlite"</span>, <span class="co"># will be created</span> + <span class="kw">passphrase</span> <span class="kw">=</span> <span class="fu">key_get</span>(<span class="st">"R-shinymanager-key"</span>, <span class="st">"obiwankenobi"</span>) + <span class="co"># passphrase = "passphrase_wihtout_keyring"</span> +) + +<span class="co"># Wrap your UI with secure_app, enabled admin mode or not</span> +<span class="no">ui</span> <span class="kw"><-</span> <span class="fu"><a href="reference/secure-app.html">secure_app</a></span>(<span class="no">ui</span>, <span class="kw">enable_admin</span> <span class="kw">=</span> <span class="fl">TRUE</span>) + + +<span class="no">server</span> <span class="kw"><-</span> <span class="kw">function</span>(<span class="no">input</span>, <span class="no">output</span>, <span class="no">session</span>) { + + <span class="co"># check_credentials directly on sqlite db</span> + <span class="no">res_auth</span> <span class="kw"><-</span> <span class="fu"><a href="reference/secure-app.html">secure_server</a></span>( + <span class="kw">check_credentials</span> <span class="kw">=</span> <span class="fu"><a href="reference/check_credentials.html">check_credentials</a></span>( + <span class="st">"path/to/database.sqlite"</span>, + <span class="kw">passphrase</span> <span class="kw">=</span> <span class="fu">key_get</span>(<span class="st">"R-shinymanager-key"</span>, <span class="st">"obiwankenobi"</span>) + <span class="co"># passphrase = "passphrase_wihtout_keyring"</span> + ) + ) + + <span class="no">output</span>$<span class="no">auth_output</span> <span class="kw"><-</span> <span class="fu"><a href="https://shiny.rstudio.com/reference/shiny/latest/renderPrint.html">renderPrint</a></span>({ + <span class="fu"><a href="https://shiny.rstudio.com/reference/shiny/latest/reactiveValuesToList.html">reactiveValuesToList</a></span>(<span class="no">res_auth</span>) + }) + + <span class="co"># your classic server logic</span> + <span class="no">...</span> +}</pre></div> </div> <div id="admin-mode" class="section level3"> <h3 class="hasAnchor"> @@ -206,6 +250,43 @@ <h3 class="hasAnchor"> </ul> <p><img src="reference/figures/shinymanager-pwd.png"><img src="reference/figures/shinymanager-admin.png"><img src="reference/figures/shinymanager-logs.png"></p> </div> +<div id="shiny-input" class="section level3"> +<h3 class="hasAnchor"> +<a href="#shiny-input" class="anchor"></a>shiny input</h3> +<p>Two inputs are created :</p> +<pre><code>observe({ + print(input$shinymanager_where) + print(input$shinymanager_language) +})</code></pre> +</div> +<div id="customization" class="section level3"> +<h3 class="hasAnchor"> +<a href="#customization" class="anchor"></a>Customization</h3> +<p>You can customize the module (css, image, language, …).</p> +<pre><code>?secure_app +?auth_ui +?set_labels</code></pre> +</div> +<div id="troubleshooting" class="section level3"> +<h3 class="hasAnchor"> +<a href="#troubleshooting" class="anchor"></a>Troubleshooting</h3> +<p>The application works fine without <code>shinymanager</code> but not you have trouble using <code>shinymanager</code>.</p> +<p>There is a <em>lag</em> between your <code>ui</code> and the <code>server</code>, since <code>shinymanger</code> hides the <code>ui</code> part until authentication is successful. It is therefore possible that some of `ui element`` (input) are not defined and are NULL. In this case, you’ll see some warning / error message in your R console.</p> +<p>So we recommend to use in all your reactive/observer functions the <code>req</code> instruction to <strong>validate the inputs</strong>.</p> +<p>One more <em>global and brutal</em> solution can be :</p> +<pre><code>server <- function(input, output, session) { + + auth_out <- secure_server(....) + + observe({ + if(is.null(input$shinymanager_where) || (!is.null(input$shinymanager_where) && input$shinymanager_where %in% "application")){ + + # your server app code + } + }) +}</code></pre> +<p>But it’s better to use <code>req</code> solution. More discussion on <a href="https://github.com/datastorm-open/shinymanager/issues/36" class="uri">https://github.com/datastorm-open/shinymanager/issues/36</a></p> +</div> <div id="http-request" class="section level3"> <h3 class="hasAnchor"> <a href="#http-request" class="anchor"></a>HTTP request</h3> @@ -214,7 +295,7 @@ <h3 class="hasAnchor"> <div id="about-security" class="section level3"> <h3 class="hasAnchor"> <a href="#about-security" class="anchor"></a>About security</h3> -<p>The credentials database is secured with a pass phrase and the <a href="https://github.com/jeroen/openssl"><code>openssl</code></a> package. If you have concern about method we use, please fill an <a href="https://github.com/datastorm-open/shinymanager/issues">issue</a>.</p> +<p>The credentials database is secured with a pass phrase and the <a href="https://github.com/jeroen/openssl"><code>openssl</code></a> package. Hashed password using <a href="https://github.com/rstudio/rscrypt"><code>scrypt</code></a>. If you have concern about method we use, please fill an <a href="https://github.com/datastorm-open/shinymanager/issues">issue</a>.</p> </div> <div id="related-work" class="section level3"> <h3 class="hasAnchor"> @@ -230,7 +311,7 @@ <h2>Links</h2> <ul class="list-unstyled"> <li>Download from CRAN at <br><a href="https://cloud.r-project.org/package=shinymanager">https://cloud.r-project.org/package=shinymanager</a> </li> -<li>Browse source code at <br><a href="https://github.com/datastorm-open/shinymanager">https://github.com/datastorm-open/shinymanager</a> +<li>Browse source code at <br><a href="https://github.com/datastorm-open/shinymanager/">https://github.com/datastorm-open/shinymanager/</a> </li> </ul> </div> @@ -267,7 +348,7 @@ <h2>Dev status</h2> </div> <div class="pkgdown"> - <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.9000.</p> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p> </div> </footer> diff --git a/docs/news/index.html b/docs/news/index.html index ab84b68..714110d 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -8,23 +8,29 @@ <title>Changelog • shinymanager</title> + <!-- jquery --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <!-- Bootstrap --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" /> -<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous" /> + +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script> + +<!-- bootstrap-toc --> +<link rel="stylesheet" href="../bootstrap-toc.css"> +<script src="../bootstrap-toc.js"></script> <!-- Font Awesome icons --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/all.min.css" integrity="sha256-PbSmjxuVAzJ6FPvNYsrXygfGhNJYyZ2GktDbkMBqQZg=" crossorigin="anonymous" /> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/v4-shims.min.css" integrity="sha256-A6jcAdwFD48VMjlI3GDxUd+eCQa7/KWy6G9oe/ovaPA=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" /> <!-- clipboard.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script> <!-- headroom.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> <!-- pkgdown --> <link href="../pkgdown.css" rel="stylesheet"> @@ -32,10 +38,12 @@ + <meta property="og:title" content="Changelog" /> + <!-- mathjax --> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script> @@ -49,7 +57,7 @@ </head> - <body> + <body data-spy="scroll" data-target="#toc"> <div class="container template-news"> <header> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> @@ -63,7 +71,7 @@ </button> <span class="navbar-brand"> <a class="navbar-link" href="../index.html">shinymanager</a> - <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.200</span> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.300</span> </span> </div> @@ -94,10 +102,9 @@ <a href="../news/index.html">Changelog</a> </li> </ul> - <ul class="nav navbar-nav navbar-right"> <li> - <a href="https://github.com/datastorm-open/shinymanager"> + <a href="https://github.com/datastorm-open/shinymanager/"> <span class="fab fa fab fa-github fa-lg"></span> </a> @@ -115,13 +122,32 @@ <div class="row"> <div class="col-md-9 contents"> <div class="page-header"> - <h1>Changelog <small></small></h1> + <h1 data-toc-skip>Changelog <small></small></h1> <small>Source: <a href='https://github.com/datastorm-open/shinymanager/blob/master/NEWS.md'><code>NEWS.md</code></a></small> </div> - <div id="shinymanager-1-0-200" class="section level1"> -<h1 class="page-header"> -<a href="#shinymanager-1-0-200" class="anchor"></a>shinymanager 1.0.200<small> 2020-02-28 </small> + <div id="shinymanager-10300" class="section level1"> +<h1 class="page-header" data-toc-text="1.0.300"> +<a href="#shinymanager-10300" class="anchor"></a>shinymanager 1.0.300<small> Unreleased </small> +</h1> +<ul> +<li>Add <code>autofocus</code> on username input.</li> +<li>Fix some (strange) bug with <code>input$shinymanager_where</code> +</li> +<li>Fix <code>inputs_list</code> with some shiny version</li> +<li> +<code><a href="../reference/module-authentication.html">auth_ui()</a></code> now accept a <code>choose_language</code> arguments.</li> +<li>Rename <code>br</code> language into <code>pt-BR</code> (iso code)</li> +<li>add user info in downloaded log file</li> +<li>add <code><a href="../reference/custom-labels.html">set_labels()</a></code> for customize labels</li> +<li>Fix simultaneous admin session</li> +<li>(<a href='https://github.com/datastorm-open/shinymanager/issues/37'>#37</a>) hashing password using <code>scrypt</code> +</li> +</ul> +</div> + <div id="shinymanager-10200" class="section level1"> +<h1 class="page-header" data-toc-text="1.0.200"> +<a href="#shinymanager-10200" class="anchor"></a>shinymanager 1.0.200<small> 2020-02-28 </small> </h1> <ul> <li>Can configure shiny input for editing user in <code><a href="../reference/secure-app.html">secure_app()</a></code> with new <code>inputs_list</code>.</li> @@ -134,9 +160,9 @@ <h1 class="page-header"> <li>(<a href='https://github.com/datastorm-open/shinymanager/issues/17'>#17</a>) Add support to Brazilian Portuguese. Thanks to <a href='https://github.com/erikson84'>@erikson84</a></li> </ul> </div> - <div id="shinymanager-1-0-100" class="section level1"> -<h1 class="page-header"> -<a href="#shinymanager-1-0-100" class="anchor"></a>shinymanager 1.0.100<small> 2019-12-11 </small> + <div id="shinymanager-10100" class="section level1"> +<h1 class="page-header" data-toc-text="1.0.100"> +<a href="#shinymanager-10100" class="anchor"></a>shinymanager 1.0.100<small> 2019-12-11 </small> </h1> <ul> <li>Fix bug on timeout.</li> @@ -147,9 +173,9 @@ <h1 class="page-header"> <code>admin mode</code> : add possibility to export encrypt SQL</li> </ul> </div> - <div id="shinymanager-1-0" class="section level1"> -<h1 class="page-header"> -<a href="#shinymanager-1-0" class="anchor"></a>shinymanager 1.0<small> 2019-06-19 </small> + <div id="shinymanager-10" class="section level1"> +<h1 class="page-header" data-toc-text="1.0"> +<a href="#shinymanager-10" class="anchor"></a>shinymanager 1.0<small> 2019-06-19 </small> </h1> <ul> <li>Now on CRAN</li> @@ -158,14 +184,9 @@ <h1 class="page-header"> </div> <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar"> - <div id="tocnav"> - <h2>Contents</h2> - <ul class="nav nav-pills nav-stacked"> - <li><a href="#shinymanager-1-0-200">1.0.200</a></li> - <li><a href="#shinymanager-1-0-100">1.0.100</a></li> - <li><a href="#shinymanager-1-0">1.0</a></li> - </ul> - </div> + <nav id="toc" data-toggle="toc" class="sticky-top"> + <h2 data-toc-skip>Contents</h2> + </nav> </div> </div> @@ -177,7 +198,7 @@ <h2>Contents</h2> </div> <div class="pkgdown"> - <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.9000.</p> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p> </div> </footer> diff --git a/docs/pkgdown.css b/docs/pkgdown.css index 3cd0d61..c01e592 100644 --- a/docs/pkgdown.css +++ b/docs/pkgdown.css @@ -17,6 +17,10 @@ html, body { height: 100%; } +body { + position: relative; +} + body > .container { display: flex; height: 100%; @@ -67,6 +71,10 @@ summary { margin-top: calc(-60px + 1em); } +dd { + margin-left: 3em; +} + /* Section anchors ---------------------------------*/ a.anchor { @@ -168,6 +176,61 @@ a.anchor { margin-bottom: 0.5em; } +/* bootstrap-toc tweaks ------------------------------------------------------*/ + +/* All levels of nav */ + +nav[data-toggle='toc'] .nav > li > a { + padding: 4px 20px 4px 6px; + font-size: 1.5rem; + font-weight: 400; + color: inherit; +} + +nav[data-toggle='toc'] .nav > li > a:hover, +nav[data-toggle='toc'] .nav > li > a:focus { + padding-left: 5px; + color: inherit; + border-left: 1px solid #878787; +} + +nav[data-toggle='toc'] .nav > .active > a, +nav[data-toggle='toc'] .nav > .active:hover > a, +nav[data-toggle='toc'] .nav > .active:focus > a { + padding-left: 5px; + font-size: 1.5rem; + font-weight: 400; + color: inherit; + border-left: 2px solid #878787; +} + +/* Nav: second level (shown on .active) */ + +nav[data-toggle='toc'] .nav .nav { + display: none; /* Hide by default, but at >768px, show it */ + padding-bottom: 10px; +} + +nav[data-toggle='toc'] .nav .nav > li > a { + padding-left: 16px; + font-size: 1.35rem; +} + +nav[data-toggle='toc'] .nav .nav > li > a:hover, +nav[data-toggle='toc'] .nav .nav > li > a:focus { + padding-left: 15px; +} + +nav[data-toggle='toc'] .nav .nav > .active > a, +nav[data-toggle='toc'] .nav .nav > .active:hover > a, +nav[data-toggle='toc'] .nav .nav > .active:focus > a { + padding-left: 15px; + font-weight: 500; + font-size: 1.35rem; +} + +/* orcid ------------------------------------------------------------------- */ + .orcid { font-size: 16px; color: #A6CE39; diff --git a/docs/pkgdown.js b/docs/pkgdown.js index 087a762..7e7048f 100644 --- a/docs/pkgdown.js +++ b/docs/pkgdown.js @@ -9,11 +9,6 @@ $('body').css('padding-top', $('.navbar').height() + 10); }); - $('body').scrollspy({ - target: '#sidebar', - offset: 60 - }); - $('[data-toggle="tooltip"]').tooltip(); var cur_path = paths(location.pathname); diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index 651e60d..26a61a5 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -1,6 +1,7 @@ -pandoc: 1.19.2.1 -pkgdown: 1.4.1.9000 -pkgdown_sha: 5e873fd9e478dddd784c31d8c8f994fd4b341c2a +pandoc: 2.7.3 +pkgdown: 1.5.1 +pkgdown_sha: ~ articles: SQLite_Admin: SQLite_Admin.html +last_built: 2020-08-20T15:16Z diff --git a/docs/reference/check_credentials.html b/docs/reference/check_credentials.html index 6434a40..87ede86 100644 --- a/docs/reference/check_credentials.html +++ b/docs/reference/check_credentials.html @@ -8,23 +8,29 @@ <title>Check credentials — check_credentials • shinymanager</title> + <!-- jquery --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <!-- Bootstrap --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" /> -<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous" /> + +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script> + +<!-- bootstrap-toc --> +<link rel="stylesheet" href="../bootstrap-toc.css"> +<script src="../bootstrap-toc.js"></script> <!-- Font Awesome icons --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/all.min.css" integrity="sha256-PbSmjxuVAzJ6FPvNYsrXygfGhNJYyZ2GktDbkMBqQZg=" crossorigin="anonymous" /> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/v4-shims.min.css" integrity="sha256-A6jcAdwFD48VMjlI3GDxUd+eCQa7/KWy6G9oe/ovaPA=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" /> <!-- clipboard.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script> <!-- headroom.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> <!-- pkgdown --> <link href="../pkgdown.css" rel="stylesheet"> @@ -32,10 +38,10 @@ -<meta property="og:title" content="Check credentials — check_credentials" /> +<meta property="og:title" content="Check credentials — check_credentials" /> <meta property="og:description" content="Check credentials" /> -<meta name="twitter:card" content="summary" /> + @@ -52,7 +58,7 @@ </head> - <body> + <body data-spy="scroll" data-target="#toc"> <div class="container template-reference-topic"> <header> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> @@ -66,7 +72,7 @@ </button> <span class="navbar-brand"> <a class="navbar-link" href="../index.html">shinymanager</a> - <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.200</span> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.300</span> </span> </div> @@ -97,10 +103,9 @@ <a href="../news/index.html">Changelog</a> </li> </ul> - <ul class="nav navbar-nav navbar-right"> <li> - <a href="https://github.com/datastorm-open/shinymanager"> + <a href="https://github.com/datastorm-open/shinymanager/"> <span class="fab fa fab fa-github fa-lg"></span> </a> @@ -124,13 +129,11 @@ <h1>Check credentials</h1> </div> <div class="ref-description"> - <p>Check credentials</p> - </div> <pre class="usage"><span class='fu'>check_credentials</span>(<span class='no'>db</span>, <span class='kw'>passphrase</span> <span class='kw'>=</span> <span class='kw'>NULL</span>)</pre> - + <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2> <table class="ref-arguments"> <colgroup><col class="name" /><col class="desc" /></colgroup> @@ -143,7 +146,7 @@ <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arg <td><p>Passphrase to decrypt the SQLite database.</p></td> </tr> </table> - + <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2> <p>Return a <code>function</code> with two arguments: <code>user</code> and <code>password</code> @@ -154,7 +157,6 @@ <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2> <li><p><strong>user_info</strong> : the line in <code>db</code> corresponding to the user.</p></li> </ul> - <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2> <p>The credentials <code>data.frame</code> can have the following columns:</p><ul> @@ -170,7 +172,6 @@ <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details <li><p><strong>additional columns</strong> : add others columns to retrieve the values server-side after authentication</p></li> </ul> - <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2> <pre class="examples"><div class='input'><span class='co'># data.frame with credentials info</span> @@ -180,6 +181,52 @@ <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examp <span class='kw'>stringsAsFactors</span> <span class='kw'>=</span> <span class='fl'>FALSE</span> ) +<span class='co'># check a user</span> +<span class='fu'>check_credentials</span>(<span class='no'>credentials</span>)(<span class='st'>"fanny"</span>, <span class='st'>"azerty"</span>)</div><div class='output co'>#> $result +#> [1] TRUE +#> +#> $expired +#> [1] FALSE +#> +#> $authorized +#> [1] TRUE +#> +#> $user_info +#> user +#> 1 fanny +#> </div><div class='input'><span class='fu'>check_credentials</span>(<span class='no'>credentials</span>)(<span class='st'>"fanny"</span>, <span class='st'>"azert"</span>)</div><div class='output co'>#> $result +#> [1] FALSE +#> +#> $expired +#> [1] FALSE +#> +#> $authorized +#> [1] TRUE +#> +#> $user_info +#> user +#> 1 fanny +#> </div><div class='input'><span class='fu'>check_credentials</span>(<span class='no'>credentials</span>)(<span class='st'>"fannyyy"</span>, <span class='st'>"azerty"</span>)</div><div class='output co'>#> $result +#> [1] FALSE +#> +#> $expired +#> [1] FALSE +#> +#> $authorized +#> [1] FALSE +#> +#> $user_info +#> NULL +#> </div><div class='input'> +<span class='co'># data.frame with credentials info</span> +<span class='co'># using hashed password with scrypt</span> +<span class='no'>credentials</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/data.frame.html'>data.frame</a></span>( + <span class='kw'>user</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"fanny"</span>, <span class='st'>"victor"</span>), + <span class='kw'>password</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='kw pkg'>scrypt</span><span class='kw ns'>::</span><span class='fu'><a href='https://rdrr.io/pkg/scrypt/man/hashPassword.html'>hashPassword</a></span>(<span class='st'>"azerty"</span>), <span class='kw pkg'>scrypt</span><span class='kw ns'>::</span><span class='fu'><a href='https://rdrr.io/pkg/scrypt/man/hashPassword.html'>hashPassword</a></span>(<span class='st'>"12345"</span>)), + <span class='kw'>is_hashed_password</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, + <span class='kw'>stringsAsFactors</span> <span class='kw'>=</span> <span class='fl'>FALSE</span> +) + <span class='co'># check a user</span> <span class='fu'>check_credentials</span>(<span class='no'>credentials</span>)(<span class='st'>"fanny"</span>, <span class='st'>"azerty"</span>)</div><div class='output co'>#> $result #> [1] TRUE @@ -226,17 +273,9 @@ <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examp }</div></pre> </div> <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar"> - <h2>Contents</h2> - <ul class="nav nav-pills nav-stacked"> - <li><a href="#arguments">Arguments</a></li> - - <li><a href="#value">Value</a></li> - - <li><a href="#details">Details</a></li> - - <li><a href="#examples">Examples</a></li> - </ul> - + <nav id="toc" data-toggle="toc" class="sticky-top"> + <h2 data-toc-skip>Contents</h2> + </nav> </div> </div> @@ -247,7 +286,7 @@ <h2>Contents</h2> </div> <div class="pkgdown"> - <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.9000.</p> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p> </div> </footer> diff --git a/docs/reference/create_db.html b/docs/reference/create_db.html index 9d0932d..2995ad6 100644 --- a/docs/reference/create_db.html +++ b/docs/reference/create_db.html @@ -8,23 +8,29 @@ <title>Create credentials database — create_db • shinymanager</title> + <!-- jquery --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <!-- Bootstrap --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" /> -<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous" /> + +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script> + +<!-- bootstrap-toc --> +<link rel="stylesheet" href="../bootstrap-toc.css"> +<script src="../bootstrap-toc.js"></script> <!-- Font Awesome icons --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/all.min.css" integrity="sha256-PbSmjxuVAzJ6FPvNYsrXygfGhNJYyZ2GktDbkMBqQZg=" crossorigin="anonymous" /> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/v4-shims.min.css" integrity="sha256-A6jcAdwFD48VMjlI3GDxUd+eCQa7/KWy6G9oe/ovaPA=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" /> <!-- clipboard.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script> <!-- headroom.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> <!-- pkgdown --> <link href="../pkgdown.css" rel="stylesheet"> @@ -32,10 +38,10 @@ -<meta property="og:title" content="Create credentials database — create_db" /> +<meta property="og:title" content="Create credentials database — create_db" /> <meta property="og:description" content="Create a SQLite database with credentials data protected by a password." /> -<meta name="twitter:card" content="summary" /> + @@ -52,7 +58,7 @@ </head> - <body> + <body data-spy="scroll" data-target="#toc"> <div class="container template-reference-topic"> <header> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> @@ -66,7 +72,7 @@ </button> <span class="navbar-brand"> <a class="navbar-link" href="../index.html">shinymanager</a> - <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.200</span> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.300</span> </span> </div> @@ -97,10 +103,9 @@ <a href="../news/index.html">Changelog</a> </li> </ul> - <ul class="nav navbar-nav navbar-right"> <li> - <a href="https://github.com/datastorm-open/shinymanager"> + <a href="https://github.com/datastorm-open/shinymanager/"> <span class="fab fa fab fa-github fa-lg"></span> </a> @@ -124,13 +129,11 @@ <h1>Create credentials database</h1> </div> <div class="ref-description"> - <p>Create a SQLite database with credentials data protected by a password.</p> - </div> <pre class="usage"><span class='fu'>create_db</span>(<span class='no'>credentials_data</span>, <span class='no'>sqlite_path</span>, <span class='kw'>passphrase</span> <span class='kw'>=</span> <span class='kw'>NULL</span>)</pre> - + <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2> <table class="ref-arguments"> <colgroup><col class="name" /><col class="desc" /></colgroup> @@ -147,7 +150,7 @@ <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arg <td><p>A password to protect the data inside the database.</p></td> </tr> </table> - + <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2> <p>The credentials <code>data.frame</code> can have the following columns:</p><ul> @@ -163,11 +166,9 @@ <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details <li><p><strong>additional columns</strong> : add others columns to retrieve the values server-side after authentication</p></li> </ul> - <h2 class="hasAnchor" id="see-also"><a class="anchor" href="#see-also"></a>See also</h2> <div class='dont-index'><p><code><a href='db-crypted.html'>read_db_decrypt</a></code></p></div> - <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2> <pre class="examples"><div class='input'><span class='kw'>if</span> (<span class='fl'>FALSE</span>) { @@ -175,7 +176,7 @@ <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examp <span class='co'># Credentials data</span> <span class='no'>credentials</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/data.frame.html'>data.frame</a></span>( <span class='kw'>user</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"shiny"</span>, <span class='st'>"shinymanager"</span>), - <span class='kw'>password</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"azerty"</span>, <span class='st'>"12345"</span>), + <span class='kw'>password</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"azerty"</span>, <span class='st'>"12345"</span>), <span class='co'># password will automatically be hashed</span> <span class='kw'>stringsAsFactors</span> <span class='kw'>=</span> <span class='fl'>FALSE</span> ) @@ -193,17 +194,9 @@ <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examp }</div></pre> </div> <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar"> - <h2>Contents</h2> - <ul class="nav nav-pills nav-stacked"> - <li><a href="#arguments">Arguments</a></li> - - <li><a href="#details">Details</a></li> - - <li><a href="#see-also">See also</a></li> - - <li><a href="#examples">Examples</a></li> - </ul> - + <nav id="toc" data-toggle="toc" class="sticky-top"> + <h2 data-toc-skip>Contents</h2> + </nav> </div> </div> @@ -214,7 +207,7 @@ <h2>Contents</h2> </div> <div class="pkgdown"> - <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.9000.</p> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p> </div> </footer> diff --git a/docs/reference/db-crypted.html b/docs/reference/db-crypted.html index cb4ca85..367813b 100644 --- a/docs/reference/db-crypted.html +++ b/docs/reference/db-crypted.html @@ -8,23 +8,29 @@ <title>Read / Write crypted table from / to a SQLite database — db-crypted • shinymanager</title> + <!-- jquery --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <!-- Bootstrap --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" /> -<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous" /> + +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script> + +<!-- bootstrap-toc --> +<link rel="stylesheet" href="../bootstrap-toc.css"> +<script src="../bootstrap-toc.js"></script> <!-- Font Awesome icons --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/all.min.css" integrity="sha256-PbSmjxuVAzJ6FPvNYsrXygfGhNJYyZ2GktDbkMBqQZg=" crossorigin="anonymous" /> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/v4-shims.min.css" integrity="sha256-A6jcAdwFD48VMjlI3GDxUd+eCQa7/KWy6G9oe/ovaPA=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" /> <!-- clipboard.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script> <!-- headroom.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> <!-- pkgdown --> <link href="../pkgdown.css" rel="stylesheet"> @@ -32,10 +38,10 @@ -<meta property="og:title" content="Read / Write crypted table from / to a SQLite database — db-crypted" /> +<meta property="og:title" content="Read / Write crypted table from / to a SQLite database — db-crypted" /> <meta property="og:description" content="Read / Write crypted table from / to a SQLite database" /> -<meta name="twitter:card" content="summary" /> + @@ -52,7 +58,7 @@ </head> - <body> + <body data-spy="scroll" data-target="#toc"> <div class="container template-reference-topic"> <header> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> @@ -66,7 +72,7 @@ </button> <span class="navbar-brand"> <a class="navbar-link" href="../index.html">shinymanager</a> - <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.200</span> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.300</span> </span> </div> @@ -97,10 +103,9 @@ <a href="../news/index.html">Changelog</a> </li> </ul> - <ul class="nav navbar-nav navbar-right"> <li> - <a href="https://github.com/datastorm-open/shinymanager"> + <a href="https://github.com/datastorm-open/shinymanager/"> <span class="fab fa fab fa-github fa-lg"></span> </a> @@ -124,15 +129,13 @@ <h1>Read / Write crypted table from / to a SQLite database</h1> </div> <div class="ref-description"> - <p>Read / Write crypted table from / to a SQLite database</p> - </div> <pre class="usage"><span class='fu'>write_db_encrypt</span>(<span class='no'>conn</span>, <span class='no'>value</span>, <span class='kw'>name</span> <span class='kw'>=</span> <span class='st'>"credentials"</span>, <span class='kw'>passphrase</span> <span class='kw'>=</span> <span class='kw'>NULL</span>) <span class='fu'>read_db_decrypt</span>(<span class='no'>conn</span>, <span class='kw'>name</span> <span class='kw'>=</span> <span class='st'>"credentials"</span>, <span class='kw'>passphrase</span> <span class='kw'>=</span> <span class='kw'>NULL</span>)</pre> - + <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2> <table class="ref-arguments"> <colgroup><col class="name" /><col class="desc" /></colgroup> @@ -153,19 +156,17 @@ <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arg <td><p>A secret passphrase to crypt the table inside the database</p></td> </tr> </table> - + <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2> <p>a <code>data.frame</code> for <code>read_db_decrypt</code>.</p> - <h2 class="hasAnchor" id="see-also"><a class="anchor" href="#see-also"></a>See also</h2> <div class='dont-index'><p><code><a href='create_db.html'>create_db</a></code></p></div> - <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2> <pre class="examples"><div class='input'><span class='co'># connect to database</span> -<span class='no'>conn</span> <span class='kw'><-</span> <span class='kw pkg'>DBI</span><span class='kw ns'>::</span><span class='fu'><a href='https://dbi.r-dbi.org/reference/dbConnect.html'>dbConnect</a></span>(<span class='kw pkg'>RSQLite</span><span class='kw ns'>::</span><span class='fu'><a href='https://rdrr.io/pkg/RSQLite/man/SQLite.html'>SQLite</a></span>(), <span class='kw'>dbname</span> <span class='kw'>=</span> <span class='st'>":memory:"</span>) +<span class='no'>conn</span> <span class='kw'><-</span> <span class='kw pkg'>DBI</span><span class='kw ns'>::</span><span class='fu'><a href='https://dbi.r-dbi.org/reference/dbConnect.html'>dbConnect</a></span>(<span class='kw pkg'>RSQLite</span><span class='kw ns'>::</span><span class='fu'><a href='https://rsqlite.r-dbi.org/reference/SQLite.html'>SQLite</a></span>(), <span class='kw'>dbname</span> <span class='kw'>=</span> <span class='st'>":memory:"</span>) <span class='co'># write to database</span> <span class='fu'>write_db_encrypt</span>(<span class='no'>conn</span>, <span class='kw'>value</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/utils/head.html'>head</a></span>(<span class='no'>iris</span>), <span class='kw'>name</span> <span class='kw'>=</span> <span class='st'>"iris"</span>, <span class='kw'>passphrase</span> <span class='kw'>=</span> <span class='st'>"supersecret"</span>) @@ -188,7 +189,7 @@ <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examp #> 1 blob[624 B] blob[16 B]</div><div class='input'> <span class='co'># add some users to database</span> <span class='kw'>if</span> (<span class='fl'>FALSE</span>) { -<span class='no'>conn</span> <span class='kw'><-</span> <span class='kw pkg'>DBI</span><span class='kw ns'>::</span><span class='fu'><a href='https://dbi.r-dbi.org/reference/dbConnect.html'>dbConnect</a></span>(<span class='kw pkg'>RSQLite</span><span class='kw ns'>::</span><span class='fu'><a href='https://rdrr.io/pkg/RSQLite/man/SQLite.html'>SQLite</a></span>(), <span class='kw'>dbname</span> <span class='kw'>=</span> <span class='st'>"path/to/database.sqlite"</span>) +<span class='no'>conn</span> <span class='kw'><-</span> <span class='kw pkg'>DBI</span><span class='kw ns'>::</span><span class='fu'><a href='https://dbi.r-dbi.org/reference/dbConnect.html'>dbConnect</a></span>(<span class='kw pkg'>RSQLite</span><span class='kw ns'>::</span><span class='fu'><a href='https://rsqlite.r-dbi.org/reference/SQLite.html'>SQLite</a></span>(), <span class='kw'>dbname</span> <span class='kw'>=</span> <span class='st'>"path/to/database.sqlite"</span>) <span class='co'># update "credentials" table</span> <span class='no'>current_user</span> <span class='kw'><-</span> <span class='fu'>read_db_decrypt</span>( @@ -230,17 +231,9 @@ <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examp }</div></pre> </div> <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar"> - <h2>Contents</h2> - <ul class="nav nav-pills nav-stacked"> - <li><a href="#arguments">Arguments</a></li> - - <li><a href="#value">Value</a></li> - - <li><a href="#see-also">See also</a></li> - - <li><a href="#examples">Examples</a></li> - </ul> - + <nav id="toc" data-toggle="toc" class="sticky-top"> + <h2 data-toc-skip>Contents</h2> + </nav> </div> </div> @@ -251,7 +244,7 @@ <h2>Contents</h2> </div> <div class="pkgdown"> - <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.9000.</p> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p> </div> </footer> diff --git a/docs/reference/fab_button.html b/docs/reference/fab_button.html index fd95dfc..2b562ff 100644 --- a/docs/reference/fab_button.html +++ b/docs/reference/fab_button.html @@ -8,23 +8,29 @@ <title>Create a FAB button — fab_button • shinymanager</title> + <!-- jquery --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <!-- Bootstrap --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" /> -<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous" /> + +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script> + +<!-- bootstrap-toc --> +<link rel="stylesheet" href="../bootstrap-toc.css"> +<script src="../bootstrap-toc.js"></script> <!-- Font Awesome icons --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/all.min.css" integrity="sha256-PbSmjxuVAzJ6FPvNYsrXygfGhNJYyZ2GktDbkMBqQZg=" crossorigin="anonymous" /> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/v4-shims.min.css" integrity="sha256-A6jcAdwFD48VMjlI3GDxUd+eCQa7/KWy6G9oe/ovaPA=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" /> <!-- clipboard.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script> <!-- headroom.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> <!-- pkgdown --> <link href="../pkgdown.css" rel="stylesheet"> @@ -32,10 +38,10 @@ -<meta property="og:title" content="Create a FAB button — fab_button" /> +<meta property="og:title" content="Create a FAB button — fab_button" /> <meta property="og:description" content="Create a fixed button in bottom right corner with additional button(s) in it" /> -<meta name="twitter:card" content="summary" /> + @@ -52,7 +58,7 @@ </head> - <body> + <body data-spy="scroll" data-target="#toc"> <div class="container template-reference-topic"> <header> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> @@ -66,7 +72,7 @@ </button> <span class="navbar-brand"> <a class="navbar-link" href="../index.html">shinymanager</a> - <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.200</span> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.300</span> </span> </div> @@ -97,10 +103,9 @@ <a href="../news/index.html">Changelog</a> </li> </ul> - <ul class="nav navbar-nav navbar-right"> <li> - <a href="https://github.com/datastorm-open/shinymanager"> + <a href="https://github.com/datastorm-open/shinymanager/"> <span class="fab fa fab fa-github fa-lg"></span> </a> @@ -124,13 +129,11 @@ <h1>Create a FAB button</h1> </div> <div class="ref-description"> - <p>Create a fixed button in bottom right corner with additional button(s) in it</p> - </div> <pre class="usage"><span class='fu'>fab_button</span>(<span class='no'>...</span>, <span class='kw'>inputId</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>icon</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>status</span> <span class='kw'>=</span> <span class='st'>"default"</span>)</pre> - + <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2> <table class="ref-arguments"> <colgroup><col class="name" /><col class="desc" /></colgroup> @@ -151,38 +154,38 @@ <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arg <td><p>Bootstra^p status to apply to the main button.</p></td> </tr> </table> - + <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2> <pre class="examples"><div class='input'><span class='kw'>if</span> (<span class='fu'><a href='https://rdrr.io/r/base/interactive.html'>interactive</a></span>()) { <span class='fu'><a href='https://rdrr.io/r/base/library.html'>library</a></span>(<span class='no'>shiny</span>) <span class='fu'><a href='https://rdrr.io/r/base/library.html'>library</a></span>(<span class='no'>shinymanager</span>) - <span class='no'>ui</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/fluidPage.html'>fluidPage</a></span>( + <span class='no'>ui</span> <span class='kw'><-</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/fluidPage.html'>fluidPage</a></span>( - <span class='no'>tags</span>$<span class='fu'><a href='https://rdrr.io/pkg/shiny/man/builder.html'>h1</a></span>(<span class='st'>"FAB button"</span>), + <span class='no'>tags</span>$<span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reexports.html'>h1</a></span>(<span class='st'>"FAB button"</span>), - <span class='no'>tags</span>$<span class='fu'><a href='https://rdrr.io/pkg/shiny/man/builder.html'>p</a></span>(<span class='st'>"FAB button:"</span>), - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/textOutput.html'>verbatimTextOutput</a></span>(<span class='kw'>outputId</span> <span class='kw'>=</span> <span class='st'>"res_fab"</span>), + <span class='no'>tags</span>$<span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reexports.html'>p</a></span>(<span class='st'>"FAB button:"</span>), + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/textOutput.html'>verbatimTextOutput</a></span>(<span class='kw'>outputId</span> <span class='kw'>=</span> <span class='st'>"res_fab"</span>), - <span class='no'>tags</span>$<span class='fu'><a href='https://rdrr.io/pkg/shiny/man/builder.html'>p</a></span>(<span class='st'>"Logout button:"</span>), - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/textOutput.html'>verbatimTextOutput</a></span>(<span class='kw'>outputId</span> <span class='kw'>=</span> <span class='st'>"res_logout"</span>), + <span class='no'>tags</span>$<span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reexports.html'>p</a></span>(<span class='st'>"Logout button:"</span>), + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/textOutput.html'>verbatimTextOutput</a></span>(<span class='kw'>outputId</span> <span class='kw'>=</span> <span class='st'>"res_logout"</span>), - <span class='no'>tags</span>$<span class='fu'><a href='https://rdrr.io/pkg/shiny/man/builder.html'>p</a></span>(<span class='st'>"Info button:"</span>), - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/textOutput.html'>verbatimTextOutput</a></span>(<span class='kw'>outputId</span> <span class='kw'>=</span> <span class='st'>"res_info"</span>), + <span class='no'>tags</span>$<span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reexports.html'>p</a></span>(<span class='st'>"Info button:"</span>), + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/textOutput.html'>verbatimTextOutput</a></span>(<span class='kw'>outputId</span> <span class='kw'>=</span> <span class='st'>"res_info"</span>), <span class='fu'>fab_button</span>( - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/actionButton.html'>actionButton</a></span>( + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/actionButton.html'>actionButton</a></span>( <span class='kw'>inputId</span> <span class='kw'>=</span> <span class='st'>"logout"</span>, <span class='kw'>label</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>tooltip</span> <span class='kw'>=</span> <span class='st'>"Logout"</span>, - <span class='kw'>icon</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/icon.html'>icon</a></span>(<span class='st'>"sign-out"</span>) + <span class='kw'>icon</span> <span class='kw'>=</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/icon.html'>icon</a></span>(<span class='st'>"sign-out"</span>) ), - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/actionButton.html'>actionButton</a></span>( + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/actionButton.html'>actionButton</a></span>( <span class='kw'>inputId</span> <span class='kw'>=</span> <span class='st'>"info"</span>, <span class='kw'>label</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>tooltip</span> <span class='kw'>=</span> <span class='st'>"Information"</span>, - <span class='kw'>icon</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/icon.html'>icon</a></span>(<span class='st'>"info"</span>) + <span class='kw'>icon</span> <span class='kw'>=</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/icon.html'>icon</a></span>(<span class='st'>"info"</span>) ), <span class='kw'>inputId</span> <span class='kw'>=</span> <span class='st'>"fab"</span> ) @@ -191,31 +194,27 @@ <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examp <span class='no'>server</span> <span class='kw'><-</span> <span class='kw'>function</span>(<span class='no'>input</span>, <span class='no'>output</span>, <span class='no'>session</span>) { - <span class='no'>output</span>$<span class='no'>res_fab</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/renderPrint.html'>renderPrint</a></span>({ + <span class='no'>output</span>$<span class='no'>res_fab</span> <span class='kw'><-</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/renderPrint.html'>renderPrint</a></span>({ <span class='no'>input</span>$<span class='no'>fab</span> }) - <span class='no'>output</span>$<span class='no'>res_logout</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/renderPrint.html'>renderPrint</a></span>({ + <span class='no'>output</span>$<span class='no'>res_logout</span> <span class='kw'><-</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/renderPrint.html'>renderPrint</a></span>({ <span class='no'>input</span>$<span class='no'>logout</span> }) - <span class='no'>output</span>$<span class='no'>res_info</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/renderPrint.html'>renderPrint</a></span>({ + <span class='no'>output</span>$<span class='no'>res_info</span> <span class='kw'><-</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/renderPrint.html'>renderPrint</a></span>({ <span class='no'>input</span>$<span class='no'>info</span> }) } - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/shinyApp.html'>shinyApp</a></span>(<span class='no'>ui</span>, <span class='no'>server</span>) + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/shinyApp.html'>shinyApp</a></span>(<span class='no'>ui</span>, <span class='no'>server</span>) }</div></pre> </div> <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar"> - <h2>Contents</h2> - <ul class="nav nav-pills nav-stacked"> - <li><a href="#arguments">Arguments</a></li> - - <li><a href="#examples">Examples</a></li> - </ul> - + <nav id="toc" data-toggle="toc" class="sticky-top"> + <h2 data-toc-skip>Contents</h2> + </nav> </div> </div> @@ -226,7 +225,7 @@ <h2>Contents</h2> </div> <div class="pkgdown"> - <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.9000.</p> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p> </div> </footer> diff --git a/docs/reference/generate_pwd.html b/docs/reference/generate_pwd.html index 6640182..17ffefd 100644 --- a/docs/reference/generate_pwd.html +++ b/docs/reference/generate_pwd.html @@ -8,23 +8,29 @@ <title>Simple password generation — generate_pwd • shinymanager</title> + <!-- jquery --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <!-- Bootstrap --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" /> -<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous" /> + +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script> + +<!-- bootstrap-toc --> +<link rel="stylesheet" href="../bootstrap-toc.css"> +<script src="../bootstrap-toc.js"></script> <!-- Font Awesome icons --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/all.min.css" integrity="sha256-PbSmjxuVAzJ6FPvNYsrXygfGhNJYyZ2GktDbkMBqQZg=" crossorigin="anonymous" /> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/v4-shims.min.css" integrity="sha256-A6jcAdwFD48VMjlI3GDxUd+eCQa7/KWy6G9oe/ovaPA=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" /> <!-- clipboard.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script> <!-- headroom.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> <!-- pkgdown --> <link href="../pkgdown.css" rel="stylesheet"> @@ -32,10 +38,10 @@ -<meta property="og:title" content="Simple password generation — generate_pwd" /> +<meta property="og:title" content="Simple password generation — generate_pwd" /> <meta property="og:description" content="Simple password generation" /> -<meta name="twitter:card" content="summary" /> + @@ -52,7 +58,7 @@ </head> - <body> + <body data-spy="scroll" data-target="#toc"> <div class="container template-reference-topic"> <header> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> @@ -66,7 +72,7 @@ </button> <span class="navbar-brand"> <a class="navbar-link" href="../index.html">shinymanager</a> - <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.200</span> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.300</span> </span> </div> @@ -97,10 +103,9 @@ <a href="../news/index.html">Changelog</a> </li> </ul> - <ul class="nav navbar-nav navbar-right"> <li> - <a href="https://github.com/datastorm-open/shinymanager"> + <a href="https://github.com/datastorm-open/shinymanager/"> <span class="fab fa fab fa-github fa-lg"></span> </a> @@ -124,13 +129,11 @@ <h1>Simple password generation</h1> </div> <div class="ref-description"> - <p>Simple password generation</p> - </div> <pre class="usage"><span class='fu'>generate_pwd</span>(<span class='kw'>n</span> <span class='kw'>=</span> <span class='fl'>1</span>)</pre> - + <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2> <table class="ref-arguments"> <colgroup><col class="name" /><col class="desc" /></colgroup> @@ -139,26 +142,19 @@ <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arg <td><p>Number of password(s)</p></td> </tr> </table> - + <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2> <p>a <code>character</code></p> - <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2> - <pre class="examples"><div class='input'><span class='fu'>generate_pwd</span>()</div><div class='output co'>#> [1] "k+98xESK"</div><div class='input'> -<span class='fu'>generate_pwd</span>(<span class='fl'>3</span>)</div><div class='output co'>#> [1] "oo3brFgJ" "nYNIe9Zm" "CYEP0Vh5"</div></pre> + <pre class="examples"><div class='input'><span class='fu'>generate_pwd</span>()</div><div class='output co'>#> [1] "ALqORzdl"</div><div class='input'> +<span class='fu'>generate_pwd</span>(<span class='fl'>3</span>)</div><div class='output co'>#> [1] "jSz8CNfN" "Tkk2oUj8" "uIQn87rM"</div></pre> </div> <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar"> - <h2>Contents</h2> - <ul class="nav nav-pills nav-stacked"> - <li><a href="#arguments">Arguments</a></li> - - <li><a href="#value">Value</a></li> - - <li><a href="#examples">Examples</a></li> - </ul> - + <nav id="toc" data-toggle="toc" class="sticky-top"> + <h2 data-toc-skip>Contents</h2> + </nav> </div> </div> @@ -169,7 +165,7 @@ <h2>Contents</h2> </div> <div class="pkgdown"> - <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.9000.</p> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p> </div> </footer> diff --git a/docs/reference/index.html b/docs/reference/index.html index acda7c8..fe8c5da 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -8,23 +8,29 @@ <title>Function reference • shinymanager</title> + <!-- jquery --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <!-- Bootstrap --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" /> -<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous" /> + +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script> + +<!-- bootstrap-toc --> +<link rel="stylesheet" href="../bootstrap-toc.css"> +<script src="../bootstrap-toc.js"></script> <!-- Font Awesome icons --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/all.min.css" integrity="sha256-PbSmjxuVAzJ6FPvNYsrXygfGhNJYyZ2GktDbkMBqQZg=" crossorigin="anonymous" /> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/v4-shims.min.css" integrity="sha256-A6jcAdwFD48VMjlI3GDxUd+eCQa7/KWy6G9oe/ovaPA=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" /> <!-- clipboard.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script> <!-- headroom.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> <!-- pkgdown --> <link href="../pkgdown.css" rel="stylesheet"> @@ -32,10 +38,12 @@ + <meta property="og:title" content="Function reference" /> + <!-- mathjax --> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js" integrity="sha256-nvJJv9wWKEm88qvoQl9ekL2J+k/RWIsaSScxxlsrv8k=" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/config/TeX-AMS-MML_HTMLorMML.js" integrity="sha256-84DKXVJXs0/F8OTMzX4UR909+jtl4G7SPypPavF+GfA=" crossorigin="anonymous"></script> @@ -49,7 +57,7 @@ </head> - <body> + <body data-spy="scroll" data-target="#toc"> <div class="container template-reference-index"> <header> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> @@ -63,7 +71,7 @@ </button> <span class="navbar-brand"> <a class="navbar-link" href="../index.html">shinymanager</a> - <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.200</span> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.300</span> </span> </div> @@ -94,10 +102,9 @@ <a href="../news/index.html">Changelog</a> </li> </ul> - <ul class="nav navbar-nav navbar-right"> <li> - <a href="https://github.com/datastorm-open/shinymanager"> + <a href="https://github.com/datastorm-open/shinymanager/"> <span class="fab fa fab fa-github fa-lg"></span> </a> @@ -133,6 +140,11 @@ <h2 id="section-all-functions" class="hasAnchor"><a href="#section-all-functions <p class="section-desc"></p> </th> </tr> + + + </tbody><tbody> + + <tr> <td> @@ -147,6 +159,12 @@ <h2 id="section-all-functions" class="hasAnchor"><a href="#section-all-functions <td><p>Create credentials database</p></td> </tr><tr> + <td> + <p><code><a href="custom-labels.html">set_labels()</a></code> <code><a href="custom-labels.html">get_labels()</a></code> </p> + </td> + <td><p>Modify shinymanager labels to use custom text</p></td> + </tr><tr> + <td> <p><code><a href="db-crypted.html">write_db_encrypt()</a></code> <code><a href="db-crypted.html">read_db_decrypt()</a></code> </p> </td> @@ -187,10 +205,9 @@ <h2 id="section-all-functions" class="hasAnchor"><a href="#section-all-functions </div> <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar"> - <h2>Contents</h2> - <ul class="nav nav-pills nav-stacked"> - <li><a href="#section-all-functions">All functions</a></li> - </ul> + <nav id="toc" data-toggle="toc" class="sticky-top"> + <h2 data-toc-skip>Contents</h2> + </nav> </div> </div> @@ -201,7 +218,7 @@ <h2>Contents</h2> </div> <div class="pkgdown"> - <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.9000.</p> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p> </div> </footer> diff --git a/docs/reference/module-authentication.html b/docs/reference/module-authentication.html index 49035c6..cb6271e 100644 --- a/docs/reference/module-authentication.html +++ b/docs/reference/module-authentication.html @@ -8,23 +8,29 @@ <title>Authentication module — module-authentication • shinymanager</title> + <!-- jquery --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <!-- Bootstrap --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" /> -<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous" /> + +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script> + +<!-- bootstrap-toc --> +<link rel="stylesheet" href="../bootstrap-toc.css"> +<script src="../bootstrap-toc.js"></script> <!-- Font Awesome icons --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/all.min.css" integrity="sha256-PbSmjxuVAzJ6FPvNYsrXygfGhNJYyZ2GktDbkMBqQZg=" crossorigin="anonymous" /> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/v4-shims.min.css" integrity="sha256-A6jcAdwFD48VMjlI3GDxUd+eCQa7/KWy6G9oe/ovaPA=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" /> <!-- clipboard.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script> <!-- headroom.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> <!-- pkgdown --> <link href="../pkgdown.css" rel="stylesheet"> @@ -32,10 +38,10 @@ -<meta property="og:title" content="Authentication module — module-authentication" /> +<meta property="og:title" content="Authentication module — module-authentication" /> <meta property="og:description" content="Authentication module" /> -<meta name="twitter:card" content="summary" /> + @@ -52,7 +58,7 @@ </head> - <body> + <body data-spy="scroll" data-target="#toc"> <div class="container template-reference-topic"> <header> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> @@ -66,7 +72,7 @@ </button> <span class="navbar-brand"> <a class="navbar-link" href="../index.html">shinymanager</a> - <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.200</span> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.300</span> </span> </div> @@ -97,10 +103,9 @@ <a href="../news/index.html">Changelog</a> </li> </ul> - <ul class="nav navbar-nav navbar-right"> <li> - <a href="https://github.com/datastorm-open/shinymanager"> + <a href="https://github.com/datastorm-open/shinymanager/"> <span class="fab fa fab fa-github fa-lg"></span> </a> @@ -124,9 +129,7 @@ <h1>Authentication module</h1> </div> <div class="ref-description"> - <p>Authentication module</p> - </div> <pre class="usage"><span class='fu'>auth_ui</span>( @@ -135,11 +138,20 @@ <h1>Authentication module</h1> <span class='kw'>tags_top</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>tags_bottom</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>background</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, + <span class='kw'>choose_language</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, + <span class='kw'>lan</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='no'>...</span> ) -<span class='fu'>auth_server</span>(<span class='no'>input</span>, <span class='no'>output</span>, <span class='no'>session</span>, <span class='no'>check_credentials</span>, <span class='kw'>use_token</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>)</pre> - +<span class='fu'>auth_server</span>( + <span class='no'>input</span>, + <span class='no'>output</span>, + <span class='no'>session</span>, + <span class='no'>check_credentials</span>, + <span class='kw'>use_token</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>, + <span class='kw'>lan</span> <span class='kw'>=</span> <span class='kw'>NULL</span> +)</pre> + <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2> <table class="ref-arguments"> <colgroup><col class="name" /><col class="desc" /></colgroup> @@ -165,6 +177,15 @@ <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arg <th>background</th> <td><p>A optionnal <code>css</code> for authentication background. See example.</p></td> </tr> + <tr> + <th>choose_language</th> + <td><p><code>logical/character</code>. Add language selection on top ? TRUE for all supported languages +or a vector of possibilities like <code><a href='https://rdrr.io/r/base/c.html'>c("fr", "en")</a></code>. If enabled, <code>input$shinymanager_language</code> is created</p></td> + </tr> + <tr> + <th>lan</th> + <td><p>An langauge object. Should not be used directly.</p></td> + </tr> <tr> <th>...</th> <td><p>: Used for old version compatibility.</p></td> @@ -185,7 +206,7 @@ <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arg <td><p>Add a token in the URL to check authentication. Should not be used directly.</p></td> </tr> </table> - + <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2> <p>A <code>reactiveValues</code> with 3 slots :</p><ul> @@ -194,7 +215,6 @@ <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2> <li><p><strong>user_info</strong> : information about the user.</p></li> </ul> - <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2> <pre class="examples"><div class='input'><span class='kw'>if</span> (<span class='fu'><a href='https://rdrr.io/r/base/interactive.html'>interactive</a></span>()) { @@ -202,87 +222,100 @@ <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examp <span class='fu'><a href='https://rdrr.io/r/base/library.html'>library</a></span>(<span class='no'>shiny</span>) <span class='fu'><a href='https://rdrr.io/r/base/library.html'>library</a></span>(<span class='no'>shinymanager</span>) + <span class='co'># data.frame with credentials info</span> + <span class='co'># credentials <- data.frame(</span> + <span class='co'># user = c("fanny", "victor"),</span> + <span class='co'># password = c("azerty", "12345"),</span> + <span class='co'># comment = c("alsace", "auvergne"),</span> + <span class='co'># stringsAsFactors = FALSE</span> + <span class='co'># )</span> + + <span class='co'># you can hash the password using scrypt</span> + <span class='co'># and adding a column is_hashed_password</span> <span class='co'># data.frame with credentials info</span> <span class='no'>credentials</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/r/base/data.frame.html'>data.frame</a></span>( <span class='kw'>user</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"fanny"</span>, <span class='st'>"victor"</span>), - <span class='kw'>password</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"azerty"</span>, <span class='st'>"12345"</span>), + <span class='kw'>password</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='kw pkg'>scrypt</span><span class='kw ns'>::</span><span class='fu'><a href='https://rdrr.io/pkg/scrypt/man/hashPassword.html'>hashPassword</a></span>(<span class='st'>"azerty"</span>), <span class='kw pkg'>scrypt</span><span class='kw ns'>::</span><span class='fu'><a href='https://rdrr.io/pkg/scrypt/man/hashPassword.html'>hashPassword</a></span>(<span class='st'>"12345"</span>)), + <span class='kw'>is_hashed_password</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>, <span class='kw'>comment</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"alsace"</span>, <span class='st'>"auvergne"</span>), <span class='kw'>stringsAsFactors</span> <span class='kw'>=</span> <span class='fl'>FALSE</span> ) <span class='co'># app</span> - <span class='no'>ui</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/fluidPage.html'>fluidPage</a></span>( + <span class='no'>ui</span> <span class='kw'><-</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/fluidPage.html'>fluidPage</a></span>( <span class='co'># authentication module</span> <span class='fu'>auth_ui</span>( <span class='kw'>id</span> <span class='kw'>=</span> <span class='st'>"auth"</span>, <span class='co'># add image on top ?</span> <span class='kw'>tags_top</span> <span class='kw'>=</span> - <span class='no'>tags</span>$<span class='fu'><a href='https://rdrr.io/pkg/shiny/man/builder.html'>div</a></span>( - <span class='no'>tags</span>$<span class='fu'><a href='https://rdrr.io/pkg/shiny/man/builder.html'>h4</a></span>(<span class='st'>"Demo"</span>, <span class='kw'>style</span> <span class='kw'>=</span> <span class='st'>"align:center"</span>), - <span class='no'>tags</span>$<span class='fu'><a href='https://rdrr.io/pkg/shiny/man/builder.html'>img</a></span>( + <span class='no'>tags</span>$<span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reexports.html'>div</a></span>( + <span class='no'>tags</span>$<span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reexports.html'>h4</a></span>(<span class='st'>"Demo"</span>, <span class='kw'>style</span> <span class='kw'>=</span> <span class='st'>"align:center"</span>), + <span class='no'>tags</span>$<span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reexports.html'>img</a></span>( <span class='kw'>src</span> <span class='kw'>=</span> <span class='st'>"https://www.r-project.org/logo/Rlogo.png"</span>, <span class='kw'>width</span> <span class='kw'>=</span> <span class='fl'>100</span> ) ), <span class='co'># add information on bottom ?</span> - <span class='kw'>tags_bottom</span> <span class='kw'>=</span> <span class='no'>tags</span>$<span class='fu'><a href='https://rdrr.io/pkg/shiny/man/builder.html'>div</a></span>( - <span class='no'>tags</span>$<span class='fu'><a href='https://rdrr.io/pkg/shiny/man/builder.html'>p</a></span>( + <span class='kw'>tags_bottom</span> <span class='kw'>=</span> <span class='no'>tags</span>$<span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reexports.html'>div</a></span>( + <span class='no'>tags</span>$<span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reexports.html'>p</a></span>( <span class='st'>"For any question, please contact "</span>, - <span class='no'>tags</span>$<span class='fu'><a href='https://rdrr.io/pkg/shiny/man/builder.html'>a</a></span>( + <span class='no'>tags</span>$<span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reexports.html'>a</a></span>( <span class='kw'>href</span> <span class='kw'>=</span> <span class='st'>"mailto:someone@example.com?Subject=Shiny%20aManager"</span>, <span class='kw'>target</span><span class='kw'>=</span><span class='st'>"_top"</span>, <span class='st'>"administrator"</span> ) ) ), <span class='co'># change auth ui background ?</span> + <span class='co'># https://developer.mozilla.org/fr/docs/Web/CSS/background</span> <span class='kw'>background</span> <span class='kw'>=</span> <span class='st'>"linear-gradient(rgba(0, 0, 255, 0.5), rgba(255, 255, 0, 0.5)), - url('https://www.r-project.org/logo/Rlogo.png');"</span> + url('https://www.r-project.org/logo/Rlogo.png');"</span>, + <span class='kw'>choose_language</span> <span class='kw'>=</span> <span class='fl'>TRUE</span> ), <span class='co'># result of authentication</span> - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/textOutput.html'>verbatimTextOutput</a></span>(<span class='kw'>outputId</span> <span class='kw'>=</span> <span class='st'>"res_auth"</span>), + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/textOutput.html'>verbatimTextOutput</a></span>(<span class='kw'>outputId</span> <span class='kw'>=</span> <span class='st'>"res_auth"</span>), <span class='co'># classic app</span> - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/headerPanel.html'>headerPanel</a></span>(<span class='st'>'Iris k-means clustering'</span>), - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/sidebarLayout.html'>sidebarPanel</a></span>( - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/selectInput.html'>selectInput</a></span>(<span class='st'>'xcol'</span>, <span class='st'>'X Variable'</span>, <span class='fu'><a href='https://rdrr.io/r/base/names.html'>names</a></span>(<span class='no'>iris</span>)), - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/selectInput.html'>selectInput</a></span>(<span class='st'>'ycol'</span>, <span class='st'>'Y Variable'</span>, <span class='fu'><a href='https://rdrr.io/r/base/names.html'>names</a></span>(<span class='no'>iris</span>), + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/headerPanel.html'>headerPanel</a></span>(<span class='st'>'Iris k-means clustering'</span>), + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/sidebarLayout.html'>sidebarPanel</a></span>( + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/selectInput.html'>selectInput</a></span>(<span class='st'>'xcol'</span>, <span class='st'>'X Variable'</span>, <span class='fu'><a href='https://rdrr.io/r/base/names.html'>names</a></span>(<span class='no'>iris</span>)), + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/selectInput.html'>selectInput</a></span>(<span class='st'>'ycol'</span>, <span class='st'>'Y Variable'</span>, <span class='fu'><a href='https://rdrr.io/r/base/names.html'>names</a></span>(<span class='no'>iris</span>), <span class='kw'>selected</span><span class='kw'>=</span><span class='fu'><a href='https://rdrr.io/r/base/names.html'>names</a></span>(<span class='no'>iris</span>)<span class='kw'>[[</span><span class='fl'>2</span>]]), - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/numericInput.html'>numericInput</a></span>(<span class='st'>'clusters'</span>, <span class='st'>'Cluster count'</span>, <span class='fl'>3</span>, + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/numericInput.html'>numericInput</a></span>(<span class='st'>'clusters'</span>, <span class='st'>'Cluster count'</span>, <span class='fl'>3</span>, <span class='kw'>min</span> <span class='kw'>=</span> <span class='fl'>1</span>, <span class='kw'>max</span> <span class='kw'>=</span> <span class='fl'>9</span>) ), - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/sidebarLayout.html'>mainPanel</a></span>( - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/plotOutput.html'>plotOutput</a></span>(<span class='st'>'plot1'</span>) + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/sidebarLayout.html'>mainPanel</a></span>( + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/plotOutput.html'>plotOutput</a></span>(<span class='st'>'plot1'</span>) ) ) <span class='no'>server</span> <span class='kw'><-</span> <span class='kw'>function</span>(<span class='no'>input</span>, <span class='no'>output</span>, <span class='no'>session</span>) { <span class='co'># authentication module</span> - <span class='no'>auth</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/callModule.html'>callModule</a></span>( + <span class='no'>auth</span> <span class='kw'><-</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/callModule.html'>callModule</a></span>( <span class='kw'>module</span> <span class='kw'>=</span> <span class='no'>auth_server</span>, <span class='kw'>id</span> <span class='kw'>=</span> <span class='st'>"auth"</span>, <span class='kw'>check_credentials</span> <span class='kw'>=</span> <span class='fu'><a href='check_credentials.html'>check_credentials</a></span>(<span class='no'>credentials</span>) ) - <span class='no'>output</span>$<span class='no'>res_auth</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/renderPrint.html'>renderPrint</a></span>({ - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/reactiveValuesToList.html'>reactiveValuesToList</a></span>(<span class='no'>auth</span>) + <span class='no'>output</span>$<span class='no'>res_auth</span> <span class='kw'><-</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/renderPrint.html'>renderPrint</a></span>({ + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reactiveValuesToList.html'>reactiveValuesToList</a></span>(<span class='no'>auth</span>) }) <span class='co'># classic app</span> - <span class='no'>selectedData</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/reactive.html'>reactive</a></span>({ + <span class='no'>selectedData</span> <span class='kw'><-</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reactive.html'>reactive</a></span>({ - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/req.html'>req</a></span>(<span class='no'>auth</span>$<span class='no'>result</span>) <span class='co'># <---- dependency on authentication result</span> + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/req.html'>req</a></span>(<span class='no'>auth</span>$<span class='no'>result</span>) <span class='co'># <---- dependency on authentication result</span> <span class='no'>iris</span>[, <span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='no'>input</span>$<span class='no'>xcol</span>, <span class='no'>input</span>$<span class='no'>ycol</span>)] }) - <span class='no'>clusters</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/reactive.html'>reactive</a></span>({ + <span class='no'>clusters</span> <span class='kw'><-</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reactive.html'>reactive</a></span>({ <span class='fu'><a href='https://rdrr.io/r/stats/kmeans.html'>kmeans</a></span>(<span class='fu'>selectedData</span>(), <span class='no'>input</span>$<span class='no'>clusters</span>) }) - <span class='no'>output</span>$<span class='no'>plot1</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/renderPlot.html'>renderPlot</a></span>({ + <span class='no'>output</span>$<span class='no'>plot1</span> <span class='kw'><-</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/renderPlot.html'>renderPlot</a></span>({ <span class='fu'><a href='https://rdrr.io/r/grDevices/palette.html'>palette</a></span>(<span class='fu'><a href='https://rdrr.io/r/base/c.html'>c</a></span>(<span class='st'>"#E41A1C"</span>, <span class='st'>"#377EB8"</span>, <span class='st'>"#4DAF4A"</span>, <span class='st'>"#984EA3"</span>, <span class='st'>"#FF7F00"</span>, <span class='st'>"#FFFF33"</span>, <span class='st'>"#A65628"</span>, <span class='st'>"#F781BF"</span>, <span class='st'>"#999999"</span>)) @@ -294,20 +327,14 @@ <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examp }) } - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/shinyApp.html'>shinyApp</a></span>(<span class='no'>ui</span>, <span class='no'>server</span>) + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/shinyApp.html'>shinyApp</a></span>(<span class='no'>ui</span>, <span class='no'>server</span>) }</div></pre> </div> <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar"> - <h2>Contents</h2> - <ul class="nav nav-pills nav-stacked"> - <li><a href="#arguments">Arguments</a></li> - - <li><a href="#value">Value</a></li> - - <li><a href="#examples">Examples</a></li> - </ul> - + <nav id="toc" data-toggle="toc" class="sticky-top"> + <h2 data-toc-skip>Contents</h2> + </nav> </div> </div> @@ -318,7 +345,7 @@ <h2>Contents</h2> </div> <div class="pkgdown"> - <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.9000.</p> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p> </div> </footer> diff --git a/docs/reference/module-password.html b/docs/reference/module-password.html index 41d312a..49cf594 100644 --- a/docs/reference/module-password.html +++ b/docs/reference/module-password.html @@ -8,23 +8,29 @@ <title>New password module — module-password • shinymanager</title> + <!-- jquery --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <!-- Bootstrap --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" /> -<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous" /> + +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script> + +<!-- bootstrap-toc --> +<link rel="stylesheet" href="../bootstrap-toc.css"> +<script src="../bootstrap-toc.js"></script> <!-- Font Awesome icons --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/all.min.css" integrity="sha256-PbSmjxuVAzJ6FPvNYsrXygfGhNJYyZ2GktDbkMBqQZg=" crossorigin="anonymous" /> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/v4-shims.min.css" integrity="sha256-A6jcAdwFD48VMjlI3GDxUd+eCQa7/KWy6G9oe/ovaPA=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" /> <!-- clipboard.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script> <!-- headroom.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> <!-- pkgdown --> <link href="../pkgdown.css" rel="stylesheet"> @@ -32,10 +38,10 @@ -<meta property="og:title" content="New password module — module-password" /> +<meta property="og:title" content="New password module — module-password" /> <meta property="og:description" content="New password module" /> -<meta name="twitter:card" content="summary" /> + @@ -52,7 +58,7 @@ </head> - <body> + <body data-spy="scroll" data-target="#toc"> <div class="container template-reference-topic"> <header> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> @@ -66,7 +72,7 @@ </button> <span class="navbar-brand"> <a class="navbar-link" href="../index.html">shinymanager</a> - <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.200</span> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.300</span> </span> </div> @@ -97,10 +103,9 @@ <a href="../news/index.html">Changelog</a> </li> </ul> - <ul class="nav navbar-nav navbar-right"> <li> - <a href="https://github.com/datastorm-open/shinymanager"> + <a href="https://github.com/datastorm-open/shinymanager/"> <span class="fab fa fab fa-github fa-lg"></span> </a> @@ -124,12 +129,10 @@ <h1>New password module</h1> </div> <div class="ref-description"> - <p>New password module</p> - </div> - <pre class="usage"><span class='fu'>pwd_ui</span>(<span class='no'>id</span>, <span class='kw'>tag_img</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>status</span> <span class='kw'>=</span> <span class='st'>"primary"</span>) + <pre class="usage"><span class='fu'>pwd_ui</span>(<span class='no'>id</span>, <span class='kw'>tag_img</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, <span class='kw'>status</span> <span class='kw'>=</span> <span class='st'>"primary"</span>, <span class='kw'>lan</span> <span class='kw'>=</span> <span class='kw'>NULL</span>) <span class='fu'>pwd_server</span>( <span class='no'>input</span>, @@ -138,9 +141,10 @@ <h1>New password module</h1> <span class='no'>user</span>, <span class='no'>update_pwd</span>, <span class='kw'>validate_pwd</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, - <span class='kw'>use_token</span> <span class='kw'>=</span> <span class='fl'>FALSE</span> + <span class='kw'>use_token</span> <span class='kw'>=</span> <span class='fl'>FALSE</span>, + <span class='kw'>lan</span> <span class='kw'>=</span> <span class='kw'>NULL</span> )</pre> - + <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2> <table class="ref-arguments"> <colgroup><col class="name" /><col class="desc" /></colgroup> @@ -158,6 +162,10 @@ <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arg Valid status are: <code>"default"</code>, <code>"primary"</code>, <code>"success"</code>, <code>"warning"</code>, <code>"danger"</code>.</p></td> </tr> + <tr> + <th>lan</th> + <td><p>An langauge object. Should not be used directly.</p></td> + </tr> <tr> <th>input, output, session</th> <td><p>Standard Shiny server arguments.</p></td> @@ -185,7 +193,7 @@ <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arg <td><p>Add a token in the URL to check authentication. Should not be used directly.</p></td> </tr> </table> - + <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2> <pre class="examples"><div class='input'><span class='kw'>if</span> (<span class='fu'><a href='https://rdrr.io/r/base/interactive.html'>interactive</a></span>()) { @@ -193,57 +201,53 @@ <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examp <span class='fu'><a href='https://rdrr.io/r/base/library.html'>library</a></span>(<span class='no'>shiny</span>) <span class='fu'><a href='https://rdrr.io/r/base/library.html'>library</a></span>(<span class='no'>shinymanager</span>) - <span class='no'>ui</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/fluidPage.html'>fluidPage</a></span>( - <span class='no'>tags</span>$<span class='fu'><a href='https://rdrr.io/pkg/shiny/man/builder.html'>h2</a></span>(<span class='st'>"Change password module"</span>), - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/actionButton.html'>actionButton</a></span>( + <span class='no'>ui</span> <span class='kw'><-</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/fluidPage.html'>fluidPage</a></span>( + <span class='no'>tags</span>$<span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reexports.html'>h2</a></span>(<span class='st'>"Change password module"</span>), + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/actionButton.html'>actionButton</a></span>( <span class='kw'>inputId</span> <span class='kw'>=</span> <span class='st'>"ask"</span>, <span class='kw'>label</span> <span class='kw'>=</span> <span class='st'>"Ask to change password"</span> ), - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/textOutput.html'>verbatimTextOutput</a></span>(<span class='kw'>outputId</span> <span class='kw'>=</span> <span class='st'>"res_pwd"</span>) + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/textOutput.html'>verbatimTextOutput</a></span>(<span class='kw'>outputId</span> <span class='kw'>=</span> <span class='st'>"res_pwd"</span>) ) <span class='no'>server</span> <span class='kw'><-</span> <span class='kw'>function</span>(<span class='no'>input</span>, <span class='no'>output</span>, <span class='no'>session</span>) { - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/observeEvent.html'>observeEvent</a></span>(<span class='no'>input</span>$<span class='no'>ask</span>, { - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/insertUI.html'>insertUI</a></span>( + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/observeEvent.html'>observeEvent</a></span>(<span class='no'>input</span>$<span class='no'>ask</span>, { + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/insertUI.html'>insertUI</a></span>( <span class='kw'>selector</span> <span class='kw'>=</span> <span class='st'>"body"</span>, - <span class='kw'>ui</span> <span class='kw'>=</span> <span class='no'>tags</span>$<span class='fu'><a href='https://rdrr.io/pkg/shiny/man/builder.html'>div</a></span>( + <span class='kw'>ui</span> <span class='kw'>=</span> <span class='no'>tags</span>$<span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reexports.html'>div</a></span>( <span class='kw'>id</span> <span class='kw'>=</span> <span class='st'>"module-pwd"</span>, <span class='fu'>pwd_ui</span>(<span class='kw'>id</span> <span class='kw'>=</span> <span class='st'>"pwd"</span>) ) ) }) - <span class='no'>output</span>$<span class='no'>res_pwd</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/renderPrint.html'>renderPrint</a></span>({ - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/reactiveValuesToList.html'>reactiveValuesToList</a></span>(<span class='no'>pwd_out</span>) + <span class='no'>output</span>$<span class='no'>res_pwd</span> <span class='kw'><-</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/renderPrint.html'>renderPrint</a></span>({ + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reactiveValuesToList.html'>reactiveValuesToList</a></span>(<span class='no'>pwd_out</span>) }) - <span class='no'>pwd_out</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/callModule.html'>callModule</a></span>( + <span class='no'>pwd_out</span> <span class='kw'><-</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/callModule.html'>callModule</a></span>( <span class='kw'>module</span> <span class='kw'>=</span> <span class='no'>pwd_server</span>, <span class='kw'>id</span> <span class='kw'>=</span> <span class='st'>"pwd"</span>, - <span class='kw'>user</span> <span class='kw'>=</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/reactiveValues.html'>reactiveValues</a></span>(<span class='kw'>user</span> <span class='kw'>=</span> <span class='st'>"me"</span>), + <span class='kw'>user</span> <span class='kw'>=</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reactiveValues.html'>reactiveValues</a></span>(<span class='kw'>user</span> <span class='kw'>=</span> <span class='st'>"me"</span>), <span class='kw'>update_pwd</span> <span class='kw'>=</span> <span class='kw'>function</span>(<span class='no'>user</span>, <span class='no'>pwd</span>) { <span class='co'># store the password somewhere</span> <span class='fu'><a href='https://rdrr.io/r/base/list.html'>list</a></span>(<span class='kw'>result</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>) } ) - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/observeEvent.html'>observeEvent</a></span>(<span class='no'>pwd_out</span>$<span class='no'>relog</span>, { - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/insertUI.html'>removeUI</a></span>(<span class='kw'>selector</span> <span class='kw'>=</span> <span class='st'>"#module-pwd"</span>) + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/observeEvent.html'>observeEvent</a></span>(<span class='no'>pwd_out</span>$<span class='no'>relog</span>, { + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/insertUI.html'>removeUI</a></span>(<span class='kw'>selector</span> <span class='kw'>=</span> <span class='st'>"#module-pwd"</span>) }) } - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/shinyApp.html'>shinyApp</a></span>(<span class='no'>ui</span>, <span class='no'>server</span>) + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/shinyApp.html'>shinyApp</a></span>(<span class='no'>ui</span>, <span class='no'>server</span>) }</div></pre> </div> <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar"> - <h2>Contents</h2> - <ul class="nav nav-pills nav-stacked"> - <li><a href="#arguments">Arguments</a></li> - - <li><a href="#examples">Examples</a></li> - </ul> - + <nav id="toc" data-toggle="toc" class="sticky-top"> + <h2 data-toc-skip>Contents</h2> + </nav> </div> </div> @@ -254,7 +258,7 @@ <h2>Contents</h2> </div> <div class="pkgdown"> - <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.9000.</p> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p> </div> </footer> diff --git a/docs/reference/secure-app.html b/docs/reference/secure-app.html index dcabd39..a290580 100644 --- a/docs/reference/secure-app.html +++ b/docs/reference/secure-app.html @@ -8,23 +8,29 @@ <title>Secure a Shiny application and manage authentication — secure-app • shinymanager</title> + <!-- jquery --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script> <!-- Bootstrap --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha256-916EbMg70RQy9LHiGkXzG8hSg9EdNy97GazNG/aiY1w=" crossorigin="anonymous" /> -<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha256-U5ZEeKfGNOja007MMD3YBI0A3OSZOQbeG6z2f2Y0hu8=" crossorigin="anonymous"></script> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" integrity="sha256-bZLfwXAP04zRMK2BjiO8iu9pf4FbLqX6zitd+tIvLhE=" crossorigin="anonymous" /> + +<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha256-nuL8/2cJ5NDSSwnKD8VqreErSWHtnEP9E7AySL+1ev4=" crossorigin="anonymous"></script> + +<!-- bootstrap-toc --> +<link rel="stylesheet" href="../bootstrap-toc.css"> +<script src="../bootstrap-toc.js"></script> <!-- Font Awesome icons --> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/all.min.css" integrity="sha256-PbSmjxuVAzJ6FPvNYsrXygfGhNJYyZ2GktDbkMBqQZg=" crossorigin="anonymous" /> -<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.11.1/css/v4-shims.min.css" integrity="sha256-A6jcAdwFD48VMjlI3GDxUd+eCQa7/KWy6G9oe/ovaPA=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/all.min.css" integrity="sha256-mmgLkCYLUQbXn0B1SRqzHar6dCnv9oZFPEC1g1cwlkk=" crossorigin="anonymous" /> +<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/css/v4-shims.min.css" integrity="sha256-wZjR52fzng1pJHwx4aV2AO3yyTOXrcDW7jBpJtTwVxw=" crossorigin="anonymous" /> <!-- clipboard.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.4/clipboard.min.js" integrity="sha256-FiZwavyI2V6+EXO1U+xzLG3IKldpiTFf3153ea9zikQ=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.6/clipboard.min.js" integrity="sha256-inc5kl9MA1hkeYUt+EC3BhlIgyp/2jDIyBLS6k3UxPI=" crossorigin="anonymous"></script> <!-- headroom.js --> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/headroom.min.js" integrity="sha256-DJFC1kqIhelURkuza0AvYal5RxMtpzLjFhsnVIeuk+U=" crossorigin="anonymous"></script> -<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.9.4/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/headroom.min.js" integrity="sha256-AsUX4SJE1+yuDu5+mAVzJbuYNPHj/WroHuZ8Ir/CkE0=" crossorigin="anonymous"></script> +<script src="https://cdnjs.cloudflare.com/ajax/libs/headroom/0.11.0/jQuery.headroom.min.js" integrity="sha256-ZX/yNShbjqsohH1k95liqY9Gd8uOiE1S4vZc+9KQ1K4=" crossorigin="anonymous"></script> <!-- pkgdown --> <link href="../pkgdown.css" rel="stylesheet"> @@ -32,10 +38,10 @@ -<meta property="og:title" content="Secure a Shiny application and manage authentication — secure-app" /> +<meta property="og:title" content="Secure a Shiny application and manage authentication — secure-app" /> <meta property="og:description" content="Secure a Shiny application and manage authentication" /> -<meta name="twitter:card" content="summary" /> + @@ -52,7 +58,7 @@ </head> - <body> + <body data-spy="scroll" data-target="#toc"> <div class="container template-reference-topic"> <header> <div class="navbar navbar-default navbar-fixed-top" role="navigation"> @@ -66,7 +72,7 @@ </button> <span class="navbar-brand"> <a class="navbar-link" href="../index.html">shinymanager</a> - <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.200</span> + <span class="version label label-default" data-toggle="tooltip" data-placement="bottom" title="Released version">1.0.300</span> </span> </div> @@ -97,10 +103,9 @@ <a href="../news/index.html">Changelog</a> </li> </ul> - <ul class="nav navbar-nav navbar-right"> <li> - <a href="https://github.com/datastorm-open/shinymanager"> + <a href="https://github.com/datastorm-open/shinymanager/"> <span class="fab fa fab fa-github fa-lg"></span> </a> @@ -124,9 +129,7 @@ <h1>Secure a Shiny application and manage authentication</h1> </div> <div class="ref-description"> - <p>Secure a Shiny application and manage authentication</p> - </div> <pre class="usage"><span class='fu'>secure_app</span>( @@ -142,9 +145,10 @@ <h1>Secure a Shiny application and manage authentication</h1> <span class='no'>check_credentials</span>, <span class='kw'>timeout</span> <span class='kw'>=</span> <span class='fl'>15</span>, <span class='kw'>inputs_list</span> <span class='kw'>=</span> <span class='kw'>NULL</span>, - <span class='kw'>session</span> <span class='kw'>=</span> <span class='kw pkg'>shiny</span><span class='kw ns'>::</span><span class='fu'><a href='https://rdrr.io/pkg/shiny/man/domains.html'>getDefaultReactiveDomain</a></span>() + <span class='kw'>fileEncoding</span> <span class='kw'>=</span> <span class='st'>""</span>, + <span class='kw'>session</span> <span class='kw'>=</span> <span class='kw pkg'>shiny</span><span class='kw ns'>::</span><span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/domains.html'>getDefaultReactiveDomain</a></span>() )</pre> - + <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arguments</h2> <table class="ref-arguments"> <colgroup><col class="name" /><col class="desc" /></colgroup> @@ -174,7 +178,7 @@ <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arg </tr> <tr> <th>language</th> - <td><p>Language to use for labels, supported values are : "en", "fr", "br".</p></td> + <td><p>Language to use for labels, supported values are : "en", "fr", "pt-BR".</p></td> </tr> <tr> <th>check_credentials</th> @@ -188,16 +192,19 @@ <h2 class="hasAnchor" id="arguments"><a class="anchor" href="#arguments"></a>Arg <th>inputs_list</th> <td><p><code>list</code>. If database credentials, you can configure inputs for editing users information. See Details.</p></td> </tr> + <tr> + <th>fileEncoding</th> + <td><p>character string: Encoding of logs downloaded file. See <code><a href='https://rdrr.io/r/utils/write.table.html'>write.table</a></code></p></td> + </tr> <tr> <th>session</th> <td><p>Shiny session.</p></td> </tr> </table> - + <h2 class="hasAnchor" id="value"><a class="anchor" href="#value"></a>Value</h2> <p>A <code>reactiveValues</code> containing informations about the user connected.</p> - <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details</h2> <p>If database credentials, you can configure inputs with <code>inputs_list</code> for editing users information @@ -216,12 +223,10 @@ <h2 class="hasAnchor" id="details"><a class="anchor" href="#details"></a>Details ) ) </a></code></p> - <h2 class="hasAnchor" id="note"><a class="anchor" href="#note"></a>Note</h2> <p>A special input value will be accessible server-side with <code>input$shinymanager_where</code> to know in which step user is : authentication, application, admin or password.</p> - <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examples</h2> <pre class="examples"><div class='input'><span class='kw'>if</span> (<span class='fu'><a href='https://rdrr.io/r/base/interactive.html'>interactive</a></span>()) { @@ -236,13 +241,13 @@ <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examp <span class='fu'><a href='https://rdrr.io/r/base/library.html'>library</a></span>(<span class='no'>shiny</span>) <span class='fu'><a href='https://rdrr.io/r/base/library.html'>library</a></span>(<span class='no'>shinymanager</span>) - <span class='no'>ui</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/fluidPage.html'>fluidPage</a></span>( - <span class='no'>tags</span>$<span class='fu'><a href='https://rdrr.io/pkg/shiny/man/builder.html'>h2</a></span>(<span class='st'>"My secure application"</span>), - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/textOutput.html'>verbatimTextOutput</a></span>(<span class='st'>"auth_output"</span>) + <span class='no'>ui</span> <span class='kw'><-</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/fluidPage.html'>fluidPage</a></span>( + <span class='no'>tags</span>$<span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reexports.html'>h2</a></span>(<span class='st'>"My secure application"</span>), + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/textOutput.html'>verbatimTextOutput</a></span>(<span class='st'>"auth_output"</span>) ) <span class='co'># Wrap your UI with secure_app</span> - <span class='no'>ui</span> <span class='kw'><-</span> <span class='fu'>secure_app</span>(<span class='no'>ui</span>) + <span class='no'>ui</span> <span class='kw'><-</span> <span class='fu'>secure_app</span>(<span class='no'>ui</span>, <span class='kw'>choose_language</span> <span class='kw'>=</span> <span class='fl'>TRUE</span>) <span class='co'># change auth ui background ?</span> <span class='co'># ui <- secure_app(ui,</span> @@ -258,32 +263,27 @@ <h2 class="hasAnchor" id="examples"><a class="anchor" href="#examples"></a>Examp <span class='kw'>check_credentials</span> <span class='kw'>=</span> <span class='fu'><a href='check_credentials.html'>check_credentials</a></span>(<span class='no'>credentials</span>) ) - <span class='no'>output</span>$<span class='no'>auth_output</span> <span class='kw'><-</span> <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/renderPrint.html'>renderPrint</a></span>({ - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/reactiveValuesToList.html'>reactiveValuesToList</a></span>(<span class='no'>res_auth</span>) + <span class='no'>output</span>$<span class='no'>auth_output</span> <span class='kw'><-</span> <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/renderPrint.html'>renderPrint</a></span>({ + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/reactiveValuesToList.html'>reactiveValuesToList</a></span>(<span class='no'>res_auth</span>) + }) + + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/observe.html'>observe</a></span>({ + <span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span>(<span class='no'>input</span>$<span class='no'>shinymanager_where</span>) + <span class='fu'><a href='https://rdrr.io/r/base/print.html'>print</a></span>(<span class='no'>input</span>$<span class='no'>shinymanager_language</span>) }) <span class='co'># your classic server logic</span> } - <span class='fu'><a href='https://rdrr.io/pkg/shiny/man/shinyApp.html'>shinyApp</a></span>(<span class='no'>ui</span>, <span class='no'>server</span>) + <span class='fu'><a href='https://shiny.rstudio.com/reference/shiny/latest/shinyApp.html'>shinyApp</a></span>(<span class='no'>ui</span>, <span class='no'>server</span>) }</div></pre> </div> <div class="col-md-3 hidden-xs hidden-sm" id="pkgdown-sidebar"> - <h2>Contents</h2> - <ul class="nav nav-pills nav-stacked"> - <li><a href="#arguments">Arguments</a></li> - - <li><a href="#value">Value</a></li> - - <li><a href="#details">Details</a></li> - - <li><a href="#note">Note</a></li> - - <li><a href="#examples">Examples</a></li> - </ul> - + <nav id="toc" data-toggle="toc" class="sticky-top"> + <h2 data-toc-skip>Contents</h2> + </nav> </div> </div> @@ -294,7 +294,7 @@ <h2>Contents</h2> </div> <div class="pkgdown"> - <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.4.1.9000.</p> + <p>Site built with <a href="https://pkgdown.r-lib.org/">pkgdown</a> 1.5.1.</p> </div> </footer>