feat: allow created a session for a fixed duration via bench browse

Signed-off-by: Akhil Narang <me@akhilnarang.dev>
This commit is contained in:
Akhil Narang 2025-01-22 16:35:53 +05:30
parent bea4dc68fe
commit a121b90d7f
No known key found for this signature in database
GPG key ID: 9DCC61E211BF645F
3 changed files with 14 additions and 3 deletions

View file

@ -219,7 +219,10 @@ class LoginManager:
def make_session(self, resume=False): def make_session(self, resume=False):
# start session # start session
frappe.local.session_obj = Session( frappe.local.session_obj = Session(
user=self.user, resume=resume, full_name=self.full_name, user_type=self.user_type user=self.user,
resume=resume,
full_name=self.full_name,
user_type=self.user_type,
) )
# reset user if changed to Guest # reset user if changed to Guest

View file

@ -1175,8 +1175,9 @@ def publish_realtime(context: CliCtxObj, event, message, room, user, doctype, do
@click.command("browse") @click.command("browse")
@click.argument("site", required=False) @click.argument("site", required=False)
@click.option("--user", required=False, help="Login as user") @click.option("--user", required=False, help="Login as user")
@click.option("--duration", required=False, help="Session duration (in hh:mm:ss format)")
@pass_context @pass_context
def browse(context: CliCtxObj, site, user=None): def browse(context: CliCtxObj, site, user=None, duration=None):
"""Opens the site on web browser""" """Opens the site on web browser"""
from frappe.auth import CookieManager, LoginManager from frappe.auth import CookieManager, LoginManager
@ -1192,6 +1193,8 @@ def browse(context: CliCtxObj, site, user=None):
frappe.init(site) frappe.init(site)
frappe.connect() frappe.connect()
frappe.flags.session_duration = duration
sid = "" sid = ""
if user: if user:
if not frappe.db.exists("User", user): if not frappe.db.exists("User", user):

View file

@ -246,11 +246,13 @@ class Session:
self.sid = self.data.sid = sid self.sid = self.data.sid = sid
self.data.data.user = self.user self.data.data.user = self.user
self.data.data.session_ip = frappe.local.request_ip self.data.data.session_ip = frappe.local.request_ip
if frappe.flags.session_duration:
self.data.data.fixed_duration = True
if self.user != "Guest": if self.user != "Guest":
self.data.data.update( self.data.data.update(
{ {
"last_updated": frappe.utils.now(), "last_updated": frappe.utils.now(),
"session_expiry": get_expiry_period(), "session_expiry": frappe.flags.session_duration or get_expiry_period(),
"full_name": self.full_name, "full_name": self.full_name,
"user_type": self.user_type, "user_type": self.user_type,
} }
@ -386,6 +388,9 @@ class Session:
if frappe.session.user == "Guest": if frappe.session.user == "Guest":
return return
if self.data.data.fixed_duration:
return
now = frappe.utils.now_datetime() now = frappe.utils.now_datetime()
# update session in db # update session in db