mirror of
https://github.com/getnamingo/registry.git
synced 2025-06-29 15:43:23 +02:00
Added domains page
- Added api security fixes - GUI updates
This commit is contained in:
parent
dd893c2822
commit
54fb9c26f2
12 changed files with 62 additions and 29 deletions
2
cp/public/assets/css/tabulator.min.css
vendored
Normal file
2
cp/public/assets/css/tabulator.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
cp/public/assets/css/tabulator.min.css.map
Normal file
1
cp/public/assets/css/tabulator.min.css.map
Normal file
File diff suppressed because one or more lines are too long
2
cp/public/assets/css/tabulator_bootstrap5.min.css
vendored
Normal file
2
cp/public/assets/css/tabulator_bootstrap5.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
cp/public/assets/css/tabulator_bootstrap5.min.css.map
Normal file
1
cp/public/assets/css/tabulator_bootstrap5.min.css.map
Normal file
File diff suppressed because one or more lines are too long
3
cp/public/assets/js/tabulator.min.js
vendored
Normal file
3
cp/public/assets/js/tabulator.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
cp/public/assets/js/tabulator.min.js.map
Normal file
1
cp/public/assets/js/tabulator.min.js.map
Normal file
File diff suppressed because one or more lines are too long
3
cp/public/assets/js/tabulator_esm.min.js
vendored
Normal file
3
cp/public/assets/js/tabulator_esm.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
cp/public/assets/js/tabulator_esm.min.js.map
Normal file
1
cp/public/assets/js/tabulator_esm.min.js.map
Normal file
File diff suppressed because one or more lines are too long
|
@ -1,6 +1,6 @@
|
||||||
{% extends "layouts/app.twig" %}
|
{% extends "layouts/app.twig" %}
|
||||||
|
|
||||||
{% block title %}Domains{% endblock %}
|
{% block title %}{{ __('Domains') }}{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<div class="page-wrapper">
|
<div class="page-wrapper">
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
Overview
|
Overview
|
||||||
</div>
|
</div>
|
||||||
<h2 class="page-title">
|
<h2 class="page-title">
|
||||||
Domains
|
{{ __('Domains') }}
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
<!-- Page title actions -->
|
<!-- Page title actions -->
|
||||||
|
@ -42,28 +42,26 @@
|
||||||
<!-- Page body -->
|
<!-- Page body -->
|
||||||
<div class="page-body">
|
<div class="page-body">
|
||||||
<div class="container-xl">
|
<div class="container-xl">
|
||||||
<div class="card">
|
<div class="col-12">
|
||||||
<div class="card-body">
|
<div class="card">
|
||||||
<div id="table-default" class="table-responsive">
|
<div class="card-header">
|
||||||
<table id="domainTable" class="table">
|
<h3 class="card-title">{{ __('Domains') }}</h3>
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th><button class="table-sort" data-sort="sort-id">ID</button></th>
|
|
||||||
<th><button class="table-sort" data-sort="sort-name">Name</button></th>
|
|
||||||
<th><button class="table-sort" data-sort="sort-crdate">Creation Date</button></th>
|
|
||||||
<th><button class="table-sort" data-sort="sort-exdate">Expiration Date</button></th>
|
|
||||||
<th><button class="table-sort" data-sort="sort-registrant">Registrant</button></th>
|
|
||||||
<th><button class="table-sort" data-sort="sort-status">Status</button></th>
|
|
||||||
<th>Actions</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody class="table-tbody">
|
|
||||||
<!-- Rows will be added here dynamically -->
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
<div class="card-body border-bottom py-3">
|
||||||
</div>
|
<div class="d-flex">
|
||||||
|
<div class="ms-auto text-secondary">
|
||||||
|
Search:
|
||||||
|
<div class="ms-2 d-inline-block">
|
||||||
|
<input id="search-input" type="text" class="form-control form-control-sm" aria-label="Search invoice">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="table-responsive">
|
||||||
|
<div id="domainTable"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<footer class="footer footer-transparent d-print-none">
|
<footer class="footer footer-transparent d-print-none">
|
||||||
|
|
|
@ -6,15 +6,19 @@
|
||||||
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
|
<meta http-equiv="X-UA-Compatible" content="ie=edge"/>
|
||||||
<title>{% block title %}{% endblock %} | Namingo</title>
|
<title>{% block title %}{% endblock %} | Namingo</title>
|
||||||
<!-- CSS files -->
|
<!-- CSS files -->
|
||||||
{% include 'partials/css.twig' %}
|
{% if route_is('domains') or route_is('contacts') or route_is('hosts') or route_is('logs') %}
|
||||||
|
{% include 'partials/css-tables.twig' %}
|
||||||
|
{% else %}
|
||||||
|
{% include 'partials/css.twig' %}
|
||||||
|
{% endif %}
|
||||||
<style>
|
<style>
|
||||||
@import url('https://rsms.me/inter/inter.css');
|
@import url('https://rsms.me/inter/inter.css');
|
||||||
:root {
|
:root {
|
||||||
--tblr-font-sans-serif: Inter, -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif;
|
--tblr-font-sans-serif: Inter, -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue, sans-serif;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body class="layout-fluid"{% if screen_mode == 'dark' %} data-bs-theme="dark"{% endif %}>
|
<body{% if screen_mode == 'dark' %} data-bs-theme="dark"{% endif %}>
|
||||||
<div class="page">
|
<div class="page">
|
||||||
<!-- Navbar -->
|
<!-- Navbar -->
|
||||||
<header class="navbar navbar-expand-md navbar-light d-print-none">
|
<header class="navbar navbar-expand-md navbar-light d-print-none">
|
||||||
|
@ -30,7 +34,7 @@
|
||||||
<div class="navbar-nav flex-row order-md-last">
|
<div class="navbar-nav flex-row order-md-last">
|
||||||
<div class="nav-item d-none d-md-flex me-3">
|
<div class="nav-item d-none d-md-flex me-3">
|
||||||
<div class="btn-list">
|
<div class="btn-list">
|
||||||
<div class="dropdown">
|
<div class="dropdown">
|
||||||
<a href="#" class="btn dropdown-toggle" data-bs-toggle="dropdown"><span class="flag flag-country-gb-eng"></span> English</a>
|
<a href="#" class="btn dropdown-toggle" data-bs-toggle="dropdown"><span class="flag flag-country-gb-eng"></span> English</a>
|
||||||
<div class="dropdown-menu">
|
<div class="dropdown-menu">
|
||||||
<a href="/lang?en_US" class="dropdown-item"><span class="flag flag-country-gb-eng"></span> English</a>
|
<a href="/lang?en_US" class="dropdown-item"><span class="flag flag-country-gb-eng"></span> English</a>
|
||||||
|
@ -41,12 +45,12 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="d-none d-md-flex">
|
<div class="d-none d-md-flex">
|
||||||
<a href="/mode" class="nav-link px-0 hide-theme-dark" title="Enable dark mode" data-bs-toggle="tooltip"
|
<a href="/mode" class="nav-link px-0 hide-theme-dark" title="Enable dark mode" data-bs-toggle="tooltip"
|
||||||
data-bs-placement="bottom">
|
data-bs-placement="bottom">
|
||||||
<!-- Download SVG icon from http://tabler-icons.io/i/moon -->
|
<!-- Download SVG icon from http://tabler-icons.io/i/moon -->
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" /></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z" /></svg>
|
||||||
</a>
|
</a>
|
||||||
<a href="/mode" class="nav-link px-0 hide-theme-light" title="Enable light mode" data-bs-toggle="tooltip"
|
<a href="/mode" class="nav-link px-0 hide-theme-light" title="Enable light mode" data-bs-toggle="tooltip"
|
||||||
data-bs-placement="bottom">
|
data-bs-placement="bottom">
|
||||||
<!-- Download SVG icon from http://tabler-icons.io/i/sun -->
|
<!-- Download SVG icon from http://tabler-icons.io/i/sun -->
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><circle cx="12" cy="12" r="4" /><path d="M3 12h1m8 -9v1m8 8h1m-9 8v1m-6.4 -15.4l.7 .7m12.1 -.7l-.7 .7m0 11.4l.7 .7m-12.1 -.7l-.7 .7" /></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" class="icon" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><circle cx="12" cy="12" r="4" /><path d="M3 12h1m8 -9v1m8 8h1m-9 8v1m-6.4 -15.4l.7 .7m12.1 -.7l-.7 .7m0 11.4l.7 .7m-12.1 -.7l-.7 .7" /></svg>
|
||||||
</a>
|
</a>
|
||||||
|
|
6
cp/resources/views/partials/css-tables.twig
Normal file
6
cp/resources/views/partials/css-tables.twig
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<link href="/assets/css/tabler.min.css" rel="stylesheet"/>
|
||||||
|
<link href="/assets/css/tabler-flags.min.css" rel="stylesheet"/>
|
||||||
|
<link href="/assets/css/tabler-payments.min.css" rel="stylesheet"/>
|
||||||
|
<link href="/assets/css/tabler-vendors.min.css" rel="stylesheet"/>
|
||||||
|
<link href="/assets/css/tabulator.min.css" rel="stylesheet">
|
||||||
|
<link href="/assets/css/tabulator_bootstrap5.min.css" rel="stylesheet">
|
|
@ -62,6 +62,17 @@ $app->any('/api[/{params:.*}]', function (
|
||||||
'password' => $db['mysql']['password'],
|
'password' => $db['mysql']['password'],
|
||||||
'database' => $db['mysql']['database'],
|
'database' => $db['mysql']['database'],
|
||||||
'basePath' => '/api',
|
'basePath' => '/api',
|
||||||
|
'middlewares' => 'authorization,sanitation',
|
||||||
|
'authorization.tableHandler' => function ($operation, $tableName) {
|
||||||
|
$restrictedTables = ['users', 'contact_authInfo', 'contact_postalInfo', 'domain_authInfo', 'secdns'];
|
||||||
|
return !in_array($tableName, $restrictedTables);
|
||||||
|
},
|
||||||
|
'authorization.columnHandler' => function ($operation, $tableName, $columnName) {
|
||||||
|
return !($tableName == 'registrar' && $columnName == 'pw');
|
||||||
|
},
|
||||||
|
'sanitation.handler' => function ($operation, $tableName, $column, $value) {
|
||||||
|
return is_string($value) ? strip_tags($value) : $value;
|
||||||
|
},
|
||||||
]);
|
]);
|
||||||
$api = new Api($config);
|
$api = new Api($config);
|
||||||
$response = $api->handle($request);
|
$response = $api->handle($request);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue