annotate mod_groups_migration/mod_groups_migration.lua @ 4387:e5b4ebacbf7a

mod_groups_migration: module helping migration to groups Creates a default group with well-known ID at startup if that group does not exist yet. Adds all users to it.
author Jonas Schäfer <jonas@wielicki.name>
date Mon, 25 Jan 2021 21:34:32 +0100
parents
children 679a0c9d365d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4387
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
1 local host = module.host;
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
2 local usermanager = require"core.usermanager";
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
3
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
4 local mod_groups = module:depends("groups_internal");
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
5 local default_group_id = module:get_option("group_default_id", "default");
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
6
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
7 local function trigger_migration()
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
8 if mod_groups.exists(default_group_id) then
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
9 module:log("debug", "skipping migration, group exists already")
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
10 return
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
11 end
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
12 module:log("info", "migrating to mod_groups!")
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
13
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
14 local group_id = default_group_id;
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
15 local ok, err = mod_groups.create({name="default"}, false, group_id);
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
16 if not ok then
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
17 module:log("error", "failed to create group: %s", err)
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
18 return
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
19 end
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
20
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
21 for user in usermanager.users(host) do
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
22 mod_groups.add_member(group_id, user, true);
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
23 module:log("debug", "added %s to %s", user, group_id)
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
24 end
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
25 module:log("debug", "synchronising group %s", group_id)
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
26 mod_groups.sync(group_id)
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
27 module:log("info", "added all users to group %s", group_id)
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
28 end
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
29
e5b4ebacbf7a mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff changeset
30 module:hook_global("server-started", trigger_migration, -100)