view mod_groups_migration/mod_groups_migration.lua @ 5390:f2363e6d9a64

mod_http_oauth2: Advertise the currently supported id_token signing algorithm This field is REQUIRED. The algorithm RS256 MUST be included, but isn't because we don't implement it, as that would require implementing a pile of additional cryptography and JWT stuff. Instead the id_token is signed using the client secret, which allows verification by the client, since it's a shared secret per OpenID Connect Core 1.0 ยง 10.1 under Symmetric Signatures. OpenID Connect Discovery 1.0 has a lot of REQUIRED and MUST clauses that are not supported here, but that's okay because this is served from the RFC 8414 OAuth 2.0 Authorization Server Metadata .well-known endpoint!
author Kim Alvefur <zash@zash.se>
date Sun, 30 Apr 2023 16:13:40 +0200
parents dd3bfe8f182e
children
line wrap: on
line source

local host = module.host;
local usermanager = require"core.usermanager";

local mod_groups = module:depends("groups_internal");
local default_group_id = module:get_option("group_default_id", "default");
local default_group_name = module:get_option("group_default_name", "default");

local function trigger_migration()
	if mod_groups.exists(default_group_id) then
		module:log("debug", "skipping migration, group exists already")
		return
	end
	module:log("info", "migrating to mod_groups!")

	local group_id = default_group_id;
	local ok, err = mod_groups.create({name=default_group_name}, true, group_id);
	if not ok then
		module:log("error", "failed to create group: %s", err)
		return
	end

	for user in usermanager.users(host) do
		mod_groups.add_member(group_id, user, true);
		module:log("debug", "added %s to %s", user, group_id)
	end
	module:log("debug", "synchronising group %s", group_id)
	mod_groups.sync(group_id)
	module:log("info", "added all users to group %s", group_id)
end

module:hook_global("server-started", trigger_migration, -100)