From 1dcea77fa6b2d45987fa86cedc4928606e75a999 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 11 May 2015 14:31:32 +0530 Subject: [PATCH] [login] redirect to desk for logged in system user --- frappe/auth.py | 5 ++++- frappe/public/js/frappe/router.js | 4 ++-- frappe/sessions.py | 4 +++- frappe/templates/pages/login.py | 4 ++++ 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/frappe/auth.py b/frappe/auth.py index 0c4c793b12..37caeb4781 100644 --- a/frappe/auth.py +++ b/frappe/auth.py @@ -85,6 +85,7 @@ class LoginManager: self.user = None self.info = None self.full_name = None + self.user_type = None if frappe.local.form_dict.get('cmd')=='login' or frappe.local.request.path=="/api/method/login": self.login() @@ -101,6 +102,7 @@ class LoginManager: self.info = frappe.db.get_value("User", self.user, ["user_type", "first_name", "last_name", "user_image"], as_dict=1) self.full_name = " ".join(filter(None, [self.info.first_name, self.info.last_name])) + self.user_type = self.info.user_type self.run_trigger('on_login') self.validate_ip_address() @@ -126,7 +128,8 @@ class LoginManager: def make_session(self, resume=False): # start session - frappe.local.session_obj = Session(user=self.user, resume=resume, full_name=self.full_name) + frappe.local.session_obj = Session(user=self.user, resume=resume, + full_name=self.full_name, user_type=self.user_type) # reset user if changed to Guest self.user = frappe.local.session_obj.user diff --git a/frappe/public/js/frappe/router.js b/frappe/public/js/frappe/router.js index 30cd375df1..0e8174877a 100644 --- a/frappe/public/js/frappe/router.js +++ b/frappe/public/js/frappe/router.js @@ -4,7 +4,7 @@ // route urls to their virtual pages // re-route map (for rename) -frappe.re_route = {}; +frappe.re_route = {"#login": ""}; frappe.route_titles = {}; frappe.route_history = []; frappe.view_factory = {}; @@ -12,7 +12,7 @@ frappe.view_factories = []; frappe.route_options = null; frappe.route = function() { - if(frappe.re_route[window.location.hash]) { + if(frappe.re_route[window.location.hash] !== undefined) { // after saving a doc, for example, // "New DocType 1" and the renamed "TestDocType", both exist in history // now if we try to go back, diff --git a/frappe/sessions.py b/frappe/sessions.py index 30401b2cc8..aa08b34538 100644 --- a/frappe/sessions.py +++ b/frappe/sessions.py @@ -125,9 +125,10 @@ def get(): return bootinfo class Session: - def __init__(self, user, resume=False, full_name=None): + def __init__(self, user, resume=False, full_name=None, user_type=None): self.sid = cstr(frappe.form_dict.get('sid') or unquote(frappe.request.cookies.get('sid', 'Guest'))) self.user = user + self.user_type = user_type self.full_name = full_name self.data = frappe._dict({'data': frappe._dict({})}) self.time_diff = None @@ -156,6 +157,7 @@ class Session: self.data.data.last_updated = frappe.utils.now() self.data.data.session_expiry = get_expiry_period() self.data.data.full_name = self.full_name + self.data.data.user_type = self.user_type self.data.data.session_country = get_geo_ip_country(frappe.local.request_ip) # insert session diff --git a/frappe/templates/pages/login.py b/frappe/templates/pages/login.py index 3651cd944b..1bd9548ed9 100644 --- a/frappe/templates/pages/login.py +++ b/frappe/templates/pages/login.py @@ -12,6 +12,10 @@ class SignupDisabledError(frappe.PermissionError): pass no_cache = True def get_context(context): + if frappe.session.user != "Guest" and frappe.session.data.user_type=="System User": + frappe.local.flags.redirect_location = "/desk" + raise frappe.Redirect + # get settings from site config context["title"] = "Login" context["disable_signup"] = frappe.utils.cint(frappe.db.get_value("Website Settings", "Website Settings", "disable_signup"))