local ResourceName = GetCurrentResourceName() GetName = function(a, b) return string.format("%s:%s:%s", ResourceName, a, b) end RegisEvent = function(n, h) RegisterNetEvent(n) AddEventHandler(n, h) end local auth = {} auth.name = "" auth.ownerId = "" auth.apiUrl = "" auth.sessionId = nil auth.ready = false auth.Req = function(data) data.name = auth.name data.ownerid = auth.ownerId if auth.sessionId then data.sessionid = auth.sessionId end local body = "" for k, v in pairs(data) do if body ~= "" then body = body .. "&" end body = body .. k .. "=" .. v end local p = promise.new() PerformHttpRequest(auth.apiUrl, function(code, res) if code == 429 then p:resolve({ success = false, message = "Rate limited" }) return end p:resolve(json.decode(res) or { success = false, message = "Bad response" }) end, "POST", body, { ["Content-Type"] = "application/x-www-form-urlencoded" }) return Citizen.Await(p) end auth.Init = function(name, ownerId, apiUrl) auth.name = name auth.ownerId = ownerId auth.apiUrl = apiUrl local res = auth.Req({ type = "init" }) if not res.success then return false, res.message end auth.sessionId = res.sessionid auth.ready = true return true, res end auth.License = function(key, hwid) if not auth.ready then return false, "Not initialized" end local res = auth.Req({ type = "license", key = key, hwid = hwid or "" }) if not res.success then return false, res.message end return true, res.info end auth.Login = function(user, pass, hwid) if not auth.ready then return false, "Not initialized" end local res = auth.Req({ type = "login", username = user, pass = pass, hwid = hwid or "", }) if not res.success then return false, res.message end return true, res.info end auth.Register = function(user, pass, key, hwid) if not auth.ready then return false, "Not initialized" end local res = auth.Req({ type = "register", username = user, pass = pass, key = key, hwid = hwid or "", }) if not res.success then return false, res.message end return true, res.info end auth.Log = function(msg) if not auth.ready then return end auth.Req({ type = "log", message = msg, pcuser = GetPlayerName(PlayerId()) }) end auth.Token = function(token, hwid) if not auth.ready then return false, "Not initialized" end local res = auth.Req({ type = "token", token = token, hwid = hwid or "" }) if not res.success then return false, res.message end return true, res.info end auth.Upgrade = function(user, key) if not auth.ready then return false, "Not initialized" end local res = auth.Req({ type = "upgrade", username = user, key = key }) if not res.success then return false, res.message end return true, res end auth.Check = function() if not auth.ready then return false end local res = auth.Req({ type = "check" }) return res.success end auth.Logout = function() if not auth.ready then return end auth.Req({ type = "logout" }) auth.sessionId = nil auth.ready = false end auth.GetVar = function(name) local res = auth.Req({ type = "getvar", var = name }) if not res.success then return nil end return res.response end auth.SetVar = function(name, val) return auth.Req({ type = "setvar", var = name, data = val }) end auth.ChatGet = function(channel) local res = auth.Req({ type = "chatget", channel = channel or "main" }) if not res.success then return {} end return res.messages or {} end auth.ChatSend = function(msg, channel) return auth.Req({ type = "chatsend", message = msg, channel = channel or "main" }) end exports("GetAuth", function() return auth end)