From c5512d4c668d6553e7e2b8e984605fcc1f8f5b58 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Mon, 1 Nov 2021 12:34:24 +0530 Subject: [PATCH 1/3] fix: login as user with browse command `bench --site site.local browse --user Administrator` --- frappe/commands/site.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/frappe/commands/site.py b/frappe/commands/site.py index 2bd3110481..d653c718a3 100755 --- a/frappe/commands/site.py +++ b/frappe/commands/site.py @@ -659,10 +659,14 @@ def publish_realtime(context, event, message, room, user, doctype, docname, afte @click.command('browse') @click.argument('site', required=False) +@click.option('--user', required=False) @pass_context -def browse(context, site): +def browse(context, site, user=None): '''Opens the site on web browser''' + from frappe.auth import LoginManager + from frappe.auth import CookieManager import webbrowser + site = context.sites[0] if context.sites else site if not site: @@ -672,7 +676,20 @@ def browse(context, site): site = site.lower() if site in frappe.utils.get_sites(): - webbrowser.open(frappe.utils.get_site_url(site), new=2) + frappe.init(site=site) + frappe.connect() + + if user: + frappe.utils.set_request(path="/") + frappe.local.cookie_manager = CookieManager() + frappe.local.login_manager = LoginManager() + frappe.local.login_manager.login_as(user) + sid = f'/app?sid={frappe.session.sid}' + else: + sid = '' + + url = f'{frappe.utils.get_site_url(site)}{sid}' + webbrowser.open(url, new=2) else: click.echo("\nSite named \033[1m{}\033[0m doesn't exist\n".format(site)) From ce695b87065018da067b38ca7c6b15577184ae76 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Tue, 2 Nov 2021 13:38:33 +0530 Subject: [PATCH 2/3] fix: Restrict user logins to developer_mode - Allow Administrator user login in production - Print login url --- frappe/commands/site.py | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/frappe/commands/site.py b/frappe/commands/site.py index d653c718a3..c7be995426 100755 --- a/frappe/commands/site.py +++ b/frappe/commands/site.py @@ -659,7 +659,7 @@ def publish_realtime(context, event, message, room, user, doctype, docname, afte @click.command('browse') @click.argument('site', required=False) -@click.option('--user', required=False) +@click.option('--user', required=False, help='Login as user') @pass_context def browse(context, site, user=None): '''Opens the site on web browser''' @@ -679,16 +679,20 @@ def browse(context, site, user=None): frappe.init(site=site) frappe.connect() + sid = '' if user: - frappe.utils.set_request(path="/") - frappe.local.cookie_manager = CookieManager() - frappe.local.login_manager = LoginManager() - frappe.local.login_manager.login_as(user) - sid = f'/app?sid={frappe.session.sid}' - else: - sid = '' + if frappe.conf.developer_mode or user == "Administrator": + frappe.utils.set_request(path="/") + frappe.local.cookie_manager = CookieManager() + frappe.local.login_manager = LoginManager() + frappe.local.login_manager.login_as(user) + sid = f'/app?sid={frappe.session.sid}' + else: + print("Please enable developer mode to login as a user") url = f'{frappe.utils.get_site_url(site)}{sid}' + if sid: + print(f'Login URL: {url}') webbrowser.open(url, new=2) else: click.echo("\nSite named \033[1m{}\033[0m doesn't exist\n".format(site)) From c75f15e25aaf8ef0227fd5a0a4434ee5f82cb347 Mon Sep 17 00:00:00 2001 From: Faris Ansari Date: Tue, 2 Nov 2021 13:52:09 +0530 Subject: [PATCH 3/3] fix: print url only when user is Administrator --- frappe/commands/site.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/commands/site.py b/frappe/commands/site.py index c7be995426..27a9e86078 100755 --- a/frappe/commands/site.py +++ b/frappe/commands/site.py @@ -691,7 +691,7 @@ def browse(context, site, user=None): print("Please enable developer mode to login as a user") url = f'{frappe.utils.get_site_url(site)}{sid}' - if sid: + if user == "Administrator": print(f'Login URL: {url}') webbrowser.open(url, new=2) else: