Socket
Socket
Sign inDemoInstall

django-spaday

Package Overview
Dependencies
5
Maintainers
1
Alerts
File Explorer

Install Socket

Detect and block malicious and high-risk dependencies

Install

    django-spaday

A Django package that provides 'out-of-the-box' JWT auth, user, group, and permission APIs for use in Single Page Apps (eg - Vue, React).


Maintainers
1

Readme

Django SPA Day

A Django package that provides "out-of-the-box" basic auth, user, group, and permission APIs for use in Single Page Apps (eg - Vue, React).

So easy, you can take a SPA day!

django-spaday deliberately stays below version 1.x.x to signal that every new version may potentially have breaking changes.

NOTE: django-spaday is very opinionated as its for internal use.

Features

  • Auth (login/logout/change password)
  • User management w/permissions
  • Group management w/permissions
  • Audit Log (optional)
  • Django Celery Results (optional)

Requirements

Assumes you have started from this cookiecutter-django template which leverages the following.

  • dj-rest-auth
  • django-auditlog
  • django-celery-results
  • django-cors-headers
  • django-filter
  • djangorestframework
  • djangorestframework-simplejwt
  • django-perm-filter

Quickstart

Install Django SPA Day:

python3 -m pip install django-spaday

Add it to your INSTALLED_APPS:

INSTALLED_APPS = (
    ...
    'django_spaday',
)

Settings

In config/urls.py add the urls:

urlpatterns = [
    path(r"djadmin/", admin.site.urls),
    ...
    path("", include("django_spaday.urls")),
]

In config/api_router.py add the API urls:

urlpatterns = [
    path("", include("django_spaday.api.urls")),
    # Place all your app's API URLS here.
    ...
    path("auth/", include("dj_rest_auth.urls")),
]

In config/settings/base.py ensure your dj-rest-auth settings include the following:

REST_AUTH = {
    "USE_JWT": True,
    "SESSION_LOGIN": False,
    "TOKEN_MODEL": None,
    "USER_DETAILS_SERIALIZER": "django_spaday.api.serializers.UserAuthSerializer",
    "JWT_AUTH_HTTPONLY": False,  # False means js can access the cookie
}

NOTE: This is imporatant as it will provide the frontend app with the logged in User's permissions, etc.

Overrides

These are the SPA_DAY defaults and do not need to be specified in settings unless you wish to override.

SPA_DAY = {
    "PERMISSION_SERIALIZER": "django_spaday.api.serializers.PermissionListSerializer",
    "USER_SERIALIZER": "django_spaday.api.serializers.UserSerializer",
    "GROUP_SERIALIZER": "django_spaday.api.serializers.GroupSerializer",
    "CHANGE_PASSWORD_SERIALIZER": "django_spaday.api.serializers.ChangePasswordSerializer",
    "USER_AUTH_SERIALIZER": "django_spaday.api.serializers.UserAuthSerializer",
    "LAST_LOGIN_SERIALIZER": "django_spaday.api.serializers.LastLoginSerializer",
}

Local Development

  1. make env
  2. make pip_install
  3. make migrations
  4. make migrate
  5. make superuser
  6. make serve
  • Visit http://127.0.0.1:8000/djadmin/ for the Django Admin
  • Visit http://127.0.0.1:8000/api/docs/ for the API docs

Testing

Currently django_spaday has 95% test coverage.

  • Pytest: make pytest
  • Coverage: make coverage
    • Open Report: make open_coverage

Makefile Commands

Environment

CommandDescription
envCreate virtual environment
env_removeRemove virtual environment

Pip

CommandDescription
pip_installinstall requirements
pip_listrun pip list
pip_freezerun pipfreezer
pip_checkerrun pipchecker

Django

CommandDescription
managerun django manage.py (eg - make manage cmd="shell")
superuserCreate superuser
migrationsCreate migrations (eg - make migrations app="core")
migrateApply migrations
serveRun server
show_urlsshow urls
shellrun shell
flushFlush database

Testing

CommandDescription
pytestRun tests
pytest_verboseRun tests
coverageRun tests with coverage
coverage_verboseRun tests with coverage
coverage_skipRun tests with coverage
open_coverageopen coverage report

Cleanup

CommandDescription
clean_buildremove build artifacts
clean_pycremove python file artifacts
cleanremove all build and python artifacts
clean_pytest_cacheclear pytest cache
clean_tox_cacheclear tox cache
clean_coverageclear coverage cache
clean_testsclear pytest, tox, and coverage caches

Miscellaneous

CommandDescription
treeShow directory tree

Deploy

CommandDescription
distbuilds source and wheel package
release_testupload package to pypi test
releasepackage and upload a release

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.1.3] - 2024-04-02

  • Moved to ruff and added tests

[0.1.2] - 2024-03-07

  • Added missing template example (assumes your Vue project has been built to project/static/vue-frontend)

[0.1.1] - 2024-03-07

  • Added test coverage

[0.1.0] - 2022-04-19

  • First release on PyPI.

FAQs


Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc