Skip to content

Commit 6dc5041

Browse files
committed
chore: add a device code demo to the tests/app/RP
1 parent aec2211 commit 6dc5041

File tree

5 files changed

+739
-38
lines changed

5 files changed

+739
-38
lines changed

tests/app/idp/idp/apps.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,20 @@
33

44

55
def cors_allow_origin(sender, request, **kwargs):
6+
origin = request.headers.get('Origin')
7+
68
return (
79
request.path == "/o/userinfo/"
810
or request.path == "/o/userinfo"
911
or request.path == "/o/.well-known/openid-configuration"
1012
or request.path == "/o/.well-known/openid-configuration/"
13+
# this is for testing the device authorization flow in the example rp.
14+
# You would not normally have a browser-based client do this and shoudn't
15+
# open the following endpoints to CORS requests in a production environment.
16+
or (origin == 'http://localhost:5173' and request.path == "/o/device-authorization")
17+
or (origin == 'http://localhost:5173' and request.path == "/o/device-authorization/")
18+
or (origin == 'http://localhost:5173' and request.path == "/o/token")
19+
or (origin == 'http://localhost:5173' and request.path == "/o/token/")
1120
)
1221

1322

tests/app/rp/src/app.html

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -40,42 +40,7 @@
4040
</style>
4141
%sveltekit.head%
4242
</head>
43-
4443
<body data-sveltekit-preload-data="hover">
45-
<div class="container">
46-
<h2>Django OAuth Toolkit Test RP</h2>
47-
<a
48-
href="https://github.com/django-oauth/django-oauth-toolkit"
49-
class="github-corner"
50-
aria-label="View source on GitHub"
51-
><svg
52-
width="80"
53-
height="80"
54-
viewBox="0 0 250 250"
55-
style="
56-
fill: #151513;
57-
color: #fff;
58-
position: absolute;
59-
top: 0;
60-
border: 0;
61-
right: 0;
62-
"
63-
aria-hidden="true"
64-
>
65-
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
66-
<path
67-
d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
68-
fill="currentColor"
69-
style="transform-origin: 130px 106px"
70-
class="octo-arm"
71-
></path>
72-
<path
73-
d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z"
74-
fill="currentColor"
75-
class="octo-body"
76-
></path></svg
77-
></a>
7844
<div>%sveltekit.body%</div>
79-
</div>
8045
</body>
8146
</html>
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
<a
2+
href="https://github.com/django-oauth/django-oauth-toolkit"
3+
class="github-corner"
4+
aria-label="View source on GitHub"
5+
><svg
6+
width="80"
7+
height="80"
8+
viewBox="0 0 250 250"
9+
style="
10+
fill: #151513;
11+
color: #fff;
12+
position: absolute;
13+
top: 0;
14+
border: 0;
15+
right: 0;
16+
"
17+
aria-hidden="true"
18+
>
19+
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path>
20+
<path
21+
d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
22+
fill="currentColor"
23+
style="transform-origin: 130px 106px"
24+
class="octo-arm"
25+
></path>
26+
<path
27+
d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z"
28+
fill="currentColor"
29+
class="octo-body"
30+
></path></svg
31+
></a>
32+
33+
<nav class="nav-extended" style="margin-bottom: 2em; background-color: #26a69a;">
34+
<div class="nav-wrapper">
35+
<a href="/" class="brand-logo">Django OAuth Toolkit Test RP</a>
36+
</div>
37+
<div class="nav-content">
38+
<ul class="tabs tabs-transparent">
39+
<li class="tab"><a href="/" class:active={$page.url.pathname === '/'}>OIDC Authorization Code Flow</a></li>
40+
<li class="tab"><a href="/device" class:active={$page.url.pathname === '/device'}>Device Authorization Flow</a></li>
41+
</ul>
42+
</div>
43+
</nav>
44+
45+
<div class="container">
46+
<slot />
47+
</div>
48+
49+
<script>
50+
import { onMount } from 'svelte';
51+
import { page } from '$app/stores';
52+
53+
// Materialize tabs initialization
54+
onMount(() => {
55+
if (typeof M !== 'undefined') {
56+
const tabs = document.querySelectorAll('.tabs');
57+
M.Tabs.init(tabs);
58+
}
59+
});
60+
</script>
61+
62+
<style>
63+
.tabs .tab a {
64+
color: #fff;
65+
font-weight: 500;
66+
font-size: 1.1rem;
67+
transition: color 0.2s, border 0.2s;
68+
border-radius: 4px 4px 0 0;
69+
padding: 0.5rem 1.5rem;
70+
background: transparent;
71+
border-bottom: 2px solid transparent;
72+
}
73+
.tabs .tab a.active {
74+
background: #219080; /* Harmonize with #26a69a, slightly darker */
75+
color: #fff !important;
76+
font-weight: bold;
77+
box-shadow: 0 2px 8px rgba(0,0,0,0.08);
78+
border-bottom: 2px solid #219080;
79+
}
80+
.tabs .tab a:not(.active) {
81+
background: transparent;
82+
color: #e0f2f1;
83+
border-bottom: 2px solid #26a69a;
84+
}
85+
.tabs .tab a:hover {
86+
color: #1976d2;
87+
}
88+
.nav-extended {
89+
background-color: #26a69a;
90+
}
91+
.nav-wrapper .brand-logo {
92+
color: #fff !important;
93+
}
94+
</style>
95+
96+

0 commit comments

Comments
 (0)