diff --git a/.gitignore b/.gitignore index 4776bd5..e19668a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ -./TraefikAccessControl +/TraefikAccessControl *.db tac_data.json diff --git a/static/js/dashboard.js b/static/js/dashboard.js index 4eda3a2..a49faea 100644 --- a/static/js/dashboard.js +++ b/static/js/dashboard.js @@ -11,6 +11,11 @@ const createBearerButton = document.getElementById("bearerCreateButton"); createBearerButton.onclick = onCreateBearer; + + const createBearerButtonMobile = document.getElementById("bearerCreateButtonMobile"); + if (createBearerButtonMobile) { + createBearerButtonMobile.onclick = onCreateBearer; + } function onDeleteBearer(event) { event.preventDefault(); diff --git a/static/style/common.css b/static/style/common.css index 91eac00..511f704 100644 --- a/static/style/common.css +++ b/static/style/common.css @@ -39,6 +39,92 @@ main { .page-footer .container { font-size: 0.9rem; } + + /* Make tables scrollable on mobile */ + .table-wrapper { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + margin-bottom: 1.5rem; + } + + table { + min-width: 100%; + font-size: 0.85rem; + } + + table th, table td { + padding: 8px 5px; + } + + /* Stack form inputs vertically on mobile */ + .input-field { + margin-bottom: 1rem; + } + + /* Make buttons full width on mobile */ + .btn, button { + width: 100%; + margin-bottom: 0.5rem; + } + + /* Adjust spacing for headings */ + h1 { + font-size: 2rem; + } + + h4 { + font-size: 1.5rem; + margin-top: 1.5rem; + } + + /* Better spacing for icons in tables */ + .material-icons { + font-size: 1.2rem; + } + + /* Stack checkboxes and labels better on mobile */ + label { + font-size: 0.9rem; + } + + /* Improve password change section on mobile */ + .change-password-wrapper { + display: flex; + flex-direction: column; + gap: 0.5rem; + } + + .change-password-wrapper .input-field { + width: 100%; + } + + .change-password-wrapper button { + width: 100%; + } + + /* Allow long tokens to wrap on mobile */ + table td { + word-break: break-all; + overflow-wrap: break-word; + } + + /* Ensure proper spacing for checkbox labels */ + [type="checkbox"]+span { + padding-left: 30px; + font-size: 0.9rem; + } + + /* Better button spacing on mobile */ + .row { + margin-bottom: 10px; + } + + /* Ensure inputs don't overflow */ + input[type="text"], + input[type="password"], + select { + font-size: 1rem; + } } .page-footer { @@ -53,6 +139,11 @@ main { position: relative; } +/* Ensure select dropdowns are properly styled */ +select { + display: block; +} + #infoCard { -webkit-animation: fadeOut 1.5s forwards; -webkit-animation-iteration-count: 1; diff --git a/templates/admin.html b/templates/admin.html index 2ec0855..0b7b298 100644 --- a/templates/admin.html +++ b/templates/admin.html @@ -6,107 +6,130 @@

{{.title}}

All users:

- - - - - - - - - - {{range .users}} - - - - - - {{end}} - - - - - - -
UsernameIs AdminDelete
{{.Username}} - {{if .IsAdmin}} - done - {{else}} - clear - {{end}} - delete_forever
- -
+
+ + + + + + + + + + {{range .users}} + + + + + + {{end}} + +
UsernameIs AdminDelete
{{.Username}} + {{if .IsAdmin}} + done + {{else}} + clear + {{end}} + delete_forever
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+

All sites:

- - - - - - - - - - - - - - {{range .sites}} - - - - - - - - - - {{end}} - - - - - - - - - -
HostPath-PrefixPrompt Basic AuthAnonymous AccessConfig OKEditDelete
{{.Host}}{{.PathPrefix}} - {{if .PromptBasicAuth}} - done - {{else}} - clear - {{end}} - - {{if .AnonymousAccess}} - done - {{else}} - clear - {{end}} - - {{if .ConfigOK}} - done - {{else}} - clear - {{end}} - editdelete_forever
- -
+
+ + + + + + + + + + + + + + {{range .sites}} + + + + + + + + + + {{end}} + +
HostPath-PrefixPrompt Basic AuthAnonymous AccessConfig OKEditDelete
{{.Host}}{{.PathPrefix}} + {{if .PromptBasicAuth}} + done + {{else}} + clear + {{end}} + + {{if .AnonymousAccess}} + done + {{else}} + clear + {{end}} + + {{if .ConfigOK}} + done + {{else}} + clear + {{end}} + editdelete_forever
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+

If the config for a site is not OK, most probably the Traefik configuration is not set properly. More information about this can be found in the Dashboard

Your available sites:

- - - - - - - - - - {{range .siteMappings}} - {{if and (.Site) (.SiteMapping) }} - - - - - - {{else}} - - {{end}} - {{end}} - -
HostPath-PrefixBasicAuth Allowed
{{.Site.Host}}{{.Site.PathPrefix}} - {{if .SiteMapping.BasicAuthAllowed}} - done - {{else}} - clear - {{end}} -
+
+ + + + + + + + + + {{range .siteMappings}} + {{if and (.Site) (.SiteMapping) }} + + + + + + {{else}} + + {{end}} + {{end}} + +
HostPath-PrefixBasicAuth Allowed
{{.Site.Host}}{{.Site.PathPrefix}} + {{if .SiteMapping.BasicAuthAllowed}} + done + {{else}} + clear + {{end}} +
+

Your bearer tokens:

- - - - - - - - - - {{range .tokens}} - - - - - - {{end}} - - - - - - -
NameTokenDelete
{{.Name}}{{.Token}}delete_forever
- -
+
+ + + + + + + + + + {{range .tokens}} + + + + + + {{end}} + + + + + + +
NameTokenDelete
{{.Name}}{{.Token}}delete_forever
+ +
+
+

Change Password:

-
+
- +
+ +
diff --git a/templates/site.html b/templates/site.html index da525fb..f174ac9 100644 --- a/templates/site.html +++ b/templates/site.html @@ -5,91 +5,112 @@

Edit Site

-
- - +
+
+ + +
-
- - +
+
+ + +
-
- Config OK: - {{if .site.ConfigOK}} - done - {{else}} - clear - {{end}} - +
+
+ Config OK: + {{if .site.ConfigOK}} + done + {{else}} + clear + {{end}} + +
+
+
+
+ +
-
- +
+
+ +
-
- +
+
+ +
-
{{if not .site.AnonymousAccess}}

Users mapped to site:

- - - - - - - - - - {{range .siteMappings}} - - - - - - {{end}} - - + + + {{end}} + +
UsernameBasicAuth AllowedDelete
{{.User.Username}} - {{if .SiteMapping.BasicAuthAllowed}} - done - {{else}} - clear - {{end}} - delete_forever
- + + + + + + + + + {{range .siteMappings}} + + + - - - - -
UsernameBasicAuth AllowedDelete
{{.User.Username}} + {{if .SiteMapping.BasicAuthAllowed}} + done + {{else}} + clear {{end}} - - - -
+
delete_forever
+
+
+
+ + +
+
+ +
+
+ +
+
{{end}}