46 lines
1.2 KiB
Python
46 lines
1.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
# bthlabs-jsonrpc-django | (c) 2022-present Tomek Wójcik | MIT License
|
|
from __future__ import annotations
|
|
|
|
import datetime
|
|
|
|
from django.contrib import admin
|
|
from django.urls import path
|
|
|
|
from bthlabs_jsonrpc_django import JSONRPCView, is_authenticated, is_staff
|
|
from bthlabs_jsonrpc_core.ext.jwt import ALGORITHMS, HMACKey, JWTCodec, KeyPair
|
|
|
|
|
|
class JWTRPCView(JSONRPCView):
|
|
codec = JWTCodec
|
|
|
|
def get_codec(self, request):
|
|
return JWTCodec(
|
|
KeyPair(
|
|
decode_key=HMACKey('thisisntasecrurekeydontuseitpls=', ALGORITHMS.HS256),
|
|
encode_key=HMACKey('thisisntasecrurekeydontuseitpls=', ALGORITHMS.HS256),
|
|
),
|
|
issuer='bthlabs_jsonrpc_django_example',
|
|
ttl=datetime.timedelta(seconds=3600),
|
|
)
|
|
|
|
|
|
urlpatterns = [
|
|
path('admin/', admin.site.urls),
|
|
path(
|
|
'rpc/admin',
|
|
JWTRPCView.as_view(
|
|
auth_checks=[is_authenticated, is_staff],
|
|
namespace='admin',
|
|
),
|
|
),
|
|
path(
|
|
'rpc/private',
|
|
JSONRPCView.as_view(
|
|
auth_checks=[is_authenticated],
|
|
namespace='private',
|
|
),
|
|
),
|
|
path('rpc', JSONRPCView.as_view()),
|
|
]
|