Skip to content
Snippets Groups Projects
Verified Commit b906a8a6 authored by Nik | Klampfradler's avatar Nik | Klampfradler
Browse files

[NSS] get user token from cache

parent cd294d35
No related branches found
No related tags found
No related merge requests found
......@@ -18,9 +18,13 @@ use crate::config::{
get_optional
};
use config::Config;
use crate::cache::get_cache;
use crate::logging::setup_log;
use libc::{getpwuid, geteuid};
use std::ffi::CStr;
use libnss::interop::Response;
use libnss::passwd::{PasswdHooks, Passwd};
......@@ -36,12 +40,28 @@ fn nss_hook_prepare() -> Config {
return conf;
}
fn get_current_user() -> String {
let euid;
let euser;
unsafe {
euid = geteuid();
euser = CStr::from_ptr((*getpwuid(euid)).pw_name);
};
euser.to_str().ok().unwrap().to_string()
}
struct OidcPasswd;
impl PasswdHooks for OidcPasswd {
fn get_all_entries() -> Response<Vec<Passwd>> {
let config = nss_hook_prepare();
let user = get_current_user();
let token = match get_cache().load_user_token(&user) {
Some(t) => t,
None => return Response::Unavail
};
Response::Success(
vec![
Passwd {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment