mirror of
https://github.com/Alexander-D-Karpov/webring.git
synced 2026-03-16 22:07:41 +03:00
* major changes
Introduce full user system and approval workflow
——————————————————————————————————————————
Login & sessions
Telegram one‑click login (/login → /auth/telegram) with HMAC verification
New users and sessions tables; telegram_id now optional, TTL‑based cleanup job
Secure session_id cookie (configurable TTL and Secure/SameSite flags)
User dashboard (/user)
Lists the member’s sites and their uptime status
Forms to submit new site or update requests; validation and slug/url sanitisation
View pending requests with change diff
Request storage
update_requests table captures create/update ops as JSONB “changed_fields”
Admin review
/admin/requests interface to approve / reject queued requests
Approval auto‑creates sites (with ordered display_order) or patches existing ones, then refreshes favicon
Super‑admin panel
/admin/setup lists all users, toggle is_admin and forcibly logs them out
Notifications
On every new request, all admins with a Telegram ID receive a Markdown summary via bot API
Public UI tweaks
Header shows login/logout, role‑aware links and call‑to‑action cards
/submit page creates a queued request
Config & env
Added TELEGRAM_BOT_TOKEN, TELEGRAM_BOT_USERNAME, SESSION_TTL_HOURS, SESSION_SECURE_COOKIE
.env.template updated accordingly
Migrations 004–010
Users, sessions, foreign key on sites, display_order, update_requests, telegram_id nullability
BREAKING CHANGE
Environment must supply Telegram bot credentials
Database must be migrated; existing “dashboard” auth remains but admin routes are now session‑protected where applicable
44 lines
822 B
TOML
44 lines
822 B
TOML
root = "."
|
|
testdata_dir = "testdata"
|
|
tmp_dir = "tmp"
|
|
|
|
[build]
|
|
args_bin = []
|
|
bin = "./tmp/main"
|
|
cmd = "go build -o ./tmp/main ./cmd/server"
|
|
delay = 1000
|
|
exclude_dir = ["assets", "tmp", "vendor", "testdata", "docs"]
|
|
exclude_file = []
|
|
exclude_regex = ["_test.go"]
|
|
exclude_unchanged = false
|
|
follow_symlink = false
|
|
full_bin = ""
|
|
include_dir = []
|
|
include_ext = ["go", "tpl", "tmpl", "html"]
|
|
include_file = []
|
|
kill_delay = "0s"
|
|
log = "build-errors.log"
|
|
poll = false
|
|
poll_interval = 0
|
|
rerun = false
|
|
rerun_delay = 500
|
|
send_interrupt = false
|
|
stop_on_root = false
|
|
|
|
[color]
|
|
app = ""
|
|
build = "yellow"
|
|
main = "magenta"
|
|
runner = "green"
|
|
watcher = "cyan"
|
|
|
|
[log]
|
|
main_only = false
|
|
time = false
|
|
|
|
[misc]
|
|
clean_on_exit = false
|
|
|
|
[screen]
|
|
clear_on_rebuild = false
|
|
keep_scroll = true |