chore: add and fix hanldlers to use openid with casdoor for Single Sign-On

This commit is contained in:
Jesús Pérez 2023-09-17 01:34:41 +01:00
parent 97a411bdc8
commit 3faeffda66

View File

@ -71,7 +71,6 @@ pub fn users_router_handlers() -> Router {
// // TODO check value // // TODO check value
// } // }
//let has_cookie: bool; //let has_cookie: bool;
// dbg!(&auth_state.session);
// if auth_state.user.is_none() { // if auth_state.user.is_none() {
// eprintln!("No user found in session"); // eprintln!("No user found in session");
// } // }
@ -97,7 +96,6 @@ pub fn users_router_handlers() -> Router {
// println!("Auth State from root"); // println!("Auth State from root");
// } // }
// let uri_path = format!("{}",&uri.path().to_string()); // let uri_path = format!("{}",&uri.path().to_string());
// dbg!("uri: {}",&uri_path);
req_handler.prepare_response(); req_handler.prepare_response();
req_handler.context.insert("with_menu", "1"); req_handler.context.insert("with_menu", "1");
let result = if let Some(tpl) = app_dbs.config.tpls.get("main") { let result = if let Some(tpl) = app_dbs.config.tpls.get("main") {
@ -183,7 +181,6 @@ pub fn users_router_handlers() -> Router {
// cookies.add(cookie); // cookies.add(cookie);
// } // }
// */ // */
// dbg!("uri: {}",&uri_path);
// ( // (
// header, // header,
// result.to_owned() // result.to_owned()
@ -501,9 +498,6 @@ pub fn users_router_handlers() -> Router {
ConnectInfo(app_connect_info): ConnectInfo<AppConnectInfo>, ConnectInfo(app_connect_info): ConnectInfo<AppConnectInfo>,
axum::extract::Path(data): axum::extract::Path<String>, axum::extract::Path(data): axum::extract::Path<String>,
) -> Response { ) -> Response {
dbg!(&header);
dbg!(&uri);
dbg!(&data);
SessionStoreDB::cleanup_data(&app_dbs).await; SessionStoreDB::cleanup_data(&app_dbs).await;
let auth_state = get_auth_state(true, &cookies, &app_dbs).await; let auth_state = get_auth_state(true, &cookies, &app_dbs).await;
let req_handler = ReqHandler::new( let req_handler = ReqHandler::new(
@ -528,7 +522,6 @@ pub fn users_router_handlers() -> Router {
} }
let (str_user_data,url) = if let Some(openid_conf) = app_dbs.config.openid_auths.get(&data) { let (str_user_data,url) = if let Some(openid_conf) = app_dbs.config.openid_auths.get(&data) {
if let Some(openid_cli) = openid_clients.get(&data) { if let Some(openid_cli) = openid_clients.get(&data) {
dbg!(&openid_conf);
match openid_conf.get_auth(openid_cli).await { match openid_conf.get_auth(openid_cli).await {
Ok(openid) => { Ok(openid) => {
//let _ = req_handler.trace_req(format!("User '{}' created",&user_data.name)); //let _ = req_handler.trace_req(format!("User '{}' created",&user_data.name));
@ -559,7 +552,6 @@ pub fn users_router_handlers() -> Router {
(String::from(""), String::from("/login")) (String::from(""), String::from("/login"))
}; };
let session_token = req_handler.new_token(); let session_token = req_handler.new_token();
dbg!(&url);
let session_cookie = add_session_cookie(true,&cookies, &session_token, &str_user_data, 0, &app_dbs, "/").await; let session_cookie = add_session_cookie(true,&cookies, &session_token, &str_user_data, 0, &app_dbs, "/").await;
if app_dbs.config.verbose > 1 { println!("session cookie: {}", &session_cookie) }; if app_dbs.config.verbose > 1 { println!("session cookie: {}", &session_cookie) };
let _new_auth_state = AuthState::from_cookie(session_cookie.to_string(), &app_dbs).await; let _new_auth_state = AuthState::from_cookie(session_cookie.to_string(), &app_dbs).await;
@ -585,7 +577,6 @@ pub fn users_router_handlers() -> Router {
&random, &random,
"post_login_handler" "post_login_handler"
); );
dbg!(&user_login);
if user_login.name.is_empty() || source != "from_login_openid" && user_login.password.is_empty() { if user_login.name.is_empty() || source != "from_login_openid" && user_login.password.is_empty() {
let _ = req_handler.trace_req(String::from("Empty name or password")); let _ = req_handler.trace_req(String::from("Empty name or password"));
// return Err(error_page(&SignupError::MissingDetails)); // return Err(error_page(&SignupError::MissingDetails));
@ -595,8 +586,6 @@ pub fn users_router_handlers() -> Router {
"Error" "Error"
).into_response(); ).into_response();
} }
dbg!(&user_login);
dbg!(&source);
let field = if user_login.name.contains("@") { let field = if user_login.name.contains("@") {
"email" "email"
} else { } else {
@ -606,7 +595,6 @@ pub fn users_router_handlers() -> Router {
println!("Error select: {}", e); println!("Error select: {}", e);
User::default() User::default()
}); });
dbg!(&user_sel);
if user_sel.name.is_empty() { if user_sel.name.is_empty() {
let _ = req_handler.trace_req(format!("No name '{}' found",&user_login.name)); let _ = req_handler.trace_req(format!("No name '{}' found",&user_login.name));
// User not exists // User not exists
@ -616,7 +604,6 @@ pub fn users_router_handlers() -> Router {
"Error data" "Error data"
).into_response(); ).into_response();
} }
dbg!(&user_sel);
if user_sel.status != UserStatus::Active && user_sel.status != UserStatus::Created { if user_sel.status != UserStatus::Active && user_sel.status != UserStatus::Created {
let _ = req_handler.trace_req(format!("user '{}' in not valid status: {}",&user_login.name, &user_sel.status)); let _ = req_handler.trace_req(format!("user '{}' in not valid status: {}",&user_login.name, &user_sel.status));
return ( return (
@ -625,7 +612,6 @@ pub fn users_router_handlers() -> Router {
"Error status" "Error status"
).into_response(); ).into_response();
} }
dbg!(&user_sel);
let result = if source == "from_login_openid" { let result = if source == "from_login_openid" {
format!("{}:true", "OK") format!("{}:true", "OK")
} else { } else {
@ -763,10 +749,8 @@ pub fn users_router_handlers() -> Router {
let mut user_login = UserLogin::default(); let mut user_login = UserLogin::default();
if let Some(openid_conf) = app_dbs.config.openid_auths.get(&user_data[0]) { if let Some(openid_conf) = app_dbs.config.openid_auths.get(&user_data[0]) {
if let Some(openid_cli) = openid_clients.get(&user_data[0]) { if let Some(openid_cli) = openid_clients.get(&user_data[0]) {
dbg!(openid_conf);
match openid_conf.get_token(openid_cli, data.code.to_owned(), user_data[2].to_owned()).await { match openid_conf.get_token(openid_cli, data.code.to_owned(), user_data[2].to_owned()).await {
Ok(data) => { Ok(data) => {
dbg!("{}", &data);
user_login = UserLogin { user_login = UserLogin {
name: data.name.to_owned(), name: data.name.to_owned(),
password: String::from(""), password: String::from(""),
@ -901,7 +885,6 @@ pub fn users_router_handlers() -> Router {
// String::from("") // String::from("")
// }); // });
// req_handler.context.insert("with_menu", "1"); // req_handler.context.insert("with_menu", "1");
// dbg!("uri: {}",&uri_path);
// // let mut new_header = header.to_owned(); // // let mut new_header = header.to_owned();
// //new_header.append("Set-Cookie", "session_token=_; Max-Age=0".parse().unwrap()); // //new_header.append("Set-Cookie", "session_token=_; Max-Age=0".parse().unwrap());
// // cookies.remove(Cookie::new(SESSION_COOKIE_NAME, "")); // // cookies.remove(Cookie::new(SESSION_COOKIE_NAME, ""));
@ -1376,7 +1359,6 @@ pub fn users_router_handlers() -> Router {
// Query(req_params): Query<ReqParams>, // Query(req_params): Query<ReqParams>,
axum::extract::Path(data): axum::extract::Path<String>, axum::extract::Path(data): axum::extract::Path<String>,
) -> Response { ) -> Response {
// dbg!(&user_item);
let session_cookie = decode(&data).unwrap_or_default().to_string(); let session_cookie = decode(&data).unwrap_or_default().to_string();
let auth_state = AuthState::from_cookie(session_cookie.to_owned(), &app_dbs).await; let auth_state = AuthState::from_cookie(session_cookie.to_owned(), &app_dbs).await;
let mut req_handler = ReqHandler::new( let mut req_handler = ReqHandler::new(
@ -1610,7 +1592,6 @@ pub fn users_router_handlers() -> Router {
ConnectInfo(app_connect_info): ConnectInfo<AppConnectInfo>, ConnectInfo(app_connect_info): ConnectInfo<AppConnectInfo>,
Json(user_invite): Json<UserInvitation>, Json(user_invite): Json<UserInvitation>,
) -> Response { ) -> Response {
//dbg!(&user_item);
let auth_state = get_auth_state(true, &cookies, &app_dbs).await; let auth_state = get_auth_state(true, &cookies, &app_dbs).await;
let mut req_handler = ReqHandler::new( let mut req_handler = ReqHandler::new(
ReqHeaderMap::new(header, &format!("{}",&uri.path().to_string()), &app_connect_info), ReqHeaderMap::new(header, &format!("{}",&uri.path().to_string()), &app_connect_info),
@ -1817,7 +1798,6 @@ pub fn users_router_handlers() -> Router {
// println!("Error render {}: {}",&file,e); // println!("Error render {}: {}",&file,e);
// String::from("") // String::from("")
// }); // });
//dbg!("uri: {}",&uri_path);
// let mut new_header = header.to_owned(); // let mut new_header = header.to_owned();
//new_header.append("Set-Cookie", "session_token=_; Max-Age=0".parse().unwrap()); //new_header.append("Set-Cookie", "session_token=_; Max-Age=0".parse().unwrap());
// cookies.remove(Cookie::new(SESSION_COOKIE_NAME, "")); // cookies.remove(Cookie::new(SESSION_COOKIE_NAME, ""));
@ -1838,7 +1818,6 @@ pub fn users_router_handlers() -> Router {
//_auth_state: AuthState, //_auth_state: AuthState,
//axum::extract::Path(data): axum::extract::Path<String>, //axum::extract::Path(data): axum::extract::Path<String>,
) -> Response { ) -> Response {
dbg!(&user_item);
let auth_state = get_auth_state(true, &cookies, &app_dbs).await; let auth_state = get_auth_state(true, &cookies, &app_dbs).await;
let req_handler = ReqHandler::new( let req_handler = ReqHandler::new(
ReqHeaderMap::new(header, &format!("{}",&uri.path().to_string()), &app_connect_info), ReqHeaderMap::new(header, &format!("{}",&uri.path().to_string()), &app_connect_info),
@ -1857,6 +1836,7 @@ pub fn users_router_handlers() -> Router {
// "Error authorization" // "Error authorization"
// ).into_response(); // ).into_response();
} }
dbg!("{}",&user_item);
let result=""; let result="";
( (
//status, //status,