kanidm/docs/v1.1.0-alpha.3/rustdoc/pam_kanidm/module/trait.PamHooks.html
2023-03-09 23:19:42 +00:00

30 lines
19 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Provides functions that are invoked by the entrypoints generated by the `pam_hooks!` macro."><meta name="keywords" content="rust, rustlang, rust-lang, PamHooks"><title>PamHooks in pam_kanidm::module - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-1f7d512b176f0f72.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Bold-124a1ca42af929b6.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-93196c7a1c3542a8.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../../static.files/light-4743e13df3dfe8c4.css"><link rel="stylesheet" disabled href="../../static.files/dark-0e1b889528bd466b.css"><link rel="stylesheet" disabled href="../../static.files/ayu-65289d5d067c7c66.css"><script id="default-settings" ></script><script src="../../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-3367e395607fafc1.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-13285aec31fa243e.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="logo-container" href="../../pam_kanidm/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2></h2></nav><nav class="sidebar"><a class="logo-container" href="../../pam_kanidm/index.html"><img class="rust-logo" src="../../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></a><h2 class="location"><a href="#">PamHooks</a></h2><div class="sidebar-elems"><section><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.acct_mgmt">acct_mgmt</a></li><li><a href="#method.sm_authenticate">sm_authenticate</a></li><li><a href="#method.sm_chauthtok">sm_chauthtok</a></li><li><a href="#method.sm_close_session">sm_close_session</a></li><li><a href="#method.sm_open_session">sm_open_session</a></li><li><a href="#method.sm_setcred">sm_setcred</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In pam_kanidm::module</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-5ec35bf9ca753509.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">pam_kanidm</a>::<wbr><a href="index.html">module</a>::<wbr><a class="trait" href="#">PamHooks</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/pam_kanidm/pam/module.rs.html#218-261">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><div class="item-decl"><pre class="rust"><code>pub trait PamHooks {
fn <a href="#method.acct_mgmt" class="fn">acct_mgmt</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pamh: &amp;<a class="enum" href="enum.PamHandle.html" title="enum pam_kanidm::module::PamHandle">PamHandle</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args: <a class="struct" href="https://doc.rust-lang.org/1.68.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;&amp;<a class="struct" href="https://doc.rust-lang.org/1.68.0/core/ffi/c_str/struct.CStr.html" title="struct core::ffi::c_str::CStr">CStr</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="type" href="../constants/type.PamFlag.html" title="type pam_kanidm::constants::PamFlag">PamFlag</a><br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="enum" href="../constants/enum.PamResultCode.html" title="enum pam_kanidm::constants::PamResultCode">PamResultCode</a> { ... }
<span class="item-spacer"></span> fn <a href="#method.sm_authenticate" class="fn">sm_authenticate</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pamh: &amp;<a class="enum" href="enum.PamHandle.html" title="enum pam_kanidm::module::PamHandle">PamHandle</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args: <a class="struct" href="https://doc.rust-lang.org/1.68.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;&amp;<a class="struct" href="https://doc.rust-lang.org/1.68.0/core/ffi/c_str/struct.CStr.html" title="struct core::ffi::c_str::CStr">CStr</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="type" href="../constants/type.PamFlag.html" title="type pam_kanidm::constants::PamFlag">PamFlag</a><br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="enum" href="../constants/enum.PamResultCode.html" title="enum pam_kanidm::constants::PamResultCode">PamResultCode</a> { ... }
<span class="item-spacer"></span> fn <a href="#method.sm_chauthtok" class="fn">sm_chauthtok</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pamh: &amp;<a class="enum" href="enum.PamHandle.html" title="enum pam_kanidm::module::PamHandle">PamHandle</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args: <a class="struct" href="https://doc.rust-lang.org/1.68.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;&amp;<a class="struct" href="https://doc.rust-lang.org/1.68.0/core/ffi/c_str/struct.CStr.html" title="struct core::ffi::c_str::CStr">CStr</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="type" href="../constants/type.PamFlag.html" title="type pam_kanidm::constants::PamFlag">PamFlag</a><br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="enum" href="../constants/enum.PamResultCode.html" title="enum pam_kanidm::constants::PamResultCode">PamResultCode</a> { ... }
<span class="item-spacer"></span> fn <a href="#method.sm_close_session" class="fn">sm_close_session</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pamh: &amp;<a class="enum" href="enum.PamHandle.html" title="enum pam_kanidm::module::PamHandle">PamHandle</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args: <a class="struct" href="https://doc.rust-lang.org/1.68.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;&amp;<a class="struct" href="https://doc.rust-lang.org/1.68.0/core/ffi/c_str/struct.CStr.html" title="struct core::ffi::c_str::CStr">CStr</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="type" href="../constants/type.PamFlag.html" title="type pam_kanidm::constants::PamFlag">PamFlag</a><br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="enum" href="../constants/enum.PamResultCode.html" title="enum pam_kanidm::constants::PamResultCode">PamResultCode</a> { ... }
<span class="item-spacer"></span> fn <a href="#method.sm_open_session" class="fn">sm_open_session</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pamh: &amp;<a class="enum" href="enum.PamHandle.html" title="enum pam_kanidm::module::PamHandle">PamHandle</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args: <a class="struct" href="https://doc.rust-lang.org/1.68.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;&amp;<a class="struct" href="https://doc.rust-lang.org/1.68.0/core/ffi/c_str/struct.CStr.html" title="struct core::ffi::c_str::CStr">CStr</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="type" href="../constants/type.PamFlag.html" title="type pam_kanidm::constants::PamFlag">PamFlag</a><br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="enum" href="../constants/enum.PamResultCode.html" title="enum pam_kanidm::constants::PamResultCode">PamResultCode</a> { ... }
<span class="item-spacer"></span> fn <a href="#method.sm_setcred" class="fn">sm_setcred</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pamh: &amp;<a class="enum" href="enum.PamHandle.html" title="enum pam_kanidm::module::PamHandle">PamHandle</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;args: <a class="struct" href="https://doc.rust-lang.org/1.68.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;&amp;<a class="struct" href="https://doc.rust-lang.org/1.68.0/core/ffi/c_str/struct.CStr.html" title="struct core::ffi::c_str::CStr">CStr</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="type" href="../constants/type.PamFlag.html" title="type pam_kanidm::constants::PamFlag">PamFlag</a><br>&nbsp;&nbsp;&nbsp;&nbsp;) -&gt; <a class="enum" href="../constants/enum.PamResultCode.html" title="enum pam_kanidm::constants::PamResultCode">PamResultCode</a> { ... }
}</code></pre></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Provides functions that are invoked by the entrypoints generated by the
<a href="../macro.pam_hooks.html"><code>pam_hooks!</code> macro</a>.</p>
<p>All of hooks are ignored by PAM dispatch by default given the default return value of <code>PAM_IGNORE</code>.
Override any functions that you want to handle with your module. See <code>man pam(3)</code>.</p>
</div></details><h2 id="provided-methods" class="small-section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.acct_mgmt" class="method has-srclink"><a class="srclink rightside" href="../../src/pam_kanidm/pam/module.rs.html#224-226">source</a><h4 class="code-header">fn <a href="#method.acct_mgmt" class="fn">acct_mgmt</a>(pamh: &amp;<a class="enum" href="enum.PamHandle.html" title="enum pam_kanidm::module::PamHandle">PamHandle</a>, args: <a class="struct" href="https://doc.rust-lang.org/1.68.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;&amp;<a class="struct" href="https://doc.rust-lang.org/1.68.0/core/ffi/c_str/struct.CStr.html" title="struct core::ffi::c_str::CStr">CStr</a>&gt;, flags: <a class="type" href="../constants/type.PamFlag.html" title="type pam_kanidm::constants::PamFlag">PamFlag</a>) -&gt; <a class="enum" href="../constants/enum.PamResultCode.html" title="enum pam_kanidm::constants::PamResultCode">PamResultCode</a></h4></section></summary><div class="docblock"><p>This function performs the task of establishing whether the user is permitted to gain access at
this time. It should be understood that the user has previously been validated by an
authentication module. This function checks for other things. Such things might be: the time of
day or the date, the terminal line, remote hostname, etc. This function may also determine
things like the expiration on passwords, and respond that the user change it before continuing.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.sm_authenticate" class="method has-srclink"><a class="srclink rightside" href="../../src/pam_kanidm/pam/module.rs.html#229-231">source</a><h4 class="code-header">fn <a href="#method.sm_authenticate" class="fn">sm_authenticate</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;pamh: &amp;<a class="enum" href="enum.PamHandle.html" title="enum pam_kanidm::module::PamHandle">PamHandle</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;args: <a class="struct" href="https://doc.rust-lang.org/1.68.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;&amp;<a class="struct" href="https://doc.rust-lang.org/1.68.0/core/ffi/c_str/struct.CStr.html" title="struct core::ffi::c_str::CStr">CStr</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="type" href="../constants/type.PamFlag.html" title="type pam_kanidm::constants::PamFlag">PamFlag</a><br>) -&gt; <a class="enum" href="../constants/enum.PamResultCode.html" title="enum pam_kanidm::constants::PamResultCode">PamResultCode</a></h4></section></summary><div class="docblock"><p>This function performs the task of authenticating the user.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.sm_chauthtok" class="method has-srclink"><a class="srclink rightside" href="../../src/pam_kanidm/pam/module.rs.html#239-241">source</a><h4 class="code-header">fn <a href="#method.sm_chauthtok" class="fn">sm_chauthtok</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;pamh: &amp;<a class="enum" href="enum.PamHandle.html" title="enum pam_kanidm::module::PamHandle">PamHandle</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;args: <a class="struct" href="https://doc.rust-lang.org/1.68.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;&amp;<a class="struct" href="https://doc.rust-lang.org/1.68.0/core/ffi/c_str/struct.CStr.html" title="struct core::ffi::c_str::CStr">CStr</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="type" href="../constants/type.PamFlag.html" title="type pam_kanidm::constants::PamFlag">PamFlag</a><br>) -&gt; <a class="enum" href="../constants/enum.PamResultCode.html" title="enum pam_kanidm::constants::PamResultCode">PamResultCode</a></h4></section></summary><div class="docblock"><p>This function is used to (re-)set the authentication token of the user.</p>
<p>The PAM library calls this function twice in succession. The first time with
PAM_PRELIM_CHECK and then, if the module does not return PAM_TRY_AGAIN, subsequently with
PAM_UPDATE_AUTHTOK. It is only on the second call that the authorization token is
(possibly) changed.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.sm_close_session" class="method has-srclink"><a class="srclink rightside" href="../../src/pam_kanidm/pam/module.rs.html#244-246">source</a><h4 class="code-header">fn <a href="#method.sm_close_session" class="fn">sm_close_session</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;pamh: &amp;<a class="enum" href="enum.PamHandle.html" title="enum pam_kanidm::module::PamHandle">PamHandle</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;args: <a class="struct" href="https://doc.rust-lang.org/1.68.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;&amp;<a class="struct" href="https://doc.rust-lang.org/1.68.0/core/ffi/c_str/struct.CStr.html" title="struct core::ffi::c_str::CStr">CStr</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="type" href="../constants/type.PamFlag.html" title="type pam_kanidm::constants::PamFlag">PamFlag</a><br>) -&gt; <a class="enum" href="../constants/enum.PamResultCode.html" title="enum pam_kanidm::constants::PamResultCode">PamResultCode</a></h4></section></summary><div class="docblock"><p>This function is called to terminate a session.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.sm_open_session" class="method has-srclink"><a class="srclink rightside" href="../../src/pam_kanidm/pam/module.rs.html#249-251">source</a><h4 class="code-header">fn <a href="#method.sm_open_session" class="fn">sm_open_session</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;pamh: &amp;<a class="enum" href="enum.PamHandle.html" title="enum pam_kanidm::module::PamHandle">PamHandle</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;args: <a class="struct" href="https://doc.rust-lang.org/1.68.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;&amp;<a class="struct" href="https://doc.rust-lang.org/1.68.0/core/ffi/c_str/struct.CStr.html" title="struct core::ffi::c_str::CStr">CStr</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;flags: <a class="type" href="../constants/type.PamFlag.html" title="type pam_kanidm::constants::PamFlag">PamFlag</a><br>) -&gt; <a class="enum" href="../constants/enum.PamResultCode.html" title="enum pam_kanidm::constants::PamResultCode">PamResultCode</a></h4></section></summary><div class="docblock"><p>This function is called to commence a session.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.sm_setcred" class="method has-srclink"><a class="srclink rightside" href="../../src/pam_kanidm/pam/module.rs.html#258-260">source</a><h4 class="code-header">fn <a href="#method.sm_setcred" class="fn">sm_setcred</a>(pamh: &amp;<a class="enum" href="enum.PamHandle.html" title="enum pam_kanidm::module::PamHandle">PamHandle</a>, args: <a class="struct" href="https://doc.rust-lang.org/1.68.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;&amp;<a class="struct" href="https://doc.rust-lang.org/1.68.0/core/ffi/c_str/struct.CStr.html" title="struct core::ffi::c_str::CStr">CStr</a>&gt;, flags: <a class="type" href="../constants/type.PamFlag.html" title="type pam_kanidm::constants::PamFlag">PamFlag</a>) -&gt; <a class="enum" href="../constants/enum.PamResultCode.html" title="enum pam_kanidm::constants::PamResultCode">PamResultCode</a></h4></section></summary><div class="docblock"><p>This function performs the task of altering the credentials of the user with respect to the
corresponding authorization scheme. Generally, an authentication module may have access to more
information about a user than their authentication token. This function is used to make such
information available to the application. It should only be called after the user has been
authenticated but before a session has been established.</p>
</div></details></div><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-PamHooks-for-PamKanidm" class="impl has-srclink"><a class="srclink rightside" href="../../src/pam_kanidm/pam/mod.rs.html#87-355">source</a><a href="#impl-PamHooks-for-PamKanidm" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.PamHooks.html" title="trait pam_kanidm::module::PamHooks">PamHooks</a> for <a class="struct" href="../struct.PamKanidm.html" title="struct pam_kanidm::PamKanidm">PamKanidm</a></h3></section></div><script src="../../implementors/pam_kanidm/pam/module/trait.PamHooks.js" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="pam_kanidm" data-themes="" data-resource-suffix="" data-rustdoc-version="1.68.0 (2c8cc3432 2023-03-06)" data-search-js="search-98d53477a794af0b.js" data-settings-js="settings-c3c521c753752a1a.js" data-settings-css="settings-08ddfdda51b8ee2e.css" ></div></body></html>