Short-circuit authentication if no command was configured (#140).

This commit is contained in:
Antoine POPINEAU 2024-05-17 12:33:49 +02:00
parent 4ac12261cc
commit e203bee7ec
No known key found for this signature in database
GPG Key ID: E8379674E92D25D2
3 changed files with 34 additions and 18 deletions

View File

@ -21,6 +21,7 @@ new_command = New command:
shutdown = Shut down shutdown = Shut down
reboot = Reboot reboot = Reboot
command_missing = No command configured
command_exited = Command exited with command_exited = Command exited with
command_failed = Command failed command_failed = Command failed

View File

@ -21,6 +21,7 @@ command = Nouvelle commande :
shutdown = Éteindre shutdown = Éteindre
reboot = Redémarrer reboot = Redémarrer
command_missing = Aucune commande configurée
command_exited = La commande a retourné command_exited = La commande a retourné
command_failed = Échec de la commande command_failed = Échec de la commande

View File

@ -148,29 +148,43 @@ impl Ipc {
} else { } else {
tracing::info!("authentication successful, starting session"); tracing::info!("authentication successful, starting session");
let command = greeter.session_source.command(greeter).map(str::to_string); match greeter.session_source.command(greeter).map(str::to_string) {
None => {
Ipc::cancel(greeter).await;
if let Some(command) = command { greeter.message = Some(fl!("command_missing"));
greeter.done = true; greeter.reset(false).await;
greeter.mode = Mode::Processing; }
let session = Session::get_selected(greeter); Some(command) if command.is_empty() => {
let (command, env) = wrap_session_command(greeter, session, &command); Ipc::cancel(greeter).await;
#[cfg(not(debug_assertions))] greeter.message = Some(fl!("command_missing"));
self.send(Request::StartSession { cmd: vec![command.to_string()], env }).await; greeter.reset(false).await;
}
#[cfg(debug_assertions)] Some(command) => {
{ greeter.done = true;
let _ = command; greeter.mode = Mode::Processing;
let _ = env;
self let session = Session::get_selected(greeter);
.send(Request::StartSession { let (command, env) = wrap_session_command(greeter, session, &command);
cmd: vec!["true".to_string()],
env: vec![], #[cfg(not(debug_assertions))]
}) self.send(Request::StartSession { cmd: vec![command.to_string()], env }).await;
.await;
#[cfg(debug_assertions)]
{
let _ = command;
let _ = env;
self
.send(Request::StartSession {
cmd: vec!["true".to_string()],
env: vec![],
})
.await;
}
} }
} }
} }