crystal-gauntlet/src/endpoints/accounts/loginAccount.cr

36 lines
856 B
Crystal

require "uri"
require "base64"
require "crypto/bcrypt/password"
include CrystalGauntlet
CrystalGauntlet.endpoints["/accounts/loginGJAccount.php"] = ->(context : HTTP::Server::Context): String {
params = URI::Params.parse(context.request.body.not_nil!.gets_to_end)
LOG.debug { params.inspect }
username = params["userName"]
password = params["password"]
if password.size < 6
return "-8"
end
if username.size < 3
return "-9"
end
result = DATABASE.query_all("select id, password from accounts where username = ?", username, as: {Int32, String})
if result.size > 0
account_id, hash = result[0]
bcrypt = Crypto::Bcrypt::Password.new(hash)
if bcrypt.verify(password)
user_id = Accounts.get_user_id(account_id)
"#{account_id},#{user_id}"
else
return "-11"
end
else
return "-1"
end
}