annotate mod_auth_pam/mod_auth_pam.lua @ 5170:4d6af8950016

mod_muc_moderation: Derive role from reserved nickname if occupant When using a different client to moderate than the one used to participate in the chat, e.g. a command line tool like clix, there's no occupant and no role to use in the permission check. Previously the default role based on affiliation was used. Now if you are present in the room using your reserved nick, the role you have there is used in the permission check instead of the default affiliation-derived role.
author Kim Alvefur <zash@zash.se>
date Sun, 19 Feb 2023 18:17:37 +0100
parents 57bb2497fadc
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1165
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 -- PAM authentication for Prosody
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 -- Copyright (C) 2013 Kim Alvefur
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 --
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4 -- Requires https://github.com/devurandom/lua-pam
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 -- and LuaPosix
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 local posix = require "posix";
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 local pam = require "pam";
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 local new_sasl = require "util.sasl".new;
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 function user_exists(username)
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 return not not posix.getpasswd(username);
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 end
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15 function test_password(username, password)
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 local h, err = pam.start("xmpp", username, {
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17 function (t)
1538
57bb2497fadc mod_auth_pam: Update for removal of PAM_ prefixes to constant names
Kim Alvefur <zash@zash.se>
parents: 1165
diff changeset
18 if #t == 1 and t[1][1] == pam.PROMPT_ECHO_OFF then
1165
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19 return { { password, 0} };
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 end
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21 end
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 });
1538
57bb2497fadc mod_auth_pam: Update for removal of PAM_ prefixes to constant names
Kim Alvefur <zash@zash.se>
parents: 1165
diff changeset
23 if h and h:authenticate() and h:endx(pam.SUCCESS) then
57bb2497fadc mod_auth_pam: Update for removal of PAM_ prefixes to constant names
Kim Alvefur <zash@zash.se>
parents: 1165
diff changeset
24 return user_exists(username), true;
1165
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 end
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 return nil, true;
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 end
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 function get_sasl_handler()
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 return new_sasl(module.host, {
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 plain_test = function(sasl, ...)
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 return test_password(...)
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 end
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 });
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 end
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
36
b8762c9fb270 mod_auth_pam: Initial commit of simple PAM authentication module
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 module:provides"auth";