annotate mod_groups_oidc/mod_groups_oidc.lua @ 5715:8488ebde5739

mod_http_oauth2: Skip consent screen if requested by client and same scopes already granted This follows the intent behind the OpenID Connect 'prompt' parameter when it does not include the 'consent' keyword, that is the client wishes to skip the consent screen. If the user has already granted the exact same scopes to the exact same client in the past, then one can assume that they may grant it again.
author Kim Alvefur <zash@zash.se>
date Tue, 14 Nov 2023 23:03:37 +0100
parents 7d9dce4e7dd0
children
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);