Mercurial > crates > nonstick
comparison src/handle.rs @ 90:f6186e41399b
Miscellaneous fixes and cleanup:
- Rename `get_user` to `username` and `get_authtok` to `authtok`.
- Use pam_strerror for error messages.
- Add library linkage to build.rs (it was missing???).
| author | Paul Fisher <paul@pfish.zone> |
|---|---|
| date | Sat, 14 Jun 2025 09:30:16 -0400 |
| parents | 5aa1a010f1e8 |
| children | 039aae9a01f7 |
comparison
equal
deleted
inserted
replaced
| 89:dd3e9c4bcde3 | 90:f6186e41399b |
|---|---|
| 72 /// | 72 /// |
| 73 /// ```no_run | 73 /// ```no_run |
| 74 /// # use nonstick::PamShared; | 74 /// # use nonstick::PamShared; |
| 75 /// # fn _doc(handle: &mut impl PamShared) -> Result<(), Box<dyn std::error::Error>> { | 75 /// # fn _doc(handle: &mut impl PamShared) -> Result<(), Box<dyn std::error::Error>> { |
| 76 /// // Get the username using the default prompt. | 76 /// // Get the username using the default prompt. |
| 77 /// let user = handle.get_user(None)?; | 77 /// let user = handle.username(None)?; |
| 78 /// // Get the username using a custom prompt. | 78 /// // Get the username using a custom prompt. |
| 79 /// // If this were actually called right after the above, | 79 /// // If this were actually called right after the above, |
| 80 /// // both user and user_2 would have the same value. | 80 /// // both user and user_2 would have the same value. |
| 81 /// let user_2 = handle.get_user(Some("who ARE you even???"))?; | 81 /// let user_2 = handle.username(Some("who ARE you even???"))?; |
| 82 /// # Ok(()) | 82 /// # Ok(()) |
| 83 /// # } | 83 /// # } |
| 84 /// ``` | 84 /// ``` |
| 85 /// | 85 /// |
| 86 /// [man]: https://www.man7.org/linux/man-pages/man3/pam_get_user.3.html | 86 /// [man]: https://www.man7.org/linux/man-pages/man3/pam_get_user.3.html |
| 87 /// [mwg]: https://www.chiark.greenend.org.uk/doc/libpam-doc/html/mwg-expected-by-module-item.html#mwg-pam_get_user | 87 /// [mwg]: https://www.chiark.greenend.org.uk/doc/libpam-doc/html/mwg-expected-by-module-item.html#mwg-pam_get_user |
| 88 fn get_user(&mut self, prompt: Option<&str>) -> Result<&str>; | 88 fn username(&mut self, prompt: Option<&str>) -> Result<&str>; |
| 89 | 89 |
| 90 trait_item!( | 90 trait_item!( |
| 91 /// The identity of the user for whom service is being requested. | 91 /// The identity of the user for whom service is being requested. |
| 92 /// | 92 /// |
| 93 /// Unlike [`get_user`](Self::get_user), this will simply get | 93 /// Unlike [`username`](Self::username), this will simply get |
| 94 /// the current state of the user item, and not request the username. | 94 /// the current state of the user item, and not request the username. |
| 95 /// While PAM usually sets this automatically in the `get_user` call, | 95 /// While PAM usually sets this automatically in the `username` call, |
| 96 /// it may be changed by a module during the PAM transaction. | 96 /// it may be changed by a module during the PAM transaction. |
| 97 /// Applications should check it after each step of the PAM process. | 97 /// Applications should check it after each step of the PAM process. |
| 98 get = user_item, | 98 get = user_item, |
| 99 item = "PAM_USER", | 99 item = "PAM_USER", |
| 100 see = Self::get_user | 100 see = Self::username |
| 101 ); | 101 ); |
| 102 trait_item!( | 102 trait_item!( |
| 103 /// Sets the identity of the logging-in user. | 103 /// Sets the identity of the logging-in user. |
| 104 /// | 104 /// |
| 105 /// Usually this will be set during the course of | 105 /// Usually this will be set during the course of |
| 106 /// a [`get_user`](Self::get_user) call, but you may set it manually | 106 /// a [`username`](Self::username) call, but you may set it manually |
| 107 /// or change it during the PAM process. | 107 /// or change it during the PAM process. |
| 108 set = set_user_item, | 108 set = set_user_item, |
| 109 item = "PAM_USER", | 109 item = "PAM_USER", |
| 110 see = Self::user_item | 110 see = Self::user_item |
| 111 ); | 111 ); |
| 196 | 196 |
| 197 trait_item!( | 197 trait_item!( |
| 198 /// Gets the user's authentication token (e.g., password). | 198 /// Gets the user's authentication token (e.g., password). |
| 199 /// | 199 /// |
| 200 /// This is usually set automatically when | 200 /// This is usually set automatically when |
| 201 /// [`get_authtok`](PamHandleModule::get_authtok) is called, | 201 /// [`authtok`](PamHandleModule::authtok) is called, |
| 202 /// but can be manually set. | 202 /// but can be manually set. |
| 203 set = set_authtok_item, | 203 set = set_authtok_item, |
| 204 item = "PAM_AUTHTOK", | 204 item = "PAM_AUTHTOK", |
| 205 see = PamHandleModule::authtok_item | 205 see = PamHandleModule::authtok_item |
| 206 ); | 206 ); |
| 246 /// | 246 /// |
| 247 /// ```no_run | 247 /// ```no_run |
| 248 /// # use nonstick::handle::PamHandleModule; | 248 /// # use nonstick::handle::PamHandleModule; |
| 249 /// # fn _doc(handle: &mut impl PamHandleModule) -> Result<(), Box<dyn std::error::Error>> { | 249 /// # fn _doc(handle: &mut impl PamHandleModule) -> Result<(), Box<dyn std::error::Error>> { |
| 250 /// // Get the user's password using the default prompt. | 250 /// // Get the user's password using the default prompt. |
| 251 /// let pass = handle.get_authtok(None)?; | 251 /// let pass = handle.authtok(None)?; |
| 252 /// // Get the user's password using a custom prompt. | 252 /// // Get the user's password using a custom prompt. |
| 253 /// let pass = handle.get_authtok(Some("Reveal your secrets!"))?; | 253 /// let pass = handle.authtok(Some("Reveal your secrets!"))?; |
| 254 /// Ok(()) | 254 /// Ok(()) |
| 255 /// # } | 255 /// # } |
| 256 /// ``` | 256 /// ``` |
| 257 /// | 257 /// |
| 258 /// [man]: https://www.man7.org/linux/man-pages/man3/pam_get_authtok.3.html | 258 /// [man]: https://www.man7.org/linux/man-pages/man3/pam_get_authtok.3.html |
| 259 /// [mwg]: https://www.chiark.greenend.org.uk/doc/libpam-doc/html/mwg-expected-by-module-item.html#mwg-pam_get_item | 259 /// [mwg]: https://www.chiark.greenend.org.uk/doc/libpam-doc/html/mwg-expected-by-module-item.html#mwg-pam_get_item |
| 260 fn get_authtok(&mut self, prompt: Option<&str>) -> Result<&str>; | 260 fn authtok(&mut self, prompt: Option<&str>) -> Result<&str>; |
| 261 | 261 |
| 262 trait_item!( | 262 trait_item!( |
| 263 /// Gets the user's authentication token (e.g., password). | 263 /// Gets the user's authentication token (e.g., password). |
| 264 /// | 264 /// |
| 265 /// This is normally set automatically by PAM when calling | 265 /// This is normally set automatically by PAM when calling |
| 266 /// [`get_authtok`](Self::get_authtok), but can be set explicitly. | 266 /// [`authtok`](Self::authtok), but can be set explicitly. |
| 267 /// | 267 /// |
| 268 /// Like `get_authtok`, this should only ever be called | 268 /// Like `authtok`, this should only ever be called |
| 269 /// by *authentication* and *password-change* PAM modules. | 269 /// by *authentication* and *password-change* PAM modules. |
| 270 get = authtok_item, | 270 get = authtok_item, |
| 271 item = "PAM_AUTHTOK", | 271 item = "PAM_AUTHTOK", |
| 272 see = Self::get_authtok | 272 see = Self::authtok |
| 273 ); | 273 ); |
| 274 | 274 |
| 275 trait_item!( | 275 trait_item!( |
| 276 /// Gets the user's old authentication token when changing passwords. | 276 /// Gets the user's old authentication token when changing passwords. |
| 277 /// | 277 /// |
