def can_subscribe_doc(doctype, docname, sid): from frappe.sessions import Session from frappe.exceptions import PermissionError session = Session(None).get_session_data() if not frappe.has_permission(user=session.user, doctype=doctype, doc=docname, ptype='read'): raise PermissionError() return True
def make_session(self, resume=False): # start session frappe.local.session_obj = Session(user=self.user, resume=resume) # reset user if changed to Guest self.user = frappe.local.session_obj.user frappe.local.session = frappe.local.session_obj.data
def get_user_info(): from frappe.sessions import Session session = Session(None, resume=True).get_session_data() return { "user": session.user, }
def make_session(self, resume=False): # start session 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 frappe.local.session = frappe.local.session_obj.data self.clear_active_sessions()
def can_subscribe_doc(doctype, docname): if os.environ.get('CI'): return True from frappe.sessions import Session from frappe.exceptions import PermissionError session = Session(None, resume=True).get_session_data() if not frappe.has_permission( user=session.user, doctype=doctype, doc=docname, ptype='read'): raise PermissionError() return True
def get_user_info(token=None, sid=None): if token: token_info = jwt.decode(token, frappe.utils.password.get_encryption_key()) frappe.form_dict['sid'] = token_info.get('sid') from frappe.sessions import Session # sid is obtained from frappe.form_dict.sid (which is present here) # sessions.py LN#183 session = Session(None, resume=True).get_session_data() data = {'user': session.user, 'sid': frappe.session.sid} # if data["user"] == "Guest": # # check if guests are allowed # data["allow_guest"] = cint(frappe.db.get_value("System Settings", None, "socketio_allow_guest") or 0) return data
def make_jwt(user, expire_on=None, secret=None): if not frappe.session.get('sid') or frappe.session.sid == "Guest": return if frappe.session.user == frappe.session.sid: # active via apikeys/bearer tokens, no real session inplace from frappe.sessions import Session user_info = frappe.db.get_value( "User", frappe.session.user, ["user_type", "first_name", "last_name"], as_dict=1) frappe.local.session_obj = Session(user=frappe.session.user, resume=False, full_name=user_info.first_name, user_type=user_info.user_type) frappe.local.session = frappe.local.session_obj.data if not secret: secret = frappe.utils.password.get_encryption_key() if expire_on and not isinstance(expire_on, frappe.utils.datetime.datetime): expire_on = frappe.utils.get_datetime(expire_on) id_token_header = {"typ": "jwt", "alg": "HS256"} id_token = { "sub": user, "ip": frappe.local.request_ip, "sid": frappe.session.get('sid') } if expire_on: id_token['exp'] = int( (expire_on - frappe.utils.datetime.datetime(1970, 1, 1)).total_seconds()) token_encoded = jwt.encode(id_token, secret, algorithm='HS256', headers=id_token_header).decode("ascii") frappe.flags.jwt = token_encoded return token_encoded
def get_user_info(sid): from frappe.sessions import Session session = Session(None).get_session_data() return { 'user': session.user, }