示例#1
0
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
示例#2
0
    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
示例#3
0
def get_user_info():
    from frappe.sessions import Session

    session = Session(None, resume=True).get_session_data()
    return {
        "user": session.user,
    }
示例#4
0
文件: auth.py 项目: kardmode/frappe
	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()
示例#5
0
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
示例#6
0
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
示例#7
0
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
示例#8
0
def get_user_info(sid):
	from frappe.sessions import Session
	session = Session(None).get_session_data()
	return {
		'user': session.user,
	}