Browse Source

feat: add credo and ex_doc, include static documentation

main
Inhji Y. 6 months ago
parent
commit
2a0efde609
  1. 80
      assets/static/docs/.build
  2. 121
      assets/static/docs/404.html
  3. 369
      assets/static/docs/Mirage.Accounts.User.html
  4. 250
      assets/static/docs/Mirage.Accounts.UserNotifier.html
  5. 381
      assets/static/docs/Mirage.Accounts.UserToken.html
  6. 922
      assets/static/docs/Mirage.Accounts.html
  7. 126
      assets/static/docs/Mirage.Links.Link.html
  8. 126
      assets/static/docs/Mirage.Links.LinkTopic.html
  9. 479
      assets/static/docs/Mirage.Links.html
  10. 126
      assets/static/docs/Mirage.Lists.List.html
  11. 451
      assets/static/docs/Mirage.Lists.html
  12. 244
      assets/static/docs/Mirage.Markdown.html
  13. 126
      assets/static/docs/Mirage.Notes.Note.html
  14. 126
      assets/static/docs/Mirage.Notes.NoteLink.html
  15. 126
      assets/static/docs/Mirage.Notes.NoteNote.html
  16. 126
      assets/static/docs/Mirage.Notes.NoteTopic.html
  17. 720
      assets/static/docs/Mirage.Notes.html
  18. 215
      assets/static/docs/Mirage.Release.html
  19. 1532
      assets/static/docs/Mirage.Repo.html
  20. 126
      assets/static/docs/Mirage.Settings.Setting.html
  21. 461
      assets/static/docs/Mirage.Settings.html
  22. 188
      assets/static/docs/Mirage.Slug.html
  23. 348
      assets/static/docs/Mirage.Tags.html
  24. 126
      assets/static/docs/Mirage.Topics.Topic.html
  25. 418
      assets/static/docs/Mirage.Topics.html
  26. BIN
      assets/static/docs/Mirage.epub
  27. 132
      assets/static/docs/Mirage.html
  28. 188
      assets/static/docs/MirageWeb.BlogLive.html
  29. 886
      assets/static/docs/MirageWeb.Endpoint.html
  30. 223
      assets/static/docs/MirageWeb.ErrorHelpers.html
  31. 263
      assets/static/docs/MirageWeb.ErrorView.html
  32. 897
      assets/static/docs/MirageWeb.Gettext.html
  33. 188
      assets/static/docs/MirageWeb.GotoAnythingLive.html
  34. 188
      assets/static/docs/MirageWeb.HomeLive.html
  35. 188
      assets/static/docs/MirageWeb.InboxLive.Index.html
  36. 188
      assets/static/docs/MirageWeb.InboxLive.ItemComponent.html
  37. 350
      assets/static/docs/MirageWeb.LayoutView.html
  38. 188
      assets/static/docs/MirageWeb.LinkLive.FormComponent.html
  39. 188
      assets/static/docs/MirageWeb.LinkLive.Index.html
  40. 188
      assets/static/docs/MirageWeb.LinkLive.Show.html
  41. 188
      assets/static/docs/MirageWeb.ListLive.FormComponent.html
  42. 188
      assets/static/docs/MirageWeb.ListLive.Index.html
  43. 188
      assets/static/docs/MirageWeb.ListLive.Show.html
  44. 226
      assets/static/docs/MirageWeb.LiveHelpers.html
  45. 188
      assets/static/docs/MirageWeb.ModalComponent.html
  46. 188
      assets/static/docs/MirageWeb.NoteLive.FormComponent.html
  47. 188
      assets/static/docs/MirageWeb.NoteLive.Index.html
  48. 188
      assets/static/docs/MirageWeb.NoteLive.Show.html
  49. 2868
      assets/static/docs/MirageWeb.Router.Helpers.html
  50. 308
      assets/static/docs/MirageWeb.Router.html
  51. 273
      assets/static/docs/MirageWeb.SettingController.html
  52. 263
      assets/static/docs/MirageWeb.SettingView.html
  53. 263
      assets/static/docs/MirageWeb.SharedView.html
  54. 246
      assets/static/docs/MirageWeb.Telemetry.html
  55. 360
      assets/static/docs/MirageWeb.TopicController.html
  56. 263
      assets/static/docs/MirageWeb.TopicView.html
  57. 322
      assets/static/docs/MirageWeb.UserAuth.html
  58. 244
      assets/static/docs/MirageWeb.UserConfirmationController.html
  59. 263
      assets/static/docs/MirageWeb.UserConfirmationView.html
  60. 215
      assets/static/docs/MirageWeb.UserRegistrationController.html
  61. 263
      assets/static/docs/MirageWeb.UserRegistrationView.html
  62. 273
      assets/static/docs/MirageWeb.UserResetPasswordController.html
  63. 263
      assets/static/docs/MirageWeb.UserResetPasswordView.html
  64. 244
      assets/static/docs/MirageWeb.UserSessionController.html
  65. 263
      assets/static/docs/MirageWeb.UserSessionView.html
  66. 244
      assets/static/docs/MirageWeb.UserSettingsController.html
  67. 263
      assets/static/docs/MirageWeb.UserSettingsView.html
  68. 126
      assets/static/docs/MirageWeb.UserSocket.html
  69. 263
      assets/static/docs/MirageWeb.UserView.html
  70. 374
      assets/static/docs/MirageWeb.html
  71. 620
      assets/static/docs/api-reference.html
  72. 2
      assets/static/docs/dist/app-60a0c9f10e9e52eae31f.js
  73. 3
      assets/static/docs/dist/elixir-9f91ebe876dc01d67920.css
  74. BIN
      assets/static/docs/dist/html/fonts/icomoon.eot
  75. 19
      assets/static/docs/dist/html/fonts/icomoon.svg
  76. BIN
      assets/static/docs/dist/html/fonts/icomoon.ttf
  77. BIN
      assets/static/docs/dist/html/fonts/icomoon.woff
  78. 1
      assets/static/docs/dist/search_items-25ed0032d3.js
  79. 1
      assets/static/docs/dist/sidebar_items-86ebe4f0ec.js
  80. 10
      assets/static/docs/index.html
  81. 114
      assets/static/docs/readme.html
  82. 118
      assets/static/docs/search.html
  83. 28
      mix.exs
  84. 5
      mix.lock

80
assets/static/docs/.build

@ -0,0 +1,80 @@
404.html
Mirage.Accounts.User.html
Mirage.Accounts.UserNotifier.html
Mirage.Accounts.UserToken.html
Mirage.Accounts.html
Mirage.Links.Link.html
Mirage.Links.LinkTopic.html
Mirage.Links.html
Mirage.Lists.List.html
Mirage.Lists.html
Mirage.Markdown.html
Mirage.Notes.Note.html
Mirage.Notes.NoteLink.html
Mirage.Notes.NoteNote.html
Mirage.Notes.NoteTopic.html
Mirage.Notes.html
Mirage.Release.html
Mirage.Repo.html
Mirage.Settings.Setting.html
Mirage.Settings.html
Mirage.Slug.html
Mirage.Tags.html
Mirage.Topics.Topic.html
Mirage.Topics.html
Mirage.html
MirageWeb.BlogLive.html
MirageWeb.Endpoint.html
MirageWeb.ErrorHelpers.html
MirageWeb.ErrorView.html
MirageWeb.Gettext.html
MirageWeb.GotoAnythingLive.html
MirageWeb.HomeLive.html
MirageWeb.InboxLive.Index.html
MirageWeb.InboxLive.ItemComponent.html
MirageWeb.LayoutView.html
MirageWeb.LinkLive.FormComponent.html
MirageWeb.LinkLive.Index.html
MirageWeb.LinkLive.Show.html
MirageWeb.ListLive.FormComponent.html
MirageWeb.ListLive.Index.html
MirageWeb.ListLive.Show.html
MirageWeb.LiveHelpers.html
MirageWeb.ModalComponent.html
MirageWeb.NoteLive.FormComponent.html
MirageWeb.NoteLive.Index.html
MirageWeb.NoteLive.Show.html
MirageWeb.Router.Helpers.html
MirageWeb.Router.html
MirageWeb.SettingController.html
MirageWeb.SettingView.html
MirageWeb.SharedView.html
MirageWeb.Telemetry.html
MirageWeb.TopicController.html
MirageWeb.TopicView.html
MirageWeb.UserAuth.html
MirageWeb.UserConfirmationController.html
MirageWeb.UserConfirmationView.html
MirageWeb.UserRegistrationController.html
MirageWeb.UserRegistrationView.html
MirageWeb.UserResetPasswordController.html
MirageWeb.UserResetPasswordView.html
MirageWeb.UserSessionController.html
MirageWeb.UserSessionView.html
MirageWeb.UserSettingsController.html
MirageWeb.UserSettingsView.html
MirageWeb.UserSocket.html
MirageWeb.UserView.html
MirageWeb.html
api-reference.html
dist/app-60a0c9f10e9e52eae31f.js
dist/elixir-9f91ebe876dc01d67920.css
dist/html/fonts/icomoon.eot
dist/html/fonts/icomoon.svg
dist/html/fonts/icomoon.ttf
dist/html/fonts/icomoon.woff
dist/search_items-25ed0032d3.js
dist/sidebar_items-86ebe4f0ec.js
index.html
readme.html
search.html

121
assets/static/docs/404.html

@ -0,0 +1,121 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="ExDoc v0.23.0">
<meta name="project" content="Mirage v0.70.1">
<meta name="author" content="Inhji">
<title>404 — Mirage v0.70.1</title>
<link rel="stylesheet" href="dist/elixir-9f91ebe876dc01d67920.css" />
<script src="dist/sidebar_items-86ebe4f0ec.js"></script>
<script src="docs_config.js"></script>
<script async src="dist/app-60a0c9f10e9e52eae31f.js"></script>
</head>
<body data-type="extras">
<script>try { if(localStorage.getItem('night-mode') === 'true') document.body.className += ' night-mode'; } catch (e) { }</script>
<div class="main">
<button class="sidebar-button sidebar-toggle">
<span class="icon-menu" title="Collapse/expand sidebar"></span>
</button>
<section class="sidebar">
<form class="sidebar-search" action="search.html">
<button type="submit" class="search-button" aria-label="Submit Search">
<span class="icon-search" aria-hidden="true" title="Submit search"></span>
</button>
<button type="button" tabindex="-1" class="search-close-button" aria-label="Cancel Search">
<span class="icon-cross" aria-hidden="true" title="Cancel search"></span>
</button>
<label class="search-label">
<input name="q" type="text" id="search-list" class="search-input" placeholder="Search..." aria-label="Input your search terms" autocomplete="off" />
</label>
</form>
<div class="autocomplete">
<div class="autocomplete-results">
</div>
</div>
<div class="sidebar-header">
<div class="sidebar-projectDetails">
<a href="https://git.inhji.de/inhji/mirage" class="sidebar-projectName">
Mirage
</a>
<strong class="sidebar-projectVersion">
v0.70.1
</strong>
</div>
</div>
<ul class="sidebar-listNav">
<li><a id="extras-list" href="#full-list">Pages</a></li>
<li><a id="modules-list" href="#full-list">Modules</a></li>
</ul>
<div class="gradient"></div>
<ul id="full-list" class="sidebar-fullList"></ul>
</section>
<section class="content">
<div class="content-outer">
<div id="content" class="content-inner">
<h2>Page not found</h2>
<p>Sorry, but the page you were trying to get to, does not exist. You
may want to try searching this site using the sidebar
or using our <a href="api-reference.html">API Reference</a> page
to find what you were looking for.</p>
<footer class="footer">
<p>
<span class="line">
Built using
<a href="https://github.com/elixir-lang/ex_doc" title="ExDoc" target="_blank" rel="help noopener">ExDoc</a> (v0.23.0) for the
<a href="https://elixir-lang.org" title="Elixir" target="_blank">Elixir programming language</a>.
</span>
<span class="line">
Designed by
<a href="https://twitter.com/dignifiedquire" target="_blank" rel="noopener" title="@dignifiedquire">Friedel Ziegelmayer</a>.
</span>
</p>
<p>
<a href="api-reference.html" title="API reference" class="line footer-button">API Reference</a>
<button class="line footer-button display-shortcuts-help">
Display keyboard shortcuts
</button>
<button class="line footer-button night-mode-toggle">
Toggle night mode
</button>
<button class="line footer-button display-quick-switch">
Go to a HexDocs package
</button>
<button class="line footer-button tooltips-toggle">
<span class="tooltips-option-disable">Disable tooltips</span>
<span class="tooltips-option-enable">Enable tooltips</span>
</button>
</p>
</footer>
</div>
</div>
</section>
</div>
</body>
</html>

369
assets/static/docs/Mirage.Accounts.User.html

@ -0,0 +1,369 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="ExDoc v0.23.0">
<meta name="project" content="Mirage v0.70.1">
<meta name="author" content="Inhji">
<title>Mirage.Accounts.User — Mirage v0.70.1</title>
<link rel="stylesheet" href="dist/elixir-9f91ebe876dc01d67920.css" />
<script src="dist/sidebar_items-86ebe4f0ec.js"></script>
<script src="docs_config.js"></script>
<script async src="dist/app-60a0c9f10e9e52eae31f.js"></script>
</head>
<body data-type="modules">
<script>try { if(localStorage.getItem('night-mode') === 'true') document.body.className += ' night-mode'; } catch (e) { }</script>
<div class="main">
<button class="sidebar-button sidebar-toggle">
<span class="icon-menu" title="Collapse/expand sidebar"></span>
</button>
<section class="sidebar">
<form class="sidebar-search" action="search.html">
<button type="submit" class="search-button" aria-label="Submit Search">
<span class="icon-search" aria-hidden="true" title="Submit search"></span>
</button>
<button type="button" tabindex="-1" class="search-close-button" aria-label="Cancel Search">
<span class="icon-cross" aria-hidden="true" title="Cancel search"></span>
</button>
<label class="search-label">
<input name="q" type="text" id="search-list" class="search-input" placeholder="Search..." aria-label="Input your search terms" autocomplete="off" />
</label>
</form>
<div class="autocomplete">
<div class="autocomplete-results">
</div>
</div>
<div class="sidebar-header">
<div class="sidebar-projectDetails">
<a href="https://git.inhji.de/inhji/mirage" class="sidebar-projectName">
Mirage
</a>
<strong class="sidebar-projectVersion">
v0.70.1
</strong>
</div>
</div>
<ul class="sidebar-listNav">
<li><a id="extras-list" href="#full-list">Pages</a></li>
<li><a id="modules-list" href="#full-list">Modules</a></li>
</ul>
<div class="gradient"></div>
<ul id="full-list" class="sidebar-fullList"></ul>
</section>
<section class="content">
<div class="content-outer">
<div id="content" class="content-inner">
<h1>
Mirage.Accounts.User <small class="app-vsn">(Mirage v0.70.1)</small>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user.ex#L1" title="View Source" class="view-source" rel="help">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</h1>
<section id="summary" class="details-list">
<h1 class="section-heading">
<a class="hover-link" href="#summary">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this section</span>
</a>
Summary
</h1>
<div class="summary-functions summary">
<h2>
<a href="#functions">Functions</a>
</h2>
<div class="summary-row">
<div class="summary-signature">
<a href="#confirm_changeset/1">confirm_changeset(user)</a>
</div>
<div class="summary-synopsis"><p>Confirms the account by setting <code class="inline">confirmed_at</code>.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#email_changeset/2">email_changeset(user, attrs)</a>
</div>
<div class="summary-synopsis"><p>A user changeset for changing the email.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#password_changeset/3">password_changeset(user, attrs, opts \\ [])</a>
</div>
<div class="summary-synopsis"><p>A user changeset for changing the password.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#registration_changeset/3">registration_changeset(user, attrs, opts \\ [])</a>
</div>
<div class="summary-synopsis"><p>A user changeset for registration.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#valid_password?/2">valid_password?(arg1, password)</a>
</div>
<div class="summary-synopsis"><p>Verifies the password.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#validate_current_password/2">validate_current_password(changeset, password)</a>
</div>
<div class="summary-synopsis"><p>Validates the current password otherwise adds an error to the changeset.</p></div>
</div>
</div>
</section>
<section id="functions" class="details-list">
<h1 class="section-heading">
<a class="hover-link" href="#functions">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this section</span>
</a>
Functions
</h1>
<div class="functions-list">
<section class="detail" id="confirm_changeset/1">
<div class="detail-header">
<a href="#confirm_changeset/1" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">confirm_changeset(user)</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user.ex#L108" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Confirms the account by setting <code class="inline">confirmed_at</code>.</p>
</section>
</section>
<section class="detail" id="email_changeset/2">
<div class="detail-header">
<a href="#email_changeset/2" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">email_changeset(user, attrs)</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user.ex#L76" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>A user changeset for changing the email.</p><p>It requires the email to change otherwise an error is added.</p>
</section>
</section>
<section class="detail" id="password_changeset/3">
<span id="password_changeset/2"></span>
<div class="detail-header">
<a href="#password_changeset/3" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">password_changeset(user, attrs, opts \\ [])</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user.ex#L98" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>A user changeset for changing the password.</p><h2 id="password_changeset/3-options" class="section-heading">
<a href="#password_changeset/3-options" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Options
</h2>
<ul><li><code class="inline">:hash_password</code> - Hashes the password so it can be stored securely
in the database and ensures the password field is cleared to prevent
leaks in the logs. If password hashing is not needed and clearing the
password field is not desired (like when using this changeset for
validations on a LiveView form), this option can be set to <code class="inline">false</code>.
Defaults to <code class="inline">true</code>.</li></ul>
</section>
</section>
<section class="detail" id="registration_changeset/3">
<span id="registration_changeset/2"></span>
<div class="detail-header">
<a href="#registration_changeset/3" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">registration_changeset(user, attrs, opts \\ [])</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user.ex#L32" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>A user changeset for registration.</p><p>It is important to validate the length of both email and password.
Otherwise databases may truncate the email without warnings, which
could lead to unpredictable or insecure behaviour. Long passwords may
also be very expensive to hash for certain algorithms.</p><h2 id="registration_changeset/3-options" class="section-heading">
<a href="#registration_changeset/3-options" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a>
Options
</h2>
<ul><li><code class="inline">:hash_password</code> - Hashes the password so it can be stored securely
in the database and ensures the password field is cleared to prevent
leaks in the logs. If password hashing is not needed and clearing the
password field is not desired (like when using this changeset for
validations on a LiveView form), this option can be set to <code class="inline">false</code>.
Defaults to <code class="inline">true</code>.</li></ul>
</section>
</section>
<section class="detail" id="valid_password?/2">
<div class="detail-header">
<a href="#valid_password?/2" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">valid_password?(arg1, password)</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user.ex#L119" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Verifies the password.</p><p>If there is no user or the user doesn't have a password, we call
<a href="https://hexdocs.pm/bcrypt_elixir/2.3.0/Bcrypt.html#no_user_verify/0"><code class="inline">Bcrypt.no_user_verify/0</code></a> to avoid timing attacks.</p>
</section>
</section>
<section class="detail" id="validate_current_password/2">
<div class="detail-header">
<a href="#validate_current_password/2" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">validate_current_password(changeset, password)</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user.ex#L132" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Validates the current password otherwise adds an error to the changeset.</p>
</section>
</section>
</div>
</section>
<footer class="footer">
<p>
<span class="line">
Built using
<a href="https://github.com/elixir-lang/ex_doc" title="ExDoc" target="_blank" rel="help noopener">ExDoc</a> (v0.23.0) for the
<a href="https://elixir-lang.org" title="Elixir" target="_blank">Elixir programming language</a>.
</span>
<span class="line">
Designed by
<a href="https://twitter.com/dignifiedquire" target="_blank" rel="noopener" title="@dignifiedquire">Friedel Ziegelmayer</a>.
</span>
</p>
<p>
<a href="api-reference.html" title="API reference" class="line footer-button">API Reference</a>
<button class="line footer-button display-shortcuts-help">
Display keyboard shortcuts
</button>
<button class="line footer-button night-mode-toggle">
Toggle night mode
</button>
<button class="line footer-button display-quick-switch">
Go to a HexDocs package
</button>
<button class="line footer-button tooltips-toggle">
<span class="tooltips-option-disable">Disable tooltips</span>
<span class="tooltips-option-enable">Enable tooltips</span>
</button>
</p>
</footer>
</div>
</div>
</section>
</div>
</body>
</html>

250
assets/static/docs/Mirage.Accounts.UserNotifier.html

@ -0,0 +1,250 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="ExDoc v0.23.0">
<meta name="project" content="Mirage v0.70.1">
<meta name="author" content="Inhji">
<title>Mirage.Accounts.UserNotifier — Mirage v0.70.1</title>
<link rel="stylesheet" href="dist/elixir-9f91ebe876dc01d67920.css" />
<script src="dist/sidebar_items-86ebe4f0ec.js"></script>
<script src="docs_config.js"></script>
<script async src="dist/app-60a0c9f10e9e52eae31f.js"></script>
</head>
<body data-type="modules">
<script>try { if(localStorage.getItem('night-mode') === 'true') document.body.className += ' night-mode'; } catch (e) { }</script>
<div class="main">
<button class="sidebar-button sidebar-toggle">
<span class="icon-menu" title="Collapse/expand sidebar"></span>
</button>
<section class="sidebar">
<form class="sidebar-search" action="search.html">
<button type="submit" class="search-button" aria-label="Submit Search">
<span class="icon-search" aria-hidden="true" title="Submit search"></span>
</button>
<button type="button" tabindex="-1" class="search-close-button" aria-label="Cancel Search">
<span class="icon-cross" aria-hidden="true" title="Cancel search"></span>
</button>
<label class="search-label">
<input name="q" type="text" id="search-list" class="search-input" placeholder="Search..." aria-label="Input your search terms" autocomplete="off" />
</label>
</form>
<div class="autocomplete">
<div class="autocomplete-results">
</div>
</div>
<div class="sidebar-header">
<div class="sidebar-projectDetails">
<a href="https://git.inhji.de/inhji/mirage" class="sidebar-projectName">
Mirage
</a>
<strong class="sidebar-projectVersion">
v0.70.1
</strong>
</div>
</div>
<ul class="sidebar-listNav">
<li><a id="extras-list" href="#full-list">Pages</a></li>
<li><a id="modules-list" href="#full-list">Modules</a></li>
</ul>
<div class="gradient"></div>
<ul id="full-list" class="sidebar-fullList"></ul>
</section>
<section class="content">
<div class="content-outer">
<div id="content" class="content-inner">
<h1>
Mirage.Accounts.UserNotifier <small class="app-vsn">(Mirage v0.70.1)</small>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user_notifier.ex#L1" title="View Source" class="view-source" rel="help">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</h1>
<section id="summary" class="details-list">
<h1 class="section-heading">
<a class="hover-link" href="#summary">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this section</span>
</a>
Summary
</h1>
<div class="summary-functions summary">
<h2>
<a href="#functions">Functions</a>
</h2>
<div class="summary-row">
<div class="summary-signature">
<a href="#deliver_confirmation_instructions/2">deliver_confirmation_instructions(user, url)</a>
</div>
<div class="summary-synopsis"><p>Deliver instructions to confirm account.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#deliver_reset_password_instructions/2">deliver_reset_password_instructions(user, url)</a>
</div>
<div class="summary-synopsis"><p>Deliver instructions to reset a user password.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#deliver_update_email_instructions/2">deliver_update_email_instructions(user, url)</a>
</div>
<div class="summary-synopsis"><p>Deliver instructions to update a user email.</p></div>
</div>
</div>
</section>
<section id="functions" class="details-list">
<h1 class="section-heading">
<a class="hover-link" href="#functions">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this section</span>
</a>
Functions
</h1>
<div class="functions-list">
<section class="detail" id="deliver_confirmation_instructions/2">
<div class="detail-header">
<a href="#deliver_confirmation_instructions/2" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">deliver_confirmation_instructions(user, url)</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user_notifier.ex#L17" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Deliver instructions to confirm account.</p>
</section>
</section>
<section class="detail" id="deliver_reset_password_instructions/2">
<div class="detail-header">
<a href="#deliver_reset_password_instructions/2" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">deliver_reset_password_instructions(user, url)</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user_notifier.ex#L37" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Deliver instructions to reset a user password.</p>
</section>
</section>
<section class="detail" id="deliver_update_email_instructions/2">
<div class="detail-header">
<a href="#deliver_update_email_instructions/2" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">deliver_update_email_instructions(user, url)</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user_notifier.ex#L57" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Deliver instructions to update a user email.</p>
</section>
</section>
</div>
</section>
<footer class="footer">
<p>
<span class="line">
Built using
<a href="https://github.com/elixir-lang/ex_doc" title="ExDoc" target="_blank" rel="help noopener">ExDoc</a> (v0.23.0) for the
<a href="https://elixir-lang.org" title="Elixir" target="_blank">Elixir programming language</a>.
</span>
<span class="line">
Designed by
<a href="https://twitter.com/dignifiedquire" target="_blank" rel="noopener" title="@dignifiedquire">Friedel Ziegelmayer</a>.
</span>
</p>
<p>
<a href="api-reference.html" title="API reference" class="line footer-button">API Reference</a>
<button class="line footer-button display-shortcuts-help">
Display keyboard shortcuts
</button>
<button class="line footer-button night-mode-toggle">
Toggle night mode
</button>
<button class="line footer-button display-quick-switch">
Go to a HexDocs package
</button>
<button class="line footer-button tooltips-toggle">
<span class="tooltips-option-disable">Disable tooltips</span>
<span class="tooltips-option-enable">Enable tooltips</span>
</button>
</p>
</footer>
</div>
</div>
</section>
</div>
</body>
</html>

381
assets/static/docs/Mirage.Accounts.UserToken.html

@ -0,0 +1,381 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="ExDoc v0.23.0">
<meta name="project" content="Mirage v0.70.1">
<meta name="author" content="Inhji">
<title>Mirage.Accounts.UserToken — Mirage v0.70.1</title>
<link rel="stylesheet" href="dist/elixir-9f91ebe876dc01d67920.css" />
<script src="dist/sidebar_items-86ebe4f0ec.js"></script>
<script src="docs_config.js"></script>
<script async src="dist/app-60a0c9f10e9e52eae31f.js"></script>
</head>
<body data-type="modules">
<script>try { if(localStorage.getItem('night-mode') === 'true') document.body.className += ' night-mode'; } catch (e) { }</script>
<div class="main">
<button class="sidebar-button sidebar-toggle">
<span class="icon-menu" title="Collapse/expand sidebar"></span>
</button>
<section class="sidebar">
<form class="sidebar-search" action="search.html">
<button type="submit" class="search-button" aria-label="Submit Search">
<span class="icon-search" aria-hidden="true" title="Submit search"></span>
</button>
<button type="button" tabindex="-1" class="search-close-button" aria-label="Cancel Search">
<span class="icon-cross" aria-hidden="true" title="Cancel search"></span>
</button>
<label class="search-label">
<input name="q" type="text" id="search-list" class="search-input" placeholder="Search..." aria-label="Input your search terms" autocomplete="off" />
</label>
</form>
<div class="autocomplete">
<div class="autocomplete-results">
</div>
</div>
<div class="sidebar-header">
<div class="sidebar-projectDetails">
<a href="https://git.inhji.de/inhji/mirage" class="sidebar-projectName">
Mirage
</a>
<strong class="sidebar-projectVersion">
v0.70.1
</strong>
</div>
</div>
<ul class="sidebar-listNav">
<li><a id="extras-list" href="#full-list">Pages</a></li>
<li><a id="modules-list" href="#full-list">Modules</a></li>
</ul>
<div class="gradient"></div>
<ul id="full-list" class="sidebar-fullList"></ul>
</section>
<section class="content">
<div class="content-outer">
<div id="content" class="content-inner">
<h1>
Mirage.Accounts.UserToken <small class="app-vsn">(Mirage v0.70.1)</small>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user_token.ex#L1" title="View Source" class="view-source" rel="help">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</h1>
<section id="summary" class="details-list">
<h1 class="section-heading">
<a class="hover-link" href="#summary">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this section</span>
</a>
Summary
</h1>
<div class="summary-functions summary">
<h2>
<a href="#functions">Functions</a>
</h2>
<div class="summary-row">
<div class="summary-signature">
<a href="#build_email_token/2">build_email_token(user, context)</a>
</div>
<div class="summary-synopsis"><p>Builds a token with a hashed counter part.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#build_session_token/1">build_session_token(user)</a>
</div>
<div class="summary-synopsis"><p>Generates a token that will be stored in a signed place,
such as session or cookie. As they are signed, those
tokens do not need to be hashed.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#token_and_context_query/2">token_and_context_query(token, context)</a>
</div>
<div class="summary-synopsis"><p>Returns the given token with the given context.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#user_and_contexts_query/2">user_and_contexts_query(user, contexts)</a>
</div>
<div class="summary-synopsis"><p>Gets all tokens for the given user for the given contexts.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#verify_change_email_token_query/2">verify_change_email_token_query(token, context)</a>
</div>
<div class="summary-synopsis"><p>Checks if the token is valid and returns its underlying lookup query.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#verify_email_token_query/2">verify_email_token_query(token, context)</a>
</div>
<div class="summary-synopsis"><p>Checks if the token is valid and returns its underlying lookup query.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#verify_session_token_query/1">verify_session_token_query(token)</a>
</div>
<div class="summary-synopsis"><p>Checks if the token is valid and returns its underlying lookup query.</p></div>
</div>
</div>
</section>
<section id="functions" class="details-list">
<h1 class="section-heading">
<a class="hover-link" href="#functions">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this section</span>
</a>
Functions
</h1>
<div class="functions-list">
<section class="detail" id="build_email_token/2">
<div class="detail-header">
<a href="#build_email_token/2" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">build_email_token(user, context)</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user_token.ex#L57" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Builds a token with a hashed counter part.</p><p>The non-hashed token is sent to the user email while the
hashed part is stored in the database, to avoid reconstruction.
The token is valid for a week as long as users don't change
their email.</p>
</section>
</section>
<section class="detail" id="build_session_token/1">
<div class="detail-header">
<a href="#build_session_token/1" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">build_session_token(user)</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user_token.ex#L29" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Generates a token that will be stored in a signed place,
such as session or cookie. As they are signed, those
tokens do not need to be hashed.</p>
</section>
</section>
<section class="detail" id="token_and_context_query/2">
<div class="detail-header">
<a href="#token_and_context_query/2" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">token_and_context_query(token, context)</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user_token.ex#L125" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Returns the given token with the given context.</p>
</section>
</section>
<section class="detail" id="user_and_contexts_query/2">
<div class="detail-header">
<a href="#user_and_contexts_query/2" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">user_and_contexts_query(user, contexts)</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user_token.ex#L132" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Gets all tokens for the given user for the given contexts.</p>
</section>
</section>
<section class="detail" id="verify_change_email_token_query/2">
<div class="detail-header">
<a href="#verify_change_email_token_query/2" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">verify_change_email_token_query(token, context)</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user_token.ex#L106" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Checks if the token is valid and returns its underlying lookup query.</p><p>The query returns the user token record.</p>
</section>
</section>
<section class="detail" id="verify_email_token_query/2">
<div class="detail-header">
<a href="#verify_email_token_query/2" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">verify_email_token_query(token, context)</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user_token.ex#L79" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Checks if the token is valid and returns its underlying lookup query.</p><p>The query returns the user found by the token.</p>
</section>
</section>
<section class="detail" id="verify_session_token_query/1">
<div class="detail-header">
<a href="#verify_session_token_query/1" class="detail-link" title="Link to this function">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this function</span>
</a>
<h1 class="signature">verify_session_token_query(token)</h1>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts/user_token.ex#L39" class="view-source" rel="help" title="View Source">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</div>
<section class="docstring">
<p>Checks if the token is valid and returns its underlying lookup query.</p><p>The query returns the user found by the token.</p>
</section>
</section>
</div>
</section>
<footer class="footer">
<p>
<span class="line">
Built using
<a href="https://github.com/elixir-lang/ex_doc" title="ExDoc" target="_blank" rel="help noopener">ExDoc</a> (v0.23.0) for the
<a href="https://elixir-lang.org" title="Elixir" target="_blank">Elixir programming language</a>.
</span>
<span class="line">
Designed by
<a href="https://twitter.com/dignifiedquire" target="_blank" rel="noopener" title="@dignifiedquire">Friedel Ziegelmayer</a>.
</span>
</p>
<p>
<a href="api-reference.html" title="API reference" class="line footer-button">API Reference</a>
<button class="line footer-button display-shortcuts-help">
Display keyboard shortcuts
</button>
<button class="line footer-button night-mode-toggle">
Toggle night mode
</button>
<button class="line footer-button display-quick-switch">
Go to a HexDocs package
</button>
<button class="line footer-button tooltips-toggle">
<span class="tooltips-option-disable">Disable tooltips</span>
<span class="tooltips-option-enable">Enable tooltips</span>
</button>
</p>
</footer>
</div>
</div>
</section>
</div>
</body>
</html>

922
assets/static/docs/Mirage.Accounts.html

@ -0,0 +1,922 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="generator" content="ExDoc v0.23.0">
<meta name="project" content="Mirage v0.70.1">
<meta name="author" content="Inhji">
<title>Mirage.Accounts — Mirage v0.70.1</title>
<link rel="stylesheet" href="dist/elixir-9f91ebe876dc01d67920.css" />
<script src="dist/sidebar_items-86ebe4f0ec.js"></script>
<script src="docs_config.js"></script>
<script async src="dist/app-60a0c9f10e9e52eae31f.js"></script>
</head>
<body data-type="modules">
<script>try { if(localStorage.getItem('night-mode') === 'true') document.body.className += ' night-mode'; } catch (e) { }</script>
<div class="main">
<button class="sidebar-button sidebar-toggle">
<span class="icon-menu" title="Collapse/expand sidebar"></span>
</button>
<section class="sidebar">
<form class="sidebar-search" action="search.html">
<button type="submit" class="search-button" aria-label="Submit Search">
<span class="icon-search" aria-hidden="true" title="Submit search"></span>
</button>
<button type="button" tabindex="-1" class="search-close-button" aria-label="Cancel Search">
<span class="icon-cross" aria-hidden="true" title="Cancel search"></span>
</button>
<label class="search-label">
<input name="q" type="text" id="search-list" class="search-input" placeholder="Search..." aria-label="Input your search terms" autocomplete="off" />
</label>
</form>
<div class="autocomplete">
<div class="autocomplete-results">
</div>
</div>
<div class="sidebar-header">
<div class="sidebar-projectDetails">
<a href="https://git.inhji.de/inhji/mirage" class="sidebar-projectName">
Mirage
</a>
<strong class="sidebar-projectVersion">
v0.70.1
</strong>
</div>
</div>
<ul class="sidebar-listNav">
<li><a id="extras-list" href="#full-list">Pages</a></li>
<li><a id="modules-list" href="#full-list">Modules</a></li>
</ul>
<div class="gradient"></div>
<ul id="full-list" class="sidebar-fullList"></ul>
</section>
<section class="content">
<div class="content-outer">
<div id="content" class="content-inner">
<h1>
Mirage.Accounts <small class="app-vsn">(Mirage v0.70.1)</small>
<a href="https://git.inhji.de/inhji/mirage/src/branch/master/lib/mirage/accounts.ex#L1" title="View Source" class="view-source" rel="help">
<span class="icon-code" aria-hidden="true"></span>
<span class="sr-only">View Source</span>
</a>
</h1>
<section id="moduledoc">
<p>The Accounts context.</p>
</section>
<section id="summary" class="details-list">
<h1 class="section-heading">
<a class="hover-link" href="#summary">
<span class="icon-link" aria-hidden="true"></span>
<span class="sr-only">Link to this section</span>
</a>
Summary
</h1>
<div class="summary-functions summary">
<h2>
<a href="#functions">Functions</a>
</h2>
<div class="summary-row">
<div class="summary-signature">
<a href="#apply_user_email/3">apply_user_email(user, password, attrs)</a>
</div>
<div class="summary-synopsis"><p>Emulates that the email will change without actually changing
it in the database.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#change_user_email/2">change_user_email(user, attrs \\ %{})</a>
</div>
<div class="summary-synopsis"><p>Returns an <code class="inline">%Ecto.Changeset{}</code> for changing the user email.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#change_user_password/2">change_user_password(user, attrs \\ %{})</a>
</div>
<div class="summary-synopsis"><p>Returns an <code class="inline">%Ecto.Changeset{}</code> for changing the user password.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#change_user_registration/2">change_user_registration(user, attrs \\ %{})</a>
</div>
<div class="summary-synopsis"><p>Returns an <code class="inline">%Ecto.Changeset{}</code> for tracking user changes.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#confirm_user/1">confirm_user(token)</a>
</div>
<div class="summary-synopsis"><p>Confirms a user by the given token.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#delete_session_token/1">delete_session_token(token)</a>
</div>
<div class="summary-synopsis"><p>Deletes the signed token with the given context.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#deliver_update_email_instructions/3">deliver_update_email_instructions(user, current_email, update_email_url_fun)</a>
</div>
<div class="summary-synopsis"><p>Delivers the update email instructions to the given user.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#deliver_user_confirmation_instructions/2">deliver_user_confirmation_instructions(user, confirmation_url_fun)</a>
</div>
<div class="summary-synopsis"><p>Delivers the confirmation email instructions to the given user.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#deliver_user_reset_password_instructions/2">deliver_user_reset_password_instructions(user, reset_password_url_fun)</a>
</div>
<div class="summary-synopsis"><p>Delivers the reset password email to the given user.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#generate_user_session_token/1">generate_user_session_token(user)</a>
</div>
<div class="summary-synopsis"><p>Generates a session token.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#get_user/1">get_user(id)</a>
</div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#get_user!/1">get_user!(id)</a>
</div>
<div class="summary-synopsis"><p>Gets a single user.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#get_user_by_email/1">get_user_by_email(email)</a>
</div>
<div class="summary-synopsis"><p>Gets a user by email.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#get_user_by_email_and_password/2">get_user_by_email_and_password(email, password)</a>
</div>
<div class="summary-synopsis"><p>Gets a user by email and password.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#get_user_by_reset_password_token/1">get_user_by_reset_password_token(token)</a>
</div>
<div class="summary-synopsis"><p>Gets the user by reset password token.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#get_user_by_session_token/1">get_user_by_session_token(token)</a>
</div>
<div class="summary-synopsis"><p>Gets the user with the given signed token.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#has_user?/0">has_user?()</a>
</div>
<div class="summary-synopsis"><p>Returns true if a user has been created, false otherwise.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#register_user/1">register_user(attrs)</a>
</div>
<div class="summary-synopsis"><p>Registers a user.</p></div>
</div>
<div class="summary-row">
<div class="summary-signature">
<a href="#reset_user_password/2">reset_user_password(user, attrs)</a>
</div>
<div class="summary-synopsis"><p>Resets the user password.</p><