Finalize user signin and session backend
This commit is contained in:
49
session.rb
Normal file
49
session.rb
Normal file
@@ -0,0 +1,49 @@
|
||||
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
|
Reference in New Issue
Block a user