Skip to main content

Dashboard for using JWT with 3rd party login.

Project description

Django Simple 3rd Party JWT Dev Dashboard

This is a simple dashboard for showing multi login(JWT, session and 3rd party).

Dashboard is used with Django-Simple-3rd-Party-JWT.

Installation

pip install django-simple-third-party-jwt-dev-dashboard

Check it in Pypi.

Quick Start

  • settings.py

    Add the followings to your settings of project.

    • (MUST) Install app
    INSTALLED_APPS += [
        # ---------------------------
        # debug relative package
        "rest_framework", # <------ MUST
        #"drf_yasg", # for swagger, optional
        'bootstrap3', # <------ MUST
        # debug dashboard
        'django_simple_third_party_jwt_dev_dashboard', # <------ MUST
        # 3rd party login
        'django_simple_third_party_jwt' # <------ MUST
        # ---------------------------
    ]
    
    • (MUST) Dashboard settings
    # -------------- START - Dashboard Setting --------------
    DEV_DASHBOARD_SETTINGS = {
        'jwt_token_url': 'api/auth/token',
        'jwt_refresh_url': 'api/auth/token/refresh',
        'jwt_verify_url': 'api/auth/token/verify',
        'dashboard_url': 'api/__hidden_dev_dashboard',
        'third_party_jwt_url': 'api/auth/google',
        'admin_url': 'api/__hidden_admin',
        #'swagger_url': 'api/__hidden_swagger', # optional
        #'redoc_url': 'api/__hidden_redoc', # optional
    }
    # --------------- END - Dashboard Setting -----------------
    
    • (MUST) Policy for Google API
    # -------------- START - Policy Setting --------------
    SECURE_REFERRER_POLICY = "no-referrer-when-downgrade"
    # SECURE_CROSS_ORIGIN_OPENER_POLICY = "same-origin-allow-popups"
    SECURE_CROSS_ORIGIN_OPENER_POLICY = None
    # -------------- END - Policy Setting -----------------
    
    • (Optional) Configuration for Google Login(default)
    # -------------- START - Google Auth Setting --------------
    SOCIAL_GOOGLE_CLIENT_ID = "376808175534-d6mefo6b1kqih3grjjose2euree2g3cs.apps.googleusercontent.com" # default
    VALID_REGISTER_DOMAINS = ["gmail.com"] # default
    # --------------- END - Google Auth Setting -----------------
    

    You can regist SOCIAL_GOOGLE_CLIENT_ID on Google Cloud Platform.

  • urls.py

    URL path for dashboard. (MUST)

    # --------------- 3rd party login
    # app route
    urlpatterns += [
        # google login
        path(settings.DEV_DASHBOARD_SETTINGS['third_party_jwt_url'] + "/", include("django_simple_third_party_jwt.urls")),
    ]
    # ------------------------------
    
    # --------------- Dashboard
    urlpatterns += [
        # debug dashboard
        path(settings.DEV_DASHBOARD_SETTINGS['dashboard_url'] + "/", include("django_simple_third_party_jwt_dev_dashboard.urls")),
    ]
    # ------------------------------
    
    # --------------- Admin
    urlpatterns += [
        # admin
        path(settings.DEV_DASHBOARD_SETTINGS['admin_url'] + "/", admin.site.urls),
    ]
    # ------------------------------
    
    # --------------- JWT
    from rest_framework_simplejwt.views import (
        TokenVerifyView, TokenObtainPairView, TokenRefreshView
    )
    urlpatterns += [
        path(settings.DEV_DASHBOARD_SETTINGS['jwt_token_url'], TokenObtainPairView.as_view(), name="token_get"),
        path(settings.DEV_DASHBOARD_SETTINGS['jwt_refresh_url'], TokenRefreshView.as_view(), name="token_refresh"),
        path(settings.DEV_DASHBOARD_SETTINGS['jwt_verify_url'], TokenVerifyView.as_view(), name="token_verify"),
    ]
    # ---------------------------------
    

When you added all settings, just run:

python manage.py runserver 0.0.0.0:8000

And visit http://localhost:8000/api/__hidden_dev_dashboard

dashboard

Example

Check ./example/django_simple_third_party_jwt_dev_dashboard_example/.

More

There are several different settings can be added with this dashboard if you need.

  • CORS Setting
ALLOWED_HOSTS = ["*"]
LOGIN_REDIRECT_URL = "/"

# -------------- START - CORS Setting --------------
CORS_ALLOW_ALL_ORIGINS = True
CORS_ALLOW_CREDENTIALS = True
CSRF_TRUSTED_ORIGINS = [
    "http://127.0.0.1",
    "http://localhost",
]
# -------------- END - CORS Setting -----------------
  • Swagger setting
# -------------- Swagger Setting --------------
SWAGGER_SETTINGS = {
    "SECURITY_DEFINITIONS": {
        "Token(add prefix `Bearer` yourself)": {
            "type": "apiKey",
            "name": "Authorization",
            "in": "header",
        }
    },
    "LOGIN_URL": "/api/__hiddenadmin/login/",
    "LOGOUT_URL": "/api/__hiddenadmin/logout/",
}

# --------------------------------------------
  • SimpleJWT setting
# -------------- Start - SimpleJWT Setting --------------
from datetime import timedelta
SIMPLE_JWT = {
    "ACCESS_TOKEN_LIFETIME": timedelta(minutes=3600),
    "REFRESH_TOKEN_LIFETIME": timedelta(days=1),
    "ROTATE_REFRESH_TOKENS": False,
    "BLACKLIST_AFTER_ROTATION": False,
    "UPDATE_LAST_LOGIN": False,
    "ALGORITHM": "HS256",
    "SIGNING_KEY": SECRET_KEY,
    "VERIFYING_KEY": None,
    "AUDIENCE": None,
    "ISSUER": None,
    "JWK_URL": None,
    "LEEWAY": 0,
    "AUTH_HEADER_TYPES": ("Bearer",),
    "AUTH_HEADER_NAME": "HTTP_AUTHORIZATION",
    "USER_ID_FIELD": "id",
    "USER_ID_CLAIM": "user_id",
    "USER_AUTHENTICATION_RULE": "rest_framework_simplejwt.authentication.default_user_authentication_rule",
    "AUTH_TOKEN_CLASSES": ("rest_framework_simplejwt.tokens.AccessToken",),
    "TOKEN_TYPE_CLAIM": "token_type",
    "TOKEN_USER_CLASS": "rest_framework_simplejwt.models.TokenUser",
    "JTI_CLAIM": "jti",
    "SLIDING_TOKEN_REFRESH_EXP_CLAIM": "refresh_exp",
    "SLIDING_TOKEN_LIFETIME": timedelta(minutes=5),
    "SLIDING_TOKEN_REFRESH_LIFETIME": timedelta(days=1),
}
# -------------- END - SimpleJWT Setting --------------

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file django-simple-third-party-jwt-dev-dashboard-0.0.3.tar.gz.

File metadata

File hashes

Hashes for django-simple-third-party-jwt-dev-dashboard-0.0.3.tar.gz
Algorithm Hash digest
SHA256 eb536f8ec3f6b6103afc600412251ffa6f54eb59b70bf98fc898e5b59978fa32
MD5 4a78355c55d5cad50db69fb9dde9441d
BLAKE2b-256 0fe2a4a9ff8b9675db2b6565e14efa9b27805b68c2d455eb7f790213fd528292

See more details on using hashes here.

File details

Details for the file django_simple_third_party_jwt_dev_dashboard-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for django_simple_third_party_jwt_dev_dashboard-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 54cd968ad4ccb682d33cccf1d18f75ac75292d82cd3c64e031aedcad338df680
MD5 7d8c30c6cdb4211f521fb80b08e8a5ac
BLAKE2b-256 e8b58de80bb5a6a59519d0ddfe30e08626325ba4417d9c7bbe25a47ecc9eae67

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page