This commit is contained in:
2025-06-25 23:44:48 +03:00
parent ac99cef842
commit 652b391d6f
3 changed files with 32 additions and 4 deletions

23
main.rb
View File

@@ -11,7 +11,7 @@ load "logman.rb"
ALPHANUM = [*"0".."9", *"A".."Z", *"a".."z", "-", "_"].freeze ALPHANUM = [*"0".."9", *"A".."Z", *"a".."z", "-", "_"].freeze
env_data = File.read(".env") env_data = File.exist?(".env") ? File.read(".env") : ""
ENV_HASH = {} ENV_HASH = {}
env_data.each_line do |line| env_data.each_line do |line|
@@ -36,7 +36,7 @@ set :public_folder, "public"
get "/" do get "/" do
session = Sessions.new request, response session = Sessions.new request, response
Logman.log session["message"].inspect Logman.log session.message
send_file "index.html" send_file "index.html"
end end
@@ -47,6 +47,8 @@ end
post "/signup" do post "/signup" do
session = Sessions.new request, response session = Sessions.new request, response
uid = session["user"]
session.logout(uid) if uid.nil? || $active_users[uid].nil?
data = JSON.parse(request.body.read) data = JSON.parse(request.body.read)
if data["email"].nil? || data["pass"].nil? || data["username"].nil? if data["email"].nil? || data["pass"].nil? || data["username"].nil?
status 400 status 400
@@ -64,7 +66,7 @@ end
get "/verify/:code" do get "/verify/:code" do
session = Sessions.new request, response session = Sessions.new request, response
session["message"] = Players.verify(params[:code]) ? "Verified successfully!" : "Verification failed!" session.message = Players.verify(params[:code]) ? "Verified successfully!" : "Verification failed!"
redirect "/" redirect "/"
end end
@@ -76,6 +78,10 @@ post "/login" do
status 500 status 500
return { "message" => "Internal server error when signing the existing session out!" }.to_json return { "message" => "Internal server error when signing the existing session out!" }.to_json
end end
if data["username"].nil? || data["pass"].nil?
status 400
return { "message" => "Bad request made!" }.to_json
end
login_status = session.login(data["username"], data["pass"]) login_status = session.login(data["username"], data["pass"])
status login_status[0] status login_status[0]
return { "message" => login_status[1] }.to_json return { "message" => login_status[1] }.to_json
@@ -96,6 +102,13 @@ post "/logout" do
return { "message" => "Signed out successfully!" }.to_json return { "message" => "Signed out successfully!" }.to_json
end end
get "/logout" do
session = Sessions.new request, response
uid = session["user"]
session.logout(uid) unless $active_users[uid].nil?
redirect "/"
end
post "/forgot_password" do post "/forgot_password" do
data = JSON.parse(request.body.read) data = JSON.parse(request.body.read)
if data["email"].nil? if data["email"].nil?
@@ -141,3 +154,7 @@ delete "/rm_player" do
return { "message" => "Couldn't delete!" }.to_json return { "message" => "Couldn't delete!" }.to_json
end end
end end
get "*" do
redirect "/"
end

View File

@@ -29,7 +29,7 @@ module Players
rescue ArgumentError => e rescue ArgumentError => e
[400, e.message] [400, e.message]
rescue Sequel::UniqueConstraintViolation rescue Sequel::UniqueConstraintViolation
[400, "Account already exists with this username or username!"] [400, "Account already exists with this email or username!"]
end end
def self.verify(code) def self.verify(code)

View File

@@ -73,6 +73,17 @@ class Sessions
"" ""
end end
def message=(val)
@response.set_cookie("message",
value: val,
path: "/",
expires: Time.now + 360 * 24 * 60 * 60)
end
def message
@request.cookies["message"]
end
def all def all
session = @request.cookies["session"] session = @request.cookies["session"]
session = session.nil? ? "{}" : Zlib::Inflate.inflate(Base64.decode64(session)) session = session.nil? ? "{}" : Zlib::Inflate.inflate(Base64.decode64(session))