Skip to content

Commit 597984d

Browse files
committed
add auth with credentials
1 parent fc8baef commit 597984d

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

nocodb/infra/requests_client.py

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from typing import Optional
22
from ..nocodb import (
3+
JWTAuthToken,
34
NocoDBClient,
45
NocoDBProject,
56
AuthToken,
@@ -12,13 +13,33 @@
1213

1314

1415
class NocoDBRequestsClient(NocoDBClient):
15-
def __init__(self, auth_token: AuthToken, base_uri: str):
16+
def __init__(
17+
self,
18+
base_uri: str,
19+
auth_token: AuthToken = None,
20+
email: str = None,
21+
password: str = None,
22+
):
1623
self.__session = requests.Session()
24+
self.__api_info = NocoDBAPI(base_uri)
25+
26+
if not auth_token and not (email and password):
27+
raise ValueError("Either сredentials or token must be provided")
28+
29+
if not auth_token and (email and password):
30+
auth_token = JWTAuthToken(self.get_auth_token(email, password))
31+
1732
self.__session.headers.update(
18-
auth_token.get_header(),
19-
)
33+
auth_token.get_header(),
34+
)
2035
self.__session.headers.update({"Content-Type": "application/json"})
21-
self.__api_info = NocoDBAPI(base_uri)
36+
37+
def get_auth_token(self, email: str, password: str) -> str:
38+
auth_token = self.__session.post(
39+
self.__api_info.get_auth_uri(),
40+
json=dict(email=email, password=password)
41+
).json()['token']
42+
return auth_token
2243

2344
def table_row_list(
2445
self,

0 commit comments

Comments
 (0)