Mercurial Hosting > hghosting
changeset 4:028e74c8889d
add all_users
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 12 May 2022 16:54:11 -0600 |
parents | e3448053230a |
children | a09d8bcdc0f9 |
files | src/admin/index.html.luan src/lib/Shared.luan src/private/tools/all_users.html.luan src/private/tools/backup.html.luan src/private/tools/delete_user.html.luan src/private/tools/index.html.luan src/private/tools/private_users.html.luan src/private/tools/users.html.luan |
diffstat | 8 files changed, 206 insertions(+), 111 deletions(-) [+] |
line wrap: on
line diff
--- a/src/admin/index.html.luan Thu May 12 10:26:43 2022 -0600 +++ b/src/admin/index.html.luan Thu May 12 16:54:11 2022 -0600 @@ -1,6 +1,5 @@ local Luan = require "luan:Luan.luan" local error = Luan.error -local pairs = Luan.pairs or error() local ipairs = Luan.ipairs or error() local Io = require "luan:Io.luan" local Http = require "luan:http/Http.luan" @@ -9,19 +8,8 @@ local header = Shared.admin_header or error() local get_user = Shared.get_user or error() local config = Shared.config or error() - +local user_repos = Shared.user_repos or error() -local user_repos = {} -for _, repo in pairs(config.repos) do - for user in pairs(repo.users) do - local repos = user_repos[user] - if repos == nil then - repos = {} - user_repos[user] = repos - end - repos[#repos+1] = repo - end -end return function() local user = get_user()
--- a/src/lib/Shared.luan Thu May 12 10:26:43 2022 -0600 +++ b/src/lib/Shared.luan Thu May 12 16:54:11 2022 -0600 @@ -141,6 +141,19 @@ config.private = config.private and list_to_set(config.private) Shared.config = config +local user_repos = {} +for _, repo in pairs(config.repos) do + for user in pairs(repo.users) do + local repos = user_repos[user] + if repos == nil then + repos = {} + user_repos[user] = repos + end + repos[#repos+1] = repo + end +end +Shared.user_repos = user_repos + function Shared.get_raw_config() return deep_copy(raw_config) end
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/private/tools/all_users.html.luan Thu May 12 16:54:11 2022 -0600 @@ -0,0 +1,52 @@ +local Luan = require "luan:Luan.luan" +local error = Luan.error +local pairs = Luan.pairs or error() +local ipairs = Luan.ipairs 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 config = Shared.config or error() +local user_repos = Shared.user_repos or error() + + +return function() + Io.stdout = Http.response.text_writer() +%> +<!doctype html> +<html> + <head> +<% head() %> + <title>Mercurial All Users</title> + <script> + function deleteUser(name) { + if( confirm('Are you sure that you want to delete user "'+name+'"?') ) + location = "delete_user.html?user="+name; + } + </script> + </head> + <body> +<% header() %> + <div content> + <h1>All Users</h1> +<% for user in pairs(config.users) do %> + <p> + <%=user%> +<% local repos = user_repos[user] + if repos == nil then %> + [] <a href="javascript:deleteUser('<%=user%>')">delete user</a> +<% else %> + [ +<% for _, repo in ipairs(repos) do %> + <a href="/repo/<%=repo.name%>/"><%=repo.name%></a> +<% end %> + ] +<% end %> + </p> +<% end %> + </div> + </body> +</html> +<% +end
--- a/src/private/tools/backup.html.luan Thu May 12 10:26:43 2022 -0600 +++ b/src/private/tools/backup.html.luan Thu May 12 16:54:11 2022 -0600 @@ -13,7 +13,7 @@ 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 logger = Logging.logger "backup.html" local function response(content)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/private/tools/delete_user.html.luan Thu May 12 16:54:11 2022 -0600 @@ -0,0 +1,41 @@ +local Luan = require "luan:Luan.luan" +local error = Luan.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 config = Shared.config or error() +local user_repos = Shared.user_repos or error() +local get_raw_config = Shared.get_raw_config or error() +local save_raw_config = Shared.save_raw_config or error() + + +local function handle() + local user = Http.request.parameters.user or error() + user_repos[user] and error "has repos" + local raw_config = get_raw_config() + raw_config.users[user] = nil + save_raw_config(raw_config) + return [[<p>User <b>]]..user..[[</b> has been deleted</p>]] +end + +return function() + Io.stdout = Http.response.text_writer() +%> +<!doctype html> +<html> + <head> +<% head() %> + <title>Delete Mercurial User</title> + </head> + <body> +<% header() %> + <div content> + <h1>Delete User</h1> + <%=handle()%> + </div> + </body> +</html> +<% +end
--- a/src/private/tools/index.html.luan Thu May 12 10:26:43 2022 -0600 +++ b/src/private/tools/index.html.luan Thu May 12 16:54:11 2022 -0600 @@ -20,8 +20,9 @@ <% header() %> <div content> <h1>Private Tools</h1> - <p><a href="users.html">edit private users</a></p> + <p><a href="private_users.html">edit private users</a></p> <p><a href="backup.html">edit backup</a></p> + <p><a href="all_users.html">all users</a></p> <p><a href="links.txt">links.txt</a></p> </div> </body>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/private/tools/private_users.html.luan Thu May 12 16:54:11 2022 -0600 @@ -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
--- a/src/private/tools/users.html.luan Thu May 12 10:26:43 2022 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,96 +0,0 @@ -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