Software / code / prosody-modules
Annotate
mod_groups_oidc/mod_groups_oidc.lua @ 6319:63ef69b2f046
mod_http_oauth2: Assume Prosody 13.0+ roles are available
Per the README, 0.12 is not supported, so we should not need to worry
about this. Plus it is assumed to be present elsewhere and that would
throw errors.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 02 Jul 2025 16:15:32 +0200 |
| parent | 5504:7d9dce4e7dd0 |
| child | 6337:486115e3b64d |
| 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); |