Pratik Vyas | c1e6e4c | 2011-06-08 14:37:15 +0530 | [diff] [blame] | 1 | import webnotes |
Anand Doshi | 90f6e55 | 2012-01-16 14:13:39 +0530 | [diff] [blame] | 2 | import webnotes.defs |
Pratik Vyas | c1e6e4c | 2011-06-08 14:37:15 +0530 | [diff] [blame] | 3 | from webnotes.utils import cint |
Rushabh Mehta | 63d669f | 2012-02-03 12:56:12 +0530 | [diff] [blame] | 4 | import home |
Pratik Vyas | c1e6e4c | 2011-06-08 14:37:15 +0530 | [diff] [blame] | 5 | |
Pratik Vyas | c1e6e4c | 2011-06-08 14:37:15 +0530 | [diff] [blame] | 6 | def on_login(login_manager): |
Rushabh Mehta | bedc1fe | 2012-01-17 18:17:06 +0530 | [diff] [blame] | 7 | """ |
| 8 | called from login manager, before login |
| 9 | """ |
Rushabh Mehta | 63d669f | 2012-02-03 12:56:12 +0530 | [diff] [blame] | 10 | if login_manager.user not in ('Guest', None, ''): |
| 11 | try: |
Rushabh Mehta | 88ba7b8 | 2012-01-18 06:18:52 +0100 | [diff] [blame] | 12 | import server_tools.gateway_utils |
| 13 | server_tools.gateway_utils.check_login(login_manager.user) |
Anand Doshi | 737c2f9 | 2012-02-14 16:16:13 +0530 | [diff] [blame] | 14 | |
| 15 | login_as(login_manager) |
| 16 | |
Rushabh Mehta | 63d669f | 2012-02-03 12:56:12 +0530 | [diff] [blame] | 17 | except ImportError: |
| 18 | pass |
Pratik Vyas | c1e6e4c | 2011-06-08 14:37:15 +0530 | [diff] [blame] | 19 | |
Pratik Vyas | c1e6e4c | 2011-06-08 14:37:15 +0530 | [diff] [blame] | 20 | def on_login_post_session(login_manager): |
Rushabh Mehta | bedc1fe | 2012-01-17 18:17:06 +0530 | [diff] [blame] | 21 | """ |
| 22 | called after login |
| 23 | update login_from and delete parallel sessions |
| 24 | """ |
Anand Doshi | b63a007 | 2012-01-03 16:11:04 +0530 | [diff] [blame] | 25 | # Clear previous sessions i.e. logout previous log-in attempts |
Rushabh Mehta | d31bf62 | 2012-01-19 15:09:49 +0530 | [diff] [blame] | 26 | exception_list = ['demo@webnotestech.com', 'Administrator', 'Guest'] |
Anand Doshi | 9fdee38 | 2012-01-03 11:26:00 +0530 | [diff] [blame] | 27 | if webnotes.session['user'] not in exception_list: |
Anand Doshi | b63a007 | 2012-01-03 16:11:04 +0530 | [diff] [blame] | 28 | sid_list = webnotes.conn.sql(""" |
Rushabh Mehta | bedc1fe | 2012-01-17 18:17:06 +0530 | [diff] [blame] | 29 | DELETE FROM `tabSessions` |
Anand Doshi | b63a007 | 2012-01-03 16:11:04 +0530 | [diff] [blame] | 30 | WHERE |
| 31 | user=%s AND |
Rushabh Mehta | bedc1fe | 2012-01-17 18:17:06 +0530 | [diff] [blame] | 32 | sid!=%s""", \ |
Anand Doshi | b63a007 | 2012-01-03 16:11:04 +0530 | [diff] [blame] | 33 | (webnotes.session['user'], webnotes.session['sid']), as_list=1) |
Rushabh Mehta | 49ebfb6 | 2012-01-20 15:32:18 +0530 | [diff] [blame] | 34 | |
Rushabh Mehta | 63d669f | 2012-02-03 12:56:12 +0530 | [diff] [blame] | 35 | if webnotes.session['user'] not in ('Guest'): |
| 36 | # create feed |
| 37 | from webnotes.utils import nowtime |
| 38 | home.make_feed('Login', 'Profile', login_manager.user, login_manager.user, |
| 39 | '%s logged in at %s' % (login_manager.user_fullname, nowtime()), |
| 40 | login_manager.user=='Administrator' and '#8CA2B3' or '#1B750D') |
| 41 | |
| 42 | def comment_added(doc): |
| 43 | """add comment to feed""" |
Rushabh Mehta | 63d669f | 2012-02-03 12:56:12 +0530 | [diff] [blame] | 44 | home.make_feed('Comment', doc.comment_doctype, doc.comment_docname, doc.comment_by, |
| 45 | '<i>"' + doc.comment + '"</i>', '#6B24B3') |
| 46 | |
Rushabh Mehta | 49ebfb6 | 2012-01-20 15:32:18 +0530 | [diff] [blame] | 47 | def doclist_all(doc, method): |
| 48 | """doclist trigger called from webnotes.model.doclist on any event""" |
Rushabh Mehta | 865c00a | 2012-01-24 14:33:21 +0530 | [diff] [blame] | 49 | home.update_feed(doc, method) |
| 50 | |
| 51 | def boot_session(bootinfo): |
| 52 | """boot session - send website info if guest""" |
| 53 | import webnotes |
| 54 | import webnotes.model.doc |
| 55 | |
| 56 | if webnotes.session['user']=='Guest': |
Rushabh Mehta | 7018b19 | 2012-02-02 13:42:28 +0530 | [diff] [blame] | 57 | bootinfo['website_settings'] = webnotes.model.doc.getsingle('Website Settings') |
Rushabh Mehta | f35992f | 2012-02-07 10:39:17 +0530 | [diff] [blame] | 58 | bootinfo['website_menus'] = webnotes.conn.sql("""select label, url, custom_page, |
Rushabh Mehta | ab1148c | 2012-01-31 18:01:16 +0530 | [diff] [blame] | 59 | parent_label, parentfield |
Rushabh Mehta | 7018b19 | 2012-02-02 13:42:28 +0530 | [diff] [blame] | 60 | from `tabTop Bar Item` where parent='Website Settings' order by idx asc""", as_dict=1) |
| 61 | bootinfo['custom_css'] = webnotes.conn.get_value('Style Settings', None, 'custom_css') or '' |
Rushabh Mehta | eec8e92 | 2012-02-14 17:25:31 +0530 | [diff] [blame] | 62 | bootinfo['analytics_code'] = \ |
| 63 | webnotes.conn.get_value('Website Settings', None, 'analytics_code') |
| 64 | bootinfo['analytics_call'] = \ |
| 65 | webnotes.conn.get_value('Website Settings', None, 'analytics_call') |
Rushabh Mehta | 865c00a | 2012-01-24 14:33:21 +0530 | [diff] [blame] | 66 | else: |
| 67 | bootinfo['letter_heads'] = get_letter_heads() |
| 68 | |
| 69 | def get_letter_heads(): |
| 70 | """load letter heads with startup""" |
| 71 | import webnotes |
Rushabh Mehta | 63d669f | 2012-02-03 12:56:12 +0530 | [diff] [blame] | 72 | ret = webnotes.conn.sql("""select name, content from `tabLetter Head` |
| 73 | where ifnull(disabled,0)=0""") |
Rushabh Mehta | 4b1fe05 | 2012-01-25 15:06:28 +0530 | [diff] [blame] | 74 | return dict(ret) |
Anand Doshi | 737c2f9 | 2012-02-14 16:16:13 +0530 | [diff] [blame] | 75 | |
| 76 | |
| 77 | def login_as(login_manager): |
| 78 | """ |
| 79 | Login as functionality -- allows signin from signin.erpnext.com |
| 80 | """ |
| 81 | # login as user |
| 82 | user = webnotes.form.getvalue('login_as') |
| 83 | if user: |
| 84 | if isinstance(webnotes.session, dict): |
| 85 | webnotes.session['user'] = user |
| 86 | else: |
| 87 | webnotes.session = {'user': user} |
| 88 | |
| 89 | login_manager.user = user |
| 90 | |
| 91 | if hasattr(webnotes.defs, 'validate_ip'): |
| 92 | msg = getattr(webnotes.defs, 'validate_ip')() |
| 93 | if msg: webnotes.msgprint(msg, raise_exception=1) |
| 94 | |
| 95 | # alisaing here... so check if the user is disabled |
| 96 | if not webnotes.conn.sql("select ifnull(enabled,0) from tabProfile where name=%s", user)[0][0]: |
| 97 | # throw execption |
| 98 | webnotes.msgprint("Authentication Failed", raise_exception=1) |