{"id":14989854,"url":"https://github.com/codingjoe/django-mail-auth","last_synced_at":"2025-04-05T10:07:31.050Z","repository":{"id":34635206,"uuid":"181044033","full_name":"codingjoe/django-mail-auth","owner":"codingjoe","description":"Django authentication via login URLs, no passwords required","archived":false,"fork":false,"pushed_at":"2025-02-27T17:55:46.000Z","size":192,"stargazers_count":65,"open_issues_count":0,"forks_count":4,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-29T09:08:36.034Z","etag":null,"topics":["auth0","authentication","django","django-authentication","noauth","otp","password"],"latest_commit_sha":null,"homepage":"https://django-mail-auth.rtfd.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codingjoe.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":"CONTRIBUTING.rst","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"codingjoe","buy_me_a_coffee":"codingjoe","custom":"https://www.paypal.me/codingjoe"}},"created_at":"2019-04-12T16:21:44.000Z","updated_at":"2025-03-27T04:35:16.000Z","dependencies_parsed_at":"2023-12-18T09:25:44.213Z","dependency_job_id":"c5822e62-ebda-429d-9f44-b4add769d16a","html_url":"https://github.com/codingjoe/django-mail-auth","commit_stats":{"total_commits":124,"total_committers":7,"mean_commits":"17.714285714285715","dds":0.5806451612903225,"last_synced_commit":"84a5cfcd5045c2f2355687c944c5cca094aa07de"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingjoe%2Fdjango-mail-auth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingjoe%2Fdjango-mail-auth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingjoe%2Fdjango-mail-auth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codingjoe%2Fdjango-mail-auth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codingjoe","download_url":"https://codeload.github.com/codingjoe/django-mail-auth/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247318744,"owners_count":20919484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["auth0","authentication","django","django-authentication","noauth","otp","password"],"created_at":"2024-09-24T14:19:01.902Z","updated_at":"2025-04-05T10:07:31.032Z","avatar_url":"https://github.com/codingjoe.png","language":"Python","readme":"================\nDjango Mail Auth\n================\n\n|version| |docs| |coverage| |license|\n\n.. figure:: sample.png\n    :width: 425\n    :alt: screenshot from a login form\n\nDjango Mail Auth is a lightweight authentication backend for Django,\nthat does not require users to remember passwords.\n\nDjango Mail Auth features:\n\n- custom user model support\n- drop in Django admin support\n- drop in Django User replacement\n- drop in Wagtail login replacement\n- extendable SMS support\n\nThis project was inspired by:\n\n- `Is it time for password-less login?`_ by `Ben Brown`_\n- `LOGIN WITHOUT PASSWORD MOST SECURE | WAIT.. WHAT?`_ by `Joris Snoek`_\n- `django-nopassword`_ by `Rolf Erik Lekang`_\n\n\n.. _`Rolf Erik Lekang`: http://rolflekang.com\n.. _`django-nopassword`: https://github.com/relekang/django-nopassword\n.. _`Is it time for password-less login?`: http://notes.xoxco.com/post/27999787765/is-it-time-for-password-less-login\n.. _`LOGIN WITHOUT PASSWORD MOST SECURE | WAIT.. WHAT?`: https://www.lucius.digital/en/blog/login-without-password-most-secure-wait-what\n.. _`Ben Brown`: http://twitter.com/benbrown\n.. _`Joris Snoek`: https://twitter.com/lucius_digital\n\nInstallation\n------------\n\nRun this command to install ``django-mail-auth``::\n\n    python3 -m pip install django-mail-auth[wagtail]\n\nSetup\n-----\n\nFirst add ``mailauth`` to you installed apps:\n\n.. code-block:: python\n\n    INSTALLED_APPS = [\n        # Django's builtin apps…\n\n        'mailauth',\n\n        'mailauth.contrib.admin',  # optional\n        'mailauth.contrib.user',  # optional\n\n        # optional, must be included before \"wagtail.admin\"\n        'mailauth.contrib.wagtail',\n\n\n        # other apps…\n    ]\n\n``mailauth.contrib.admin`` is optional and will replace the admin's login\nwith token based authentication too.\n\n``mailauth.contrib.user`` is optional and provides a new Django User model.\nThe new User model needs to be enabled via the ``AUTH_USER_MODEL`` setting:\n\n.. code-block:: python\n\n    # This setting should be either \"EmailUser\" or\n    # any custom subclass of \"AbstractEmailUser\"\n    AUTH_USER_MODEL = 'mailauth_user.EmailUser'\n\n    # optional, Wagtail only\n    WAGTAILUSERS_PASSWORD_ENABLED = False\n\n\nNext you will need to add the new authentication backend:\n\n.. code-block:: python\n\n    AUTHENTICATION_BACKENDS = (\n        # default, but now optional\n        # This should be removed if you use mailauth.contrib.user or any other\n        # custom user model that does not have a username/password\n        'django.contrib.auth.backends.ModelBackend',\n\n        # The new access token based authentication backend\n        'mailauth.backends.MailAuthBackend',\n    )\n\nDjango's ``ModelBackend`` is only needed, if you still want to support\npassword based authentication. If you don't, simply remove it from the list.\n\nLast but not least, go to your URL root configuration ``urls.py`` and add the following:\n\n.. code-block:: python\n\n    from django.urls import path\n\n\n    urlpatterns = [\n        path('accounts/', include('mailauth.urls')),\n\n        # optional, must be before \"wagtail.admin.urls\"\n        path('', include('mailauth.contrib.wagtail.urls')),\n    ]\n\nThat's it!\n\n.. note:: Don't forget to setup you Email backend!\n\n.. |version| image:: https://img.shields.io/pypi/v/django-mail-auth.svg\n   :target: https://pypi.python.org/pypi/django-mail-auth/\n.. |coverage| image:: https://codecov.io/gh/codingjoe/django-mail-auth/branch/main/graph/badge.svg\n   :target: https://codecov.io/gh/codingjoe/django-mail-auth\n.. |license| image:: https://img.shields.io/badge/license-MIT-blue.svg\n   :target: :target: https://raw.githubusercontent.com/codingjoe/django-mail-auth/main/LICENSE\n.. |docs| image:: https://readthedocs.org/projects/django-mail-auth/badge/?version=latest\n   :target: https://django-mail-auth.readthedocs.io/en/latest/?badge=latest\n   :alt: Documentation Status\n","funding_links":["https://github.com/sponsors/codingjoe","https://buymeacoffee.com/codingjoe","https://www.paypal.me/codingjoe"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingjoe%2Fdjango-mail-auth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodingjoe%2Fdjango-mail-auth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodingjoe%2Fdjango-mail-auth/lists"}