Skip to content

Commit 0d31915

Browse files
Merge branch '0.12' into email-templates-updated
2 parents 6e114f8 + a2cb4fb commit 0d31915

39 files changed

+1776
-16
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## unreleased
99

10+
## [0.12.6] - 2023-03-31
11+
12+
- Adds search APIs to the dashboard recipe
13+
1014
## [0.12.5] - 2023-03-30
1115

1216
- Adds a telemetry API to the dashboard recipe

coreDriverInterfaceSupported.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
"2.16",
1212
"2.17",
1313
"2.18",
14-
"2.19"
14+
"2.19",
15+
"2.20"
1516
]
1617
}

html/supertokens_python/constants.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,9 @@ <h1 class="title">Module <code>supertokens_python.constants</code></h1>
5151
&#34;2.17&#34;,
5252
&#34;2.18&#34;,
5353
&#34;2.19&#34;,
54+
&#34;2.20&#34;,
5455
]
55-
VERSION = &#34;0.12.5&#34;
56+
VERSION = &#34;0.12.6&#34;
5657
TELEMETRY = &#34;/telemetry&#34;
5758
USER_COUNT = &#34;/users/count&#34;
5859
USER_DELETE = &#34;/user/remove&#34;
@@ -65,7 +66,7 @@ <h1 class="title">Module <code>supertokens_python.constants</code></h1>
6566
FDI_KEY_HEADER = &#34;fdi-version&#34;
6667
API_VERSION = &#34;/apiversion&#34;
6768
API_VERSION_HEADER = &#34;cdi-version&#34;
68-
DASHBOARD_VERSION = &#34;0.5&#34;</code></pre>
69+
DASHBOARD_VERSION = &#34;0.6&#34;</code></pre>
6970
</details>
7071
</section>
7172
<section>

html/supertokens_python/framework/django/django_request.html

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ <h1 class="title">Module <code>supertokens_python.framework.django.django_reques
4242
from __future__ import annotations
4343

4444
import json
45-
from typing import TYPE_CHECKING, Any, Union
45+
from typing import TYPE_CHECKING, Any, Dict, Union
4646
from urllib.parse import parse_qsl
4747

4848
from supertokens_python.framework.request import BaseRequest
@@ -63,6 +63,9 @@ <h1 class="title">Module <code>supertokens_python.framework.django.django_reques
6363
) -&gt; Union[str, None]:
6464
return self.request.GET.get(key, default)
6565

66+
def get_query_params(self) -&gt; Dict[str, Any]:
67+
return self.request.GET.dict()
68+
6669
async def json(self) -&gt; Union[Any, None]:
6770
try:
6871
body = json.loads(self.request.body)
@@ -131,6 +134,9 @@ <h2 class="section-title" id="header-classes">Classes</h2>
131134
) -&gt; Union[str, None]:
132135
return self.request.GET.get(key, default)
133136

137+
def get_query_params(self) -&gt; Dict[str, Any]:
138+
return self.request.GET.dict()
139+
134140
async def json(self) -&gt; Union[Any, None]:
135141
try:
136142
body = json.loads(self.request.body)
@@ -249,6 +255,19 @@ <h3>Methods</h3>
249255
return self.request.GET.get(key, default)</code></pre>
250256
</details>
251257
</dd>
258+
<dt id="supertokens_python.framework.django.django_request.DjangoRequest.get_query_params"><code class="name flex">
259+
<span>def <span class="ident">get_query_params</span></span>(<span>self) ‑> Dict[str, Any]</span>
260+
</code></dt>
261+
<dd>
262+
<div class="desc"></div>
263+
<details class="source">
264+
<summary>
265+
<span>Expand source code</span>
266+
</summary>
267+
<pre><code class="python">def get_query_params(self) -&gt; Dict[str, Any]:
268+
return self.request.GET.dict()</code></pre>
269+
</details>
270+
</dd>
252271
<dt id="supertokens_python.framework.django.django_request.DjangoRequest.get_session"><code class="name flex">
253272
<span>def <span class="ident">get_session</span></span>(<span>self) ‑> Union[SessionContainer, None]</span>
254273
</code></dt>
@@ -342,6 +361,7 @@ <h4><code><a title="supertokens_python.framework.django.django_request.DjangoReq
342361
<li><code><a title="supertokens_python.framework.django.django_request.DjangoRequest.get_header" href="#supertokens_python.framework.django.django_request.DjangoRequest.get_header">get_header</a></code></li>
343362
<li><code><a title="supertokens_python.framework.django.django_request.DjangoRequest.get_path" href="#supertokens_python.framework.django.django_request.DjangoRequest.get_path">get_path</a></code></li>
344363
<li><code><a title="supertokens_python.framework.django.django_request.DjangoRequest.get_query_param" href="#supertokens_python.framework.django.django_request.DjangoRequest.get_query_param">get_query_param</a></code></li>
364+
<li><code><a title="supertokens_python.framework.django.django_request.DjangoRequest.get_query_params" href="#supertokens_python.framework.django.django_request.DjangoRequest.get_query_params">get_query_params</a></code></li>
345365
<li><code><a title="supertokens_python.framework.django.django_request.DjangoRequest.get_session" href="#supertokens_python.framework.django.django_request.DjangoRequest.get_session">get_session</a></code></li>
346366
<li><code><a title="supertokens_python.framework.django.django_request.DjangoRequest.json" href="#supertokens_python.framework.django.django_request.DjangoRequest.json">json</a></code></li>
347367
<li><code><a title="supertokens_python.framework.django.django_request.DjangoRequest.method" href="#supertokens_python.framework.django.django_request.DjangoRequest.method">method</a></code></li>

html/supertokens_python/framework/fastapi/fastapi_request.html

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ <h1 class="title">Module <code>supertokens_python.framework.fastapi.fastapi_requ
4141
# under the License.
4242
from __future__ import annotations
4343

44-
from typing import TYPE_CHECKING, Any, Union
44+
from typing import TYPE_CHECKING, Any, Dict, Union
4545
from urllib.parse import parse_qsl
4646

4747
from supertokens_python.framework.request import BaseRequest
@@ -63,6 +63,9 @@ <h1 class="title">Module <code>supertokens_python.framework.fastapi.fastapi_requ
6363
) -&gt; Union[str, None]:
6464
return self.request.query_params.get(key, default)
6565

66+
def get_query_params(self) -&gt; Dict[str, Any]:
67+
return dict(self.request.query_params.items()) # type: ignore
68+
6669
async def json(self) -&gt; Union[Any, None]:
6770
try:
6871
return await self.request.json()
@@ -133,6 +136,9 @@ <h2 class="section-title" id="header-classes">Classes</h2>
133136
) -&gt; Union[str, None]:
134137
return self.request.query_params.get(key, default)
135138

139+
def get_query_params(self) -&gt; Dict[str, Any]:
140+
return dict(self.request.query_params.items()) # type: ignore
141+
136142
async def json(self) -&gt; Union[Any, None]:
137143
try:
138144
return await self.request.json()
@@ -257,6 +263,19 @@ <h3>Methods</h3>
257263
return self.request.query_params.get(key, default)</code></pre>
258264
</details>
259265
</dd>
266+
<dt id="supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.get_query_params"><code class="name flex">
267+
<span>def <span class="ident">get_query_params</span></span>(<span>self) ‑> Dict[str, Any]</span>
268+
</code></dt>
269+
<dd>
270+
<div class="desc"></div>
271+
<details class="source">
272+
<summary>
273+
<span>Expand source code</span>
274+
</summary>
275+
<pre><code class="python">def get_query_params(self) -&gt; Dict[str, Any]:
276+
return dict(self.request.query_params.items()) # type: ignore</code></pre>
277+
</details>
278+
</dd>
260279
<dt id="supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.get_session"><code class="name flex">
261280
<span>def <span class="ident">get_session</span></span>(<span>self) ‑> Union[SessionContainer, None]</span>
262281
</code></dt>
@@ -347,6 +366,7 @@ <h4><code><a title="supertokens_python.framework.fastapi.fastapi_request.FastApi
347366
<li><code><a title="supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.get_header" href="#supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.get_header">get_header</a></code></li>
348367
<li><code><a title="supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.get_path" href="#supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.get_path">get_path</a></code></li>
349368
<li><code><a title="supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.get_query_param" href="#supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.get_query_param">get_query_param</a></code></li>
369+
<li><code><a title="supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.get_query_params" href="#supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.get_query_params">get_query_params</a></code></li>
350370
<li><code><a title="supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.get_session" href="#supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.get_session">get_session</a></code></li>
351371
<li><code><a title="supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.json" href="#supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.json">json</a></code></li>
352372
<li><code><a title="supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.method" href="#supertokens_python.framework.fastapi.fastapi_request.FastApiRequest.method">method</a></code></li>

html/supertokens_python/framework/flask/flask_request.html

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ <h1 class="title">Module <code>supertokens_python.framework.flask.flask_request<
5959
def get_query_param(self, key: str, default: Union[str, None] = None):
6060
return self.request.args.get(key, default)
6161

62+
def get_query_params(self) -&gt; Dict[str, Any]:
63+
return self.request.args.to_dict()
64+
6265
async def json(self) -&gt; Union[Any, None]:
6366
try:
6467
return self.request.get_json()
@@ -136,6 +139,9 @@ <h2 class="section-title" id="header-classes">Classes</h2>
136139
def get_query_param(self, key: str, default: Union[str, None] = None):
137140
return self.request.args.get(key, default)
138141

142+
def get_query_params(self) -&gt; Dict[str, Any]:
143+
return self.request.args.to_dict()
144+
139145
async def json(self) -&gt; Union[Any, None]:
140146
try:
141147
return self.request.get_json()
@@ -275,6 +281,19 @@ <h3>Methods</h3>
275281
return self.request.args.get(key, default)</code></pre>
276282
</details>
277283
</dd>
284+
<dt id="supertokens_python.framework.flask.flask_request.FlaskRequest.get_query_params"><code class="name flex">
285+
<span>def <span class="ident">get_query_params</span></span>(<span>self) ‑> Dict[str, Any]</span>
286+
</code></dt>
287+
<dd>
288+
<div class="desc"></div>
289+
<details class="source">
290+
<summary>
291+
<span>Expand source code</span>
292+
</summary>
293+
<pre><code class="python">def get_query_params(self) -&gt; Dict[str, Any]:
294+
return self.request.args.to_dict()</code></pre>
295+
</details>
296+
</dd>
278297
<dt id="supertokens_python.framework.flask.flask_request.FlaskRequest.get_session"><code class="name flex">
279298
<span>def <span class="ident">get_session</span></span>(<span>self) ‑> Union[SessionContainer, None]</span>
280299
</code></dt>
@@ -374,6 +393,7 @@ <h4><code><a title="supertokens_python.framework.flask.flask_request.FlaskReques
374393
<li><code><a title="supertokens_python.framework.flask.flask_request.FlaskRequest.get_header" href="#supertokens_python.framework.flask.flask_request.FlaskRequest.get_header">get_header</a></code></li>
375394
<li><code><a title="supertokens_python.framework.flask.flask_request.FlaskRequest.get_path" href="#supertokens_python.framework.flask.flask_request.FlaskRequest.get_path">get_path</a></code></li>
376395
<li><code><a title="supertokens_python.framework.flask.flask_request.FlaskRequest.get_query_param" href="#supertokens_python.framework.flask.flask_request.FlaskRequest.get_query_param">get_query_param</a></code></li>
396+
<li><code><a title="supertokens_python.framework.flask.flask_request.FlaskRequest.get_query_params" href="#supertokens_python.framework.flask.flask_request.FlaskRequest.get_query_params">get_query_params</a></code></li>
377397
<li><code><a title="supertokens_python.framework.flask.flask_request.FlaskRequest.get_session" href="#supertokens_python.framework.flask.flask_request.FlaskRequest.get_session">get_session</a></code></li>
378398
<li><code><a title="supertokens_python.framework.flask.flask_request.FlaskRequest.json" href="#supertokens_python.framework.flask.flask_request.FlaskRequest.json">json</a></code></li>
379399
<li><code><a title="supertokens_python.framework.flask.flask_request.FlaskRequest.method" href="#supertokens_python.framework.flask.flask_request.FlaskRequest.method">method</a></code></li>

html/supertokens_python/framework/request.html

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ <h1 class="title">Module <code>supertokens_python.framework.request</code></h1>
5959
) -&gt; Union[str, None]:
6060
pass
6161

62+
@abstractmethod
63+
def get_query_params(self) -&gt; Dict[str, Any]:
64+
pass
65+
6266
@abstractmethod
6367
async def json(self) -&gt; Union[Any, None]:
6468
pass
@@ -129,6 +133,10 @@ <h2 class="section-title" id="header-classes">Classes</h2>
129133
) -&gt; Union[str, None]:
130134
pass
131135

136+
@abstractmethod
137+
def get_query_params(self) -&gt; Dict[str, Any]:
138+
pass
139+
132140
@abstractmethod
133141
async def json(self) -&gt; Union[Any, None]:
134142
pass
@@ -252,6 +260,20 @@ <h3>Methods</h3>
252260
pass</code></pre>
253261
</details>
254262
</dd>
263+
<dt id="supertokens_python.framework.request.BaseRequest.get_query_params"><code class="name flex">
264+
<span>def <span class="ident">get_query_params</span></span>(<span>self) ‑> Dict[str, Any]</span>
265+
</code></dt>
266+
<dd>
267+
<div class="desc"></div>
268+
<details class="source">
269+
<summary>
270+
<span>Expand source code</span>
271+
</summary>
272+
<pre><code class="python">@abstractmethod
273+
def get_query_params(self) -&gt; Dict[str, Any]:
274+
pass</code></pre>
275+
</details>
276+
</dd>
255277
<dt id="supertokens_python.framework.request.BaseRequest.get_session"><code class="name flex">
256278
<span>def <span class="ident">get_session</span></span>(<span>self) ‑> Union[SessionContainer, None]</span>
257279
</code></dt>
@@ -352,6 +374,7 @@ <h4><code><a title="supertokens_python.framework.request.BaseRequest" href="#sup
352374
<li><code><a title="supertokens_python.framework.request.BaseRequest.get_header" href="#supertokens_python.framework.request.BaseRequest.get_header">get_header</a></code></li>
353375
<li><code><a title="supertokens_python.framework.request.BaseRequest.get_path" href="#supertokens_python.framework.request.BaseRequest.get_path">get_path</a></code></li>
354376
<li><code><a title="supertokens_python.framework.request.BaseRequest.get_query_param" href="#supertokens_python.framework.request.BaseRequest.get_query_param">get_query_param</a></code></li>
377+
<li><code><a title="supertokens_python.framework.request.BaseRequest.get_query_params" href="#supertokens_python.framework.request.BaseRequest.get_query_params">get_query_params</a></code></li>
355378
<li><code><a title="supertokens_python.framework.request.BaseRequest.get_session" href="#supertokens_python.framework.request.BaseRequest.get_session">get_session</a></code></li>
356379
<li><code><a title="supertokens_python.framework.request.BaseRequest.json" href="#supertokens_python.framework.request.BaseRequest.json">json</a></code></li>
357380
<li><code><a title="supertokens_python.framework.request.BaseRequest.method" href="#supertokens_python.framework.request.BaseRequest.method">method</a></code></li>

html/supertokens_python/recipe/dashboard/api/implementation.html

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ <h1 class="title">Module <code>supertokens_python.recipe.dashboard.api.implement
4848
from supertokens_python import Supertokens
4949
from supertokens_python.normalised_url_domain import NormalisedURLDomain
5050
from supertokens_python.normalised_url_path import NormalisedURLPath
51+
from supertokens_python.querier import Querier
52+
from supertokens_python.utils import is_version_gte
5153

5254
from ..constants import DASHBOARD_API
5355
from ..interfaces import APIInterface
@@ -82,6 +84,14 @@ <h1 class="title">Module <code>supertokens_python.recipe.dashboard.api.implement
8284
NormalisedURLPath(DASHBOARD_API)
8385
).get_as_string_dangerous()
8486

87+
is_search_enabled: bool = False
88+
querier = Querier.get_instance(options.recipe_id)
89+
cdiVersion = await querier.get_api_version()
90+
if not cdiVersion:
91+
is_search_enabled = True
92+
elif is_version_gte(cdiVersion, &#34;2.20&#34;):
93+
is_search_enabled = True
94+
8595
return Template(
8696
dedent(
8797
&#34;&#34;&#34;
@@ -93,6 +103,7 @@ <h1 class="title">Module <code>supertokens_python.recipe.dashboard.api.implement
93103
window.dashboardAppPath = &#34;${dashboardPath}&#34;
94104
window.connectionURI = &#34;${connectionURI}&#34;
95105
window.authMode = &#34;${authMode}&#34;
106+
window.isSearchEnabled = &#34;${isSearchEnabled}&#34;
96107
&lt;/script&gt;
97108
&lt;script defer src=&#34;${bundleDomain}/static/js/bundle.js&#34;&gt;&lt;/script&gt;&lt;/head&gt;
98109
&lt;link href=&#34;${bundleDomain}/static/css/main.css&#34; rel=&#34;stylesheet&#34; type=&#34;text/css&#34;&gt;
@@ -110,6 +121,7 @@ <h1 class="title">Module <code>supertokens_python.recipe.dashboard.api.implement
110121
dashboardPath=dashboard_path,
111122
connectionURI=connection_uri,
112123
authMode=auth_mode,
124+
isSearchEnabled=str(is_search_enabled).lower(),
113125
)
114126

115127
self.dashboard_get = dashboard_get</code></pre>
@@ -159,6 +171,14 @@ <h2 class="section-title" id="header-classes">Classes</h2>
159171
NormalisedURLPath(DASHBOARD_API)
160172
).get_as_string_dangerous()
161173

174+
is_search_enabled: bool = False
175+
querier = Querier.get_instance(options.recipe_id)
176+
cdiVersion = await querier.get_api_version()
177+
if not cdiVersion:
178+
is_search_enabled = True
179+
elif is_version_gte(cdiVersion, &#34;2.20&#34;):
180+
is_search_enabled = True
181+
162182
return Template(
163183
dedent(
164184
&#34;&#34;&#34;
@@ -170,6 +190,7 @@ <h2 class="section-title" id="header-classes">Classes</h2>
170190
window.dashboardAppPath = &#34;${dashboardPath}&#34;
171191
window.connectionURI = &#34;${connectionURI}&#34;
172192
window.authMode = &#34;${authMode}&#34;
193+
window.isSearchEnabled = &#34;${isSearchEnabled}&#34;
173194
&lt;/script&gt;
174195
&lt;script defer src=&#34;${bundleDomain}/static/js/bundle.js&#34;&gt;&lt;/script&gt;&lt;/head&gt;
175196
&lt;link href=&#34;${bundleDomain}/static/css/main.css&#34; rel=&#34;stylesheet&#34; type=&#34;text/css&#34;&gt;
@@ -187,6 +208,7 @@ <h2 class="section-title" id="header-classes">Classes</h2>
187208
dashboardPath=dashboard_path,
188209
connectionURI=connection_uri,
189210
authMode=auth_mode,
211+
isSearchEnabled=str(is_search_enabled).lower(),
190212
)
191213

192214
self.dashboard_get = dashboard_get</code></pre>

0 commit comments

Comments
 (0)