mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-08-29 01:08:54 +00:00
refactor(esx_identity): fix formatting
This commit is contained in:
+161
-161
@@ -38,7 +38,7 @@ local function deleteIdentity(xPlayer)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
SetPlayerData(xPlayer, {firstName = nil, lastName = nil, dateOfBirth = nil, sex = nil, height = nil})
|
SetPlayerData(xPlayer, { firstName = nil, lastName = nil, dateOfBirth = nil, sex = nil, height = nil })
|
||||||
deleteIdentityFromDatabase(xPlayer)
|
deleteIdentityFromDatabase(xPlayer)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ local function checkDOBFormat(dob)
|
|||||||
local minYear = currentYear - Config.MaxAge
|
local minYear = currentYear - Config.MaxAge
|
||||||
local maxYear = currentYear - 18
|
local maxYear = currentYear - 18
|
||||||
|
|
||||||
if year < minYear or year > maxYear then return false end
|
if year < minYear or year > maxYear then return false end
|
||||||
if month < 1 or month > 12 then return false end
|
if month < 1 or month > 12 then return false end
|
||||||
|
|
||||||
-- Days in each month (starting from January.)
|
-- Days in each month (starting from January.)
|
||||||
@@ -128,32 +128,71 @@ local function formatName(name)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function setIdentity(xPlayer)
|
local function setIdentity(xPlayer)
|
||||||
if not alreadyRegistered[xPlayer.identifier] then
|
if not alreadyRegistered[xPlayer.identifier] then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local currentIdentity = playerIdentity[xPlayer.identifier]
|
local currentIdentity = playerIdentity[xPlayer.identifier]
|
||||||
SetPlayerData(xPlayer, currentIdentity)
|
SetPlayerData(xPlayer, currentIdentity)
|
||||||
|
|
||||||
TriggerClientEvent("esx_identity:setPlayerData", xPlayer.source, currentIdentity)
|
TriggerClientEvent("esx_identity:setPlayerData", xPlayer.source, currentIdentity)
|
||||||
if currentIdentity.saveToDatabase then
|
if currentIdentity.saveToDatabase then
|
||||||
saveIdentityToDatabase(xPlayer.identifier, currentIdentity)
|
saveIdentityToDatabase(xPlayer.identifier, currentIdentity)
|
||||||
end
|
end
|
||||||
|
|
||||||
playerIdentity[xPlayer.identifier] = nil
|
playerIdentity[xPlayer.identifier] = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
local function checkIdentity(xPlayer)
|
local function checkIdentity(xPlayer)
|
||||||
MySQL.single("SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?", { xPlayer.identifier }, function(result)
|
MySQL.single("SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?", { xPlayer.identifier }, function(result)
|
||||||
|
if not result then
|
||||||
|
return TriggerClientEvent("esx_identity:showRegisterIdentity", xPlayer.source)
|
||||||
|
end
|
||||||
|
if not result.firstname then
|
||||||
|
playerIdentity[xPlayer.identifier] = nil
|
||||||
|
alreadyRegistered[xPlayer.identifier] = false
|
||||||
|
return TriggerClientEvent("esx_identity:showRegisterIdentity", xPlayer.source)
|
||||||
|
end
|
||||||
|
|
||||||
|
playerIdentity[xPlayer.identifier] = {
|
||||||
|
firstName = result.firstname,
|
||||||
|
lastName = result.lastname,
|
||||||
|
dateOfBirth = result.dateofbirth,
|
||||||
|
sex = result.sex,
|
||||||
|
height = result.height,
|
||||||
|
}
|
||||||
|
|
||||||
|
alreadyRegistered[xPlayer.identifier] = true
|
||||||
|
setIdentity(xPlayer)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
if not multichar then
|
||||||
|
AddEventHandler("playerConnecting", function(_, _, deferrals)
|
||||||
|
deferrals.defer()
|
||||||
|
local _, identifier = source, nil
|
||||||
|
|
||||||
|
local correctLicense, _ = pcall(function()
|
||||||
|
identifier = ESX.GetIdentifier(source)
|
||||||
|
end)
|
||||||
|
|
||||||
|
Wait(40)
|
||||||
|
|
||||||
|
if not identifier or not correctLicense then
|
||||||
|
return deferrals.done(TranslateCap("no_identifier"))
|
||||||
|
end
|
||||||
|
MySQL.single("SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?", { identifier }, function(result)
|
||||||
if not result then
|
if not result then
|
||||||
return TriggerClientEvent("esx_identity:showRegisterIdentity", xPlayer.source)
|
playerIdentity[identifier] = nil
|
||||||
|
alreadyRegistered[identifier] = false
|
||||||
|
return deferrals.done()
|
||||||
end
|
end
|
||||||
if not result.firstname then
|
if not result.firstname then
|
||||||
playerIdentity[xPlayer.identifier] = nil
|
playerIdentity[identifier] = nil
|
||||||
alreadyRegistered[xPlayer.identifier] = false
|
alreadyRegistered[identifier] = false
|
||||||
return TriggerClientEvent("esx_identity:showRegisterIdentity", xPlayer.source)
|
return deferrals.done()
|
||||||
end
|
end
|
||||||
|
|
||||||
playerIdentity[xPlayer.identifier] = {
|
playerIdentity[identifier] = {
|
||||||
firstName = result.firstname,
|
firstName = result.firstname,
|
||||||
lastName = result.lastname,
|
lastName = result.lastname,
|
||||||
dateOfBirth = result.dateofbirth,
|
dateOfBirth = result.dateofbirth,
|
||||||
@@ -161,166 +200,127 @@ end
|
|||||||
height = result.height,
|
height = result.height,
|
||||||
}
|
}
|
||||||
|
|
||||||
alreadyRegistered[xPlayer.identifier] = true
|
alreadyRegistered[identifier] = true
|
||||||
setIdentity(xPlayer)
|
|
||||||
|
deferrals.done()
|
||||||
end)
|
end)
|
||||||
end
|
end)
|
||||||
|
|
||||||
if not multichar then
|
AddEventHandler("onResourceStart", function(resource)
|
||||||
AddEventHandler("playerConnecting", function(_, _, deferrals)
|
if resource ~= GetCurrentResourceName() then
|
||||||
deferrals.defer()
|
return
|
||||||
local _, identifier = source, nil
|
|
||||||
|
|
||||||
local correctLicense, _ = pcall(function()
|
|
||||||
identifier = ESX.GetIdentifier(source)
|
|
||||||
end)
|
|
||||||
|
|
||||||
Wait(40)
|
|
||||||
|
|
||||||
if not identifier or not correctLicense then
|
|
||||||
return deferrals.done(TranslateCap("no_identifier"))
|
|
||||||
end
|
|
||||||
MySQL.single("SELECT firstname, lastname, dateofbirth, sex, height FROM users WHERE identifier = ?", { identifier }, function(result)
|
|
||||||
if not result then
|
|
||||||
playerIdentity[identifier] = nil
|
|
||||||
alreadyRegistered[identifier] = false
|
|
||||||
return deferrals.done()
|
|
||||||
end
|
|
||||||
if not result.firstname then
|
|
||||||
playerIdentity[identifier] = nil
|
|
||||||
alreadyRegistered[identifier] = false
|
|
||||||
return deferrals.done()
|
|
||||||
end
|
|
||||||
|
|
||||||
playerIdentity[identifier] = {
|
|
||||||
firstName = result.firstname,
|
|
||||||
lastName = result.lastname,
|
|
||||||
dateOfBirth = result.dateofbirth,
|
|
||||||
sex = result.sex,
|
|
||||||
height = result.height,
|
|
||||||
}
|
|
||||||
|
|
||||||
alreadyRegistered[identifier] = true
|
|
||||||
|
|
||||||
deferrals.done()
|
|
||||||
end)
|
|
||||||
end)
|
|
||||||
|
|
||||||
AddEventHandler("onResourceStart", function(resource)
|
|
||||||
if resource ~= GetCurrentResourceName() then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
Wait(300)
|
|
||||||
|
|
||||||
while not ESX do
|
|
||||||
Wait(0)
|
|
||||||
end
|
|
||||||
|
|
||||||
local xPlayers = ESX.GetExtendedPlayers()
|
|
||||||
|
|
||||||
for i = 1, #xPlayers do
|
|
||||||
if xPlayers[i] then
|
|
||||||
checkIdentity(xPlayers[i])
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
RegisterNetEvent("esx:playerLoaded", function(_, xPlayer)
|
|
||||||
local currentIdentity = playerIdentity[xPlayer.identifier]
|
|
||||||
|
|
||||||
if currentIdentity and alreadyRegistered[xPlayer.identifier] then
|
|
||||||
SetPlayerData(xPlayer, currentIdentity)
|
|
||||||
|
|
||||||
TriggerClientEvent("esx_identity:setPlayerData", xPlayer.source, currentIdentity)
|
|
||||||
if currentIdentity.saveToDatabase then
|
|
||||||
saveIdentityToDatabase(xPlayer.identifier, currentIdentity)
|
|
||||||
end
|
|
||||||
|
|
||||||
Wait(0)
|
|
||||||
|
|
||||||
TriggerClientEvent("esx_identity:alreadyRegistered", xPlayer.source)
|
|
||||||
|
|
||||||
playerIdentity[xPlayer.identifier] = nil
|
|
||||||
else
|
|
||||||
TriggerClientEvent("esx_identity:showRegisterIdentity", xPlayer.source)
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
ESX.RegisterServerCallback("esx_identity:registerIdentity", function(source, cb, data)
|
|
||||||
local xPlayer = ESX.Player(source)
|
|
||||||
|
|
||||||
if not checkNameFormat(data.firstname) then
|
|
||||||
TriggerClientEvent("esx:showNotification", source, TranslateCap("invalid_firstname_format"), "error")
|
|
||||||
return cb(false)
|
|
||||||
end
|
end
|
||||||
if not checkNameFormat(data.lastname) then
|
Wait(300)
|
||||||
TriggerClientEvent("esx:showNotification", source, TranslateCap("invalid_lastname_format"), "error")
|
|
||||||
return cb(false)
|
while not ESX do
|
||||||
end
|
Wait(0)
|
||||||
if not checkSexFormat(data.sex) then
|
|
||||||
TriggerClientEvent("esx:showNotification", source, TranslateCap("invalid_sex_format"), "error")
|
|
||||||
return cb(false)
|
|
||||||
end
|
|
||||||
if not checkDOBFormat(data.dateofbirth) then
|
|
||||||
TriggerClientEvent("esx:showNotification", source, TranslateCap("invalid_dob_format"), "error")
|
|
||||||
return cb(false)
|
|
||||||
end
|
|
||||||
if not checkHeightFormat(data.height) then
|
|
||||||
TriggerClientEvent("esx:showNotification", source, TranslateCap("invalid_height_format"), "error")
|
|
||||||
return cb(false)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if xPlayer then
|
local xPlayers = ESX.GetExtendedPlayers()
|
||||||
local identifier = xPlayer.getIdentifier()
|
|
||||||
if alreadyRegistered[identifier] then
|
for i = 1, #xPlayers do
|
||||||
xPlayer.showNotification(TranslateCap("already_registered"), "error")
|
if xPlayers[i] then
|
||||||
return cb(false)
|
checkIdentity(xPlayers[i])
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
playerIdentity[identifier] = {
|
RegisterNetEvent("esx:playerLoaded", function(_, xPlayer)
|
||||||
firstName = formatName(data.firstname),
|
local currentIdentity = playerIdentity[xPlayer.identifier]
|
||||||
lastName = formatName(data.lastname),
|
|
||||||
dateOfBirth = formatDate(data.dateofbirth),
|
|
||||||
sex = data.sex,
|
|
||||||
height = data.height,
|
|
||||||
}
|
|
||||||
|
|
||||||
local currentIdentity = playerIdentity[identifier]
|
|
||||||
|
|
||||||
|
if currentIdentity and alreadyRegistered[xPlayer.identifier] then
|
||||||
SetPlayerData(xPlayer, currentIdentity)
|
SetPlayerData(xPlayer, currentIdentity)
|
||||||
|
|
||||||
TriggerClientEvent("esx_identity:setPlayerData", xPlayer.src, currentIdentity)
|
TriggerClientEvent("esx_identity:setPlayerData", xPlayer.source, currentIdentity)
|
||||||
saveIdentityToDatabase(identifier, currentIdentity)
|
if currentIdentity.saveToDatabase then
|
||||||
alreadyRegistered[identifier] = true
|
saveIdentityToDatabase(xPlayer.identifier, currentIdentity)
|
||||||
playerIdentity[identifier] = nil
|
end
|
||||||
return cb(true)
|
|
||||||
end
|
|
||||||
|
|
||||||
if not multichar then
|
Wait(0)
|
||||||
TriggerClientEvent("esx:showNotification", source, TranslateCap("data_incorrect"), "error")
|
|
||||||
|
TriggerClientEvent("esx_identity:alreadyRegistered", xPlayer.source)
|
||||||
|
|
||||||
|
playerIdentity[xPlayer.identifier] = nil
|
||||||
|
else
|
||||||
|
TriggerClientEvent("esx_identity:showRegisterIdentity", xPlayer.source)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
ESX.RegisterServerCallback("esx_identity:registerIdentity", function(source, cb, data)
|
||||||
|
local xPlayer = ESX.Player(source)
|
||||||
|
|
||||||
|
if not checkNameFormat(data.firstname) then
|
||||||
|
TriggerClientEvent("esx:showNotification", source, TranslateCap("invalid_firstname_format"), "error")
|
||||||
|
return cb(false)
|
||||||
|
end
|
||||||
|
if not checkNameFormat(data.lastname) then
|
||||||
|
TriggerClientEvent("esx:showNotification", source, TranslateCap("invalid_lastname_format"), "error")
|
||||||
|
return cb(false)
|
||||||
|
end
|
||||||
|
if not checkSexFormat(data.sex) then
|
||||||
|
TriggerClientEvent("esx:showNotification", source, TranslateCap("invalid_sex_format"), "error")
|
||||||
|
return cb(false)
|
||||||
|
end
|
||||||
|
if not checkDOBFormat(data.dateofbirth) then
|
||||||
|
TriggerClientEvent("esx:showNotification", source, TranslateCap("invalid_dob_format"), "error")
|
||||||
|
return cb(false)
|
||||||
|
end
|
||||||
|
if not checkHeightFormat(data.height) then
|
||||||
|
TriggerClientEvent("esx:showNotification", source, TranslateCap("invalid_height_format"), "error")
|
||||||
|
return cb(false)
|
||||||
|
end
|
||||||
|
|
||||||
|
if xPlayer then
|
||||||
|
local identifier = xPlayer.getIdentifier()
|
||||||
|
if alreadyRegistered[identifier] then
|
||||||
|
xPlayer.showNotification(TranslateCap("already_registered"), "error")
|
||||||
return cb(false)
|
return cb(false)
|
||||||
end
|
end
|
||||||
|
|
||||||
local formattedFirstName = formatName(data.firstname)
|
playerIdentity[identifier] = {
|
||||||
local formattedLastName = formatName(data.lastname)
|
firstName = formatName(data.firstname),
|
||||||
local formattedDate = formatDate(data.dateofbirth)
|
lastName = formatName(data.lastname),
|
||||||
|
dateOfBirth = formatDate(data.dateofbirth),
|
||||||
data.firstname = formattedFirstName
|
|
||||||
data.lastname = formattedLastName
|
|
||||||
data.dateofbirth = formattedDate
|
|
||||||
local Identity = {
|
|
||||||
firstName = formattedFirstName,
|
|
||||||
lastName = formattedLastName,
|
|
||||||
dateOfBirth = formattedDate,
|
|
||||||
sex = data.sex,
|
sex = data.sex,
|
||||||
height = data.height,
|
height = data.height,
|
||||||
}
|
}
|
||||||
|
|
||||||
TriggerEvent("esx_identity:completedRegistration", source, data)
|
local currentIdentity = playerIdentity[identifier]
|
||||||
TriggerClientEvent("esx_identity:setPlayerData", source, Identity)
|
|
||||||
cb(true)
|
SetPlayerData(xPlayer, currentIdentity)
|
||||||
end)
|
|
||||||
|
TriggerClientEvent("esx_identity:setPlayerData", xPlayer.src, currentIdentity)
|
||||||
|
saveIdentityToDatabase(identifier, currentIdentity)
|
||||||
|
alreadyRegistered[identifier] = true
|
||||||
|
playerIdentity[identifier] = nil
|
||||||
|
return cb(true)
|
||||||
|
end
|
||||||
|
|
||||||
|
if not multichar then
|
||||||
|
TriggerClientEvent("esx:showNotification", source, TranslateCap("data_incorrect"), "error")
|
||||||
|
return cb(false)
|
||||||
|
end
|
||||||
|
|
||||||
|
local formattedFirstName = formatName(data.firstname)
|
||||||
|
local formattedLastName = formatName(data.lastname)
|
||||||
|
local formattedDate = formatDate(data.dateofbirth)
|
||||||
|
|
||||||
|
data.firstname = formattedFirstName
|
||||||
|
data.lastname = formattedLastName
|
||||||
|
data.dateofbirth = formattedDate
|
||||||
|
local Identity = {
|
||||||
|
firstName = formattedFirstName,
|
||||||
|
lastName = formattedLastName,
|
||||||
|
dateOfBirth = formattedDate,
|
||||||
|
sex = data.sex,
|
||||||
|
height = data.height,
|
||||||
|
}
|
||||||
|
|
||||||
|
TriggerEvent("esx_identity:completedRegistration", source, data)
|
||||||
|
TriggerClientEvent("esx_identity:setPlayerData", source, Identity)
|
||||||
|
cb(true)
|
||||||
|
end)
|
||||||
|
|
||||||
if Config.EnableCommands then
|
if Config.EnableCommands then
|
||||||
ESX.RegisterCommand("char", "user", function(xPlayer)
|
ESX.RegisterCommand("char", "user", function(xPlayer)
|
||||||
|
|||||||
Reference in New Issue
Block a user