Annotate

mod_groups_oidc/mod_groups_oidc.lua @ 5616:e469642e6a6c

mod_muc_block_pm: Allow private messages to yourself No harm in it. Beagle apparently uses it for XEP-0333 in public channels
author Kim Alvefur <zash@zash.se>
date Wed, 19 Jul 2023 16:59:16 +0200
parent 5504:7d9dce4e7dd0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5504
7d9dce4e7dd0 mod_groups_oidc: Expose groups to OAuth clients
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 local array = require "util.array";
7d9dce4e7dd0 mod_groups_oidc: Expose groups to OAuth clients
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2
7d9dce4e7dd0 mod_groups_oidc: Expose groups to OAuth clients
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 module:add_item("openid-claim", "groups");
7d9dce4e7dd0 mod_groups_oidc: Expose groups to OAuth clients
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4
7d9dce4e7dd0 mod_groups_oidc: Expose groups to OAuth clients
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 local group_memberships = module:open_store("groups", "map");
7d9dce4e7dd0 mod_groups_oidc: Expose groups to OAuth clients
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 local function user_groups(username)
7d9dce4e7dd0 mod_groups_oidc: Expose groups to OAuth clients
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 return pairs(group_memberships:get_all(username) or {});
7d9dce4e7dd0 mod_groups_oidc: Expose groups to OAuth clients
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 end
7d9dce4e7dd0 mod_groups_oidc: Expose groups to OAuth clients
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9
7d9dce4e7dd0 mod_groups_oidc: Expose groups to OAuth clients
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 module:hook("token/userinfo", function(event)
7d9dce4e7dd0 mod_groups_oidc: Expose groups to OAuth clients
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 local userinfo = event.userinfo;
7d9dce4e7dd0 mod_groups_oidc: Expose groups to OAuth clients
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 if event.claims:contains("groups") then
7d9dce4e7dd0 mod_groups_oidc: Expose groups to OAuth clients
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 userinfo.groups = array(user_groups(event.username));
7d9dce4e7dd0 mod_groups_oidc: Expose groups to OAuth clients
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 end
7d9dce4e7dd0 mod_groups_oidc: Expose groups to OAuth clients
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 end);