require "base64" require "json" def set_session(request, response, key, val) session = request.cookies["session"] session = "e30=\n" if session.nil? session = JSON.parse(Base64.decode64(session)) session[key] = val session = Base64.encode64(JSON.generate(session)) response.set_cookie("session", value: session, path: "/", expires: Time.now + 360 * 24 * 60 * 60) rescue JSON::ParserError response.delete_cookie("session") end def get_session(request, response, key) session = request.cookies["session"] session = "{}" if session.nil? session = JSON.parse(Base64.decode64(session)) session[key] rescue JSON::ParserError response.delete_cookie("session") "" end def get_session_all(request, response) session = request.cookies["session"] session = "{}" if session.nil? JSON.parse(Base64.decode64(session)) rescue JSON::ParserError response.delete_cookie("session") "" end def rm_session(request, response, key) session = request.cookies["session"] session = "{}" if session.nil? session = JSON.parse(Base64.decode64(session)) session.delete(key) session = Base64.encode64(JSON.generate(session)) response.set_cookie("session", value: session, path: "/", expires: Time.now + 360 * 24 * 60 * 60) rescue JSON::ParserError response.delete_cookie("session") end