Merge pull request #1542 from rmehta/hook-for-home-page
Add hook for returning home page for website user
This commit is contained in:
commit
fa156f4c86
6 changed files with 86 additions and 66 deletions
|
|
@ -130,10 +130,12 @@ class LoginManager:
|
|||
frappe.local.cookie_manager.set_cookie("system_user", "no")
|
||||
if not resume:
|
||||
frappe.local.response["message"] = "No App"
|
||||
frappe.local.response["home_page"] = get_website_user_home_page(self.user)
|
||||
else:
|
||||
frappe.local.cookie_manager.set_cookie("system_user", "yes")
|
||||
if not resume:
|
||||
frappe.local.response['message'] = 'Logged In'
|
||||
frappe.local.response["home_page"] = "/desk"
|
||||
|
||||
if not resume:
|
||||
frappe.response["full_name"] = self.full_name
|
||||
|
|
@ -293,3 +295,11 @@ def clear_cookies():
|
|||
if hasattr(frappe.local, "session"):
|
||||
frappe.session.sid = ""
|
||||
frappe.local.cookie_manager.delete_cookie(["full_name", "user_id", "sid", "user_image", "system_user"])
|
||||
|
||||
def get_website_user_home_page(user):
|
||||
home_page_method = frappe.get_hooks('get_website_user_home_page')
|
||||
if home_page_method:
|
||||
home_page = frappe.get_attr(home_page_method[-1])(user)
|
||||
return '/' + home_page.strip('/')
|
||||
else:
|
||||
return '/me'
|
||||
|
|
|
|||
|
|
@ -12,63 +12,6 @@ import frappe.desk.form.run_method
|
|||
from frappe.utils.response import build_response
|
||||
import bleach
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def version():
|
||||
return frappe.__version__
|
||||
|
||||
@frappe.whitelist()
|
||||
def ping():
|
||||
return "pong"
|
||||
|
||||
@frappe.async.handler
|
||||
def async_ping():
|
||||
return "pong"
|
||||
|
||||
@frappe.whitelist()
|
||||
def runserverobj(method, docs=None, dt=None, dn=None, arg=None, args=None):
|
||||
frappe.desk.form.run_method.runserverobj(method, docs=docs, dt=dt, dn=dn, arg=arg, args=args)
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def logout():
|
||||
frappe.local.login_manager.logout()
|
||||
frappe.db.commit()
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def web_logout():
|
||||
frappe.local.login_manager.logout()
|
||||
frappe.db.commit()
|
||||
frappe.respond_as_web_page("Logged Out", """<p><a href="/index" class="text-muted">Back to Home</a></p>""")
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def run_custom_method(doctype, name, custom_method):
|
||||
"""cmd=run_custom_method&doctype={doctype}&name={name}&custom_method={custom_method}"""
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
if getattr(doc, custom_method, frappe._dict()).is_whitelisted:
|
||||
frappe.call(getattr(doc, custom_method), **frappe.local.form_dict)
|
||||
else:
|
||||
frappe.throw(_("Not permitted"), frappe.PermissionError)
|
||||
|
||||
@frappe.whitelist()
|
||||
def uploadfile():
|
||||
try:
|
||||
if frappe.form_dict.get('from_form'):
|
||||
try:
|
||||
ret = frappe.utils.file_manager.upload()
|
||||
except frappe.DuplicateEntryError:
|
||||
# ignore pass
|
||||
ret = None
|
||||
frappe.db.rollback()
|
||||
else:
|
||||
if frappe.form_dict.get('method'):
|
||||
method = frappe.get_attr(frappe.form_dict.method)
|
||||
is_whitelisted(method)
|
||||
ret = method()
|
||||
except Exception:
|
||||
frappe.errprint(frappe.utils.get_traceback())
|
||||
ret = None
|
||||
|
||||
return ret
|
||||
|
||||
def handle():
|
||||
"""handle request"""
|
||||
cmd = frappe.local.form_dict.cmd
|
||||
|
|
@ -117,6 +60,55 @@ def is_whitelisted(method):
|
|||
frappe.msgprint(_("Not permitted"))
|
||||
raise frappe.PermissionError('Not Allowed, {0}'.format(method))
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def version():
|
||||
return frappe.__version__
|
||||
|
||||
@frappe.whitelist()
|
||||
def runserverobj(method, docs=None, dt=None, dn=None, arg=None, args=None):
|
||||
frappe.desk.form.run_method.runserverobj(method, docs=docs, dt=dt, dn=dn, arg=arg, args=args)
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def logout():
|
||||
frappe.local.login_manager.logout()
|
||||
frappe.db.commit()
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def web_logout():
|
||||
frappe.local.login_manager.logout()
|
||||
frappe.db.commit()
|
||||
frappe.respond_as_web_page("Logged Out", """<p><a href="/index" class="text-muted">Back to Home</a></p>""")
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def run_custom_method(doctype, name, custom_method):
|
||||
"""cmd=run_custom_method&doctype={doctype}&name={name}&custom_method={custom_method}"""
|
||||
doc = frappe.get_doc(doctype, name)
|
||||
if getattr(doc, custom_method, frappe._dict()).is_whitelisted:
|
||||
frappe.call(getattr(doc, custom_method), **frappe.local.form_dict)
|
||||
else:
|
||||
frappe.throw(_("Not permitted"), frappe.PermissionError)
|
||||
|
||||
@frappe.whitelist()
|
||||
def uploadfile():
|
||||
try:
|
||||
if frappe.form_dict.get('from_form'):
|
||||
try:
|
||||
ret = frappe.utils.file_manager.upload()
|
||||
except frappe.DuplicateEntryError:
|
||||
# ignore pass
|
||||
ret = None
|
||||
frappe.db.rollback()
|
||||
else:
|
||||
if frappe.form_dict.get('method'):
|
||||
method = frappe.get_attr(frappe.form_dict.method)
|
||||
is_whitelisted(method)
|
||||
ret = method()
|
||||
except Exception:
|
||||
frappe.errprint(frappe.utils.get_traceback())
|
||||
ret = None
|
||||
|
||||
return ret
|
||||
|
||||
def get_attr(cmd):
|
||||
"""get method object from cmd"""
|
||||
if '.' in cmd:
|
||||
|
|
@ -137,3 +129,11 @@ def get_async_task_status(task_id):
|
|||
"state": a.state,
|
||||
"progress": 0
|
||||
}
|
||||
|
||||
@frappe.whitelist()
|
||||
def ping():
|
||||
return "pong"
|
||||
|
||||
@frappe.async.handler
|
||||
def async_ping():
|
||||
return "pong"
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ login.login_handlers = (function() {
|
|||
var login_handlers = {
|
||||
200: function(data) {
|
||||
if(data.message=="Logged In") {
|
||||
window.location.href = get_url_arg("redirect-to") || "/desk";
|
||||
window.location.href = get_url_arg("redirect-to") || data.home_page;
|
||||
} else if(data.message=="No App") {
|
||||
if(localStorage) {
|
||||
var last_visited =
|
||||
|
|
@ -116,7 +116,7 @@ login.login_handlers = (function() {
|
|||
if(last_visited && last_visited != "/login") {
|
||||
window.location.href = last_visited;
|
||||
} else {
|
||||
window.location.href = "/me";
|
||||
window.location.href = data.home_page;
|
||||
}
|
||||
} else if(["#signup", "#forgot"].indexOf(window.location.hash)!==-1) {
|
||||
frappe.msgprint(data.message);
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ def validate_email_add(email_str, throw=False):
|
|||
# example: "test@example.com test2@example.com" will return "test@example.comtest2" after parseaddr!!!
|
||||
return False
|
||||
|
||||
email = extract_email_id(email_str)
|
||||
email = extract_email_id(email_str.strip())
|
||||
match = re.match("[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?", email.lower())
|
||||
|
||||
if not match:
|
||||
|
|
|
|||
|
|
@ -145,6 +145,9 @@ app_license = "{app_license}"
|
|||
# "Role": "home_page"
|
||||
# }}
|
||||
|
||||
# Website user home page (by function)
|
||||
# get_website_user_home_page = "{app_name}.utils.get_home_page"
|
||||
|
||||
# Generators
|
||||
# ----------
|
||||
|
||||
|
|
|
|||
|
|
@ -36,14 +36,19 @@ def get_home_page():
|
|||
return frappe.local.flags.home_page
|
||||
|
||||
def _get_home_page():
|
||||
role_home_page = frappe.get_hooks("role_home_page")
|
||||
home_page = None
|
||||
|
||||
if role_home_page:
|
||||
for role in frappe.get_roles():
|
||||
if role in role_home_page:
|
||||
home_page = role_home_page[role][-1]
|
||||
break
|
||||
get_website_user_home_page = frappe.get_hooks('get_website_user_home_page')
|
||||
if get_website_user_home_page:
|
||||
home_page = frappe.get_attr(get_website_user_home_page[-1])(frappe.session.user)
|
||||
|
||||
if not home_page:
|
||||
role_home_page = frappe.get_hooks("role_home_page")
|
||||
if role_home_page:
|
||||
for role in frappe.get_roles():
|
||||
if role in role_home_page:
|
||||
home_page = role_home_page[role][-1]
|
||||
break
|
||||
|
||||
if not home_page:
|
||||
home_page = frappe.get_hooks("home_page")
|
||||
|
|
@ -53,6 +58,8 @@ def get_home_page():
|
|||
if not home_page:
|
||||
home_page = frappe.db.get_value("Website Settings", None, "home_page") or "login"
|
||||
|
||||
home_page = home_page.strip('/')
|
||||
|
||||
return home_page
|
||||
|
||||
return frappe.cache().hget("home_page", frappe.session.user, _get_home_page)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue