Files
leonwww/dns/frontend/dashboard.lua

136 lines
3.7 KiB
Lua
Raw Normal View History

local user = nil
local domains = {}
local authToken = nil
local userInfo = gurt.select('#user-info')
local domainsList = gurt.select('#domains-list')
local loadingElement = gurt.select('#tld-loading')
local options
local function showError(elementId, message)
local element = gurt.select('#' .. elementId)
element.text = message
element.classList:remove('hidden')
end
local function hideError(elementId)
local element = gurt.select('#' .. elementId)
element.classList:add('hidden')
end
local function updateUserInfo()
userInfo.text = 'Welcome, ' .. user.username .. '!'
end
local function renderDomains()
local loadingElement = gurt.select('#domains-loading')
if loadingElement then
loadingElement:remove()
end
domainsList.text = ''
if #domains == 0 then
local emptyMessage = gurt.create('div', {
text = 'No domains registered yet. Click "New" to register your first domain!',
style = 'text-center text-[#6b7280] py-8'
})
domainsList:append(emptyMessage)
return
end
for i, domain in ipairs(domains) do
local domainItem = gurt.create('div', {
style = 'domain-item cursor-pointer hover:bg-[#4b5563]'
})
local domainInfo = gurt.create('div', { style = 'w-full' })
local domainName = gurt.create('div', {
text = domain.name .. '.' .. domain.tld,
style = 'font-bold text-lg'
})
local domainStatus = gurt.create('div', {
text = 'Status: ' .. (domain.status or 'Unknown'),
style = 'text-[#6b7280]'
})
domainInfo:append(domainName)
domainInfo:append(domainStatus)
domainItem:append(domainInfo)
domainItem:on('click', function()
gurt.location.goto('/domain.html?name=' .. domain.name .. '.' .. domain.tld)
end)
domainsList:append(domainItem)
end
end
local function loadDomains()
print('Loading domains...')
2025-08-27 20:23:05 +03:00
local response = fetch('gurt://localhost:8877/auth/domains?page=1&limit=100', {
headers = {
Authorization = 'Bearer ' .. authToken
}
})
if response:ok() then
local data = response:json()
domains = data.domains or {}
print('Loaded ' .. #domains .. ' domains')
renderDomains()
else
print('Failed to load domains: ' .. response:text())
end
end
local function checkAuth()
authToken = gurt.crumbs.get("auth_token")
if authToken then
print('Found auth token, checking validity...')
local response = fetch('gurt://localhost:8877/auth/me', {
headers = {
Authorization = 'Bearer ' .. authToken
}
})
print(table.tostring(response))
if response:ok() then
user = response:json()
print('Authentication successful for user: ' .. user.username)
updateUserInfo()
loadDomains()
else
print('Token invalid, redirecting to login...')
gurt.crumbs.delete('auth_token')
gurt.location.goto('../')
end
else
print('No auth token found, redirecting to login...')
gurt.location.goto('../')
end
end
local function logout()
gurt.crumbs.delete('auth_token')
print('Logged out successfully')
gurt.location.goto("../")
end
local function goToRegister()
gurt.location.goto("/register.html")
end
-- Event handlers
gurt.select('#logout-btn'):on('click', logout)
gurt.select('#new-btn'):on('click', goToRegister)
-- Initialize
print('Dashboard initialized')
checkAuth()