浏览代码

LoginServer: Add --auto-login switch

Auto login will automatically log in a user without prompting for a
password, but will still allow logouts and subsequent password logins.
Peter Elliott 3 年之前
父节点
当前提交
b77dad5ba3
共有 2 个文件被更改,包括 21 次插入7 次删除
  1. 3 6
      Base/etc/SystemServer.ini
  2. 18 1
      Userland/Services/LoginServer/main.cpp

+ 3 - 6
Base/etc/SystemServer.ini

@@ -163,9 +163,6 @@ BootModes=self-test
 [SpiceAgent]
 KeepAlive=0
 
-[SystemServer]
-Arguments=--user
-User=anon
-
-#[LoginServer]
-#User=root
+[LoginServer]
+User=root
+Arguments=--auto-login anon

+ 18 - 1
Userland/Services/LoginServer/main.cpp

@@ -5,6 +5,7 @@
  */
 
 #include <LibCore/Account.h>
+#include <LibCore/ArgsParser.h>
 #include <LibGUI/Application.h>
 #include <Services/LoginServer/LoginWindow.h>
 #include <errno.h>
@@ -113,7 +114,23 @@ int main(int argc, char** argv)
         login(account.value(), *window);
     };
 
-    window->show();
+    char const* auto_login = nullptr;
+
+    Core::ArgsParser args_parser;
+    args_parser.add_option(auto_login, "automatically log in with no prompt", "auto-login", 'a', "userame");
+    args_parser.parse(argc, argv);
+
+    if (!auto_login) {
+        window->show();
+    } else {
+        auto account = Core::Account::from_name(auto_login);
+        if (account.is_error()) {
+            dbgln("failed auto-login for user {}: {}", auto_login, account.error());
+            return 1;
+        }
+
+        login(account.value(), *window);
+    }
 
     return app->exec();
 }