Mercurial Hosting > hghosting
diff src/private/tools/users.html.luan @ 0:dfc36e7ed22c
init
author | Vadim Filimonov <fffilimonov@yandex.ru> |
---|---|
date | Thu, 12 May 2022 13:51:59 +0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/private/tools/users.html.luan Thu May 12 13:51:59 2022 +0400 @@ -0,0 +1,96 @@ +local Luan = require "luan:Luan.luan" +local error = Luan.error +local pairs = Luan.pairs or error() +local ipairs = Luan.ipairs or error() +local stringify = Luan.stringify or error() +local Io = require "luan:Io.luan" +local Http = require "luan:http/Http.luan" +local Shared = require "site:/lib/Shared.luan" +local head = Shared.head or error() +local header = Shared.private_header or error() +local text_to_list = Shared.text_to_list or error() +local config = Shared.config or error() +local get_raw_config = Shared.get_raw_config or error() +local save_raw_config = Shared.save_raw_config or error() +local Logging = require "luan:logging/Logging.luan" +local logger = Logging.logger "private-users.html" + + +local function response(content) +%> +<!doctype html> +<html> + <head> +<% head() %> + <title>Mercurial Private Users</title> + </head> + <body> +<% header() %> + <div content> + <h1>Private Users</h1> + <%=content%> + </div> + </body> +</html> +<% +end + +local function posted() + local users = Http.request.parameters.users or error() + users = text_to_list(users) + if #users == 0 then + return "Users cannot be empty" + end + for _, user in ipairs(users) do + if config.users[user] == nil then + return "user "..user.." is not a registered user" + end + end + local raw_config = get_raw_config() + raw_config.private = users + save_raw_config(raw_config) + return nil +end + +return function() + Io.stdout = Http.response.text_writer() + local error_msg = "" + if Http.request.method == "POST" then + local error_msg = posted() + if error_msg == nil then + response([[<p>Private updated</p>]]) + else + response([[<p error>]]..error_msg..[[</p>]]) + end + return + end +%> +<!doctype html> +<html> + <head> +<% head() %> + <title>Mercurial Private Users</title> + </head> + <body> +<% header() %> + <div content> + <h1>Private Users</h1> + <form method=post> + <p> + <label prompt>Users (one per line)</label> + <textarea name=users> +<% for user in pairs(config.private or {}) do %> +<%=user%> +<% end %> +</textarea> + <label prompt>Users who can access /private/</label> + </p> + <p> + <input type=submit value="Update Private"> + </p> + </form> + </div> + </body> +</html> +<% +end