Finalize user signin and session backend

This commit is contained in:
2025-06-21 23:02:02 +03:00
parent ece2b4f9c3
commit 0965631664
5 changed files with 207 additions and 7 deletions

49
session.rb Normal file
View 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