Software /
code /
prosody-modules
Annotate
mod_groups_migration/mod_groups_migration.lua @ 5425:3b30635d215c
mod_http_oauth2: Support granting zero role-scopes
It seems Very Bad that if you uncheck all roles on the consent page, you
get the default scopes, which seems the opposite of what you probably
intended. Currently, mod_tokenauth will do the same thing, so work is
needed there too to allow issuing tokens without roles.
A token without a role could be used for OIDC login, and not much else.
This seems like a valuable thing to support.
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Sun, 07 May 2023 19:29:15 +0200 |
parent | 4416:dd3bfe8f182e |
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"); |
4416
dd3bfe8f182e
mod_groups_migration: make default group name configurable
Jonas Schäfer <jonas@wielicki.name>
parents:
4391
diff
changeset
|
6 local default_group_name = module:get_option("group_default_name", "default"); |
4387
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
7 |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
8 local function trigger_migration() |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
9 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
|
10 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
|
11 return |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
12 end |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
13 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
|
14 |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
15 local group_id = default_group_id; |
4416
dd3bfe8f182e
mod_groups_migration: make default group name configurable
Jonas Schäfer <jonas@wielicki.name>
parents:
4391
diff
changeset
|
16 local ok, err = mod_groups.create({name=default_group_name}, true, group_id); |
4387
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
17 if not ok then |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
18 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
|
19 return |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
20 end |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
21 |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
22 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
|
23 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
|
24 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
|
25 end |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
26 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
|
27 mod_groups.sync(group_id) |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
28 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
|
29 end |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
30 |
e5b4ebacbf7a
mod_groups_migration: module helping migration to groups
Jonas Schäfer <jonas@wielicki.name>
parents:
diff
changeset
|
31 module:hook_global("server-started", trigger_migration, -100) |