comparison src/libpam/handle.rs @ 147:4d7333337569

Implement Transaction for LibPamTransaction.
author Paul Fisher <paul@pfish.zone>
date Sun, 06 Jul 2025 19:23:02 -0400
parents 1bc52025156b
children 4b3a5095f68c
comparison
equal deleted inserted replaced
146:1bc52025156b 147:4d7333337569
132 wrap!(fn authenticate { pam_authenticate }); 132 wrap!(fn authenticate { pam_authenticate });
133 wrap!(fn account_management { pam_acct_mgmt }); 133 wrap!(fn account_management { pam_acct_mgmt });
134 wrap!(fn change_authtok { pam_chauthtok }); 134 wrap!(fn change_authtok { pam_chauthtok });
135 } 135 }
136 136
137 // TODO: pam_authenticate - app 137 // TODO: pam_setcred - app
138 // pam_setcred - app
139 // pam_acct_mgmt - app
140 // pam_chauthtok - app
141 // pam_open_session - app 138 // pam_open_session - app
142 // pam_close_session - app 139 // pam_close_session - app
143 // pam_putenv - shared 140 // pam_set/get_data - module
144 // pam_getenv - shared
145 // pam_getenvlist - shared
146 141
147 impl<C: Conversation> Drop for LibPamTransaction<C> { 142 impl<C: Conversation> Drop for LibPamTransaction<C> {
148 /// Closes the PAM session on an owned PAM handle. 143 /// Closes the PAM session on an owned PAM handle.
149 /// 144 ///
150 /// This internally calls `pam_end` with the appropriate error code. 145 /// This internally calls `pam_end` with the appropriate error code.
201 }; 196 };
202 } 197 }
203 198
204 fn split<T>(result: &Result<T>) -> Result<()> { 199 fn split<T>(result: &Result<T>) -> Result<()> {
205 result.as_ref().map(drop).map_err(|&e| e) 200 result.as_ref().map(drop).map_err(|&e| e)
201 }
202
203 impl<C: Conversation> Transaction for LibPamTransaction<C> {
204 delegate!(fn authenticate(&mut self, flags: Flags) -> Result<()>);
205 delegate!(fn account_management(&mut self, flags: Flags) -> Result<()>);
206 delegate!(fn change_authtok(&mut self, flags: Flags) -> Result<()>);
206 } 207 }
207 208
208 impl<C: Conversation> PamShared for LibPamTransaction<C> { 209 impl<C: Conversation> PamShared for LibPamTransaction<C> {
209 delegate!(fn log(&self, level: Level, location: Location<'_>, entry: &str) -> ()); 210 delegate!(fn log(&self, level: Level, location: Location<'_>, entry: &str) -> ());
210 delegate!(fn environ(&self) -> impl EnvironMap); 211 delegate!(fn environ(&self) -> impl EnvironMap);