diff --git a/frappe/integrations/doctype/oauth_bearer_token/oauth_bearer_token.json b/frappe/integrations/doctype/oauth_bearer_token/oauth_bearer_token.json index 317bb2c6f5..c48f5d10f2 100644 --- a/frappe/integrations/doctype/oauth_bearer_token/oauth_bearer_token.json +++ b/frappe/integrations/doctype/oauth_bearer_token/oauth_bearer_token.json @@ -30,8 +30,10 @@ "fieldname": "user", "fieldtype": "Link", "label": "User", + "not_nullable": 1, "options": "User", - "read_only": 1 + "read_only": 1, + "search_index": 1 }, { "fieldname": "scopes", @@ -75,7 +77,7 @@ } ], "links": [], - "modified": "2024-03-23 16:03:32.559867", + "modified": "2025-01-15 17:54:35.661941", "modified_by": "Administrator", "module": "Integrations", "name": "OAuth Bearer Token", diff --git a/frappe/integrations/doctype/oauth_bearer_token/oauth_bearer_token.py b/frappe/integrations/doctype/oauth_bearer_token/oauth_bearer_token.py index 6b6259da77..2d3d5cbc17 100644 --- a/frappe/integrations/doctype/oauth_bearer_token/oauth_bearer_token.py +++ b/frappe/integrations/doctype/oauth_bearer_token/oauth_bearer_token.py @@ -3,6 +3,7 @@ import frappe from frappe.model.document import Document +from frappe.utils.data import add_to_date class OAuthBearerToken(Document): @@ -21,11 +22,9 @@ class OAuthBearerToken(Document): refresh_token: DF.Data | None scopes: DF.Text | None status: DF.Literal["Active", "Revoked"] - user: DF.Link | None + user: DF.Link # end: auto-generated types def validate(self): if not self.expiration_time: - self.expiration_time = frappe.utils.datetime.datetime.strptime( - self.creation, "%Y-%m-%d %H:%M:%S.%f" - ) + frappe.utils.datetime.timedelta(seconds=self.expires_in) + self.expiration_time = add_to_date(self.creation, seconds=self.expires_in, as_datetime=True) diff --git a/frappe/integrations/oauth2.py b/frappe/integrations/oauth2.py index f04351eda5..59e9f675b6 100644 --- a/frappe/integrations/oauth2.py +++ b/frappe/integrations/oauth2.py @@ -93,7 +93,9 @@ def authorize(**kwargs): frappe.flags.oauth_credentials["client_id"], "skip_authorization", ) - unrevoked_tokens = frappe.get_all("OAuth Bearer Token", filters={"status": "Active"}) + unrevoked_tokens = frappe.db.exists( + "OAuth Bearer Token", {"status": "Active", "user": frappe.session.user} + ) if skip_auth or (get_oauth_settings().skip_authorization == "Auto" and unrevoked_tokens): frappe.local.response["type"] = "redirect"