diff --git a/user_mgr.cpp b/user_mgr.cpp
index de4b570..09d82b1 100644
--- a/user_mgr.cpp
+++ b/user_mgr.cpp
@@ -109,8 +109,8 @@
 {
 
 // The hardcoded groups in OpenBMC projects
-constexpr std::array<const char*, 4> predefinedGroups = {"redfish", "ipmi",
-                                                         "ssh", "hostconsole"};
+constexpr std::array<const char*, 4> predefinedGroups = {
+    "redfish", "ipmi", "ssh", "hostconsole"};
 
 // These prefixes are for Dynamic Redfish authorization. See
 // https://github.com/openbmc/docs/blob/master/designs/redfish-authorization.md
@@ -154,10 +154,10 @@
     }
     return std::accumulate(std::next(vec.begin()), vec.end(), vec[0],
                            [](std::string&& val, std::string_view element) {
-        val += ',';
-        val += element;
-        return val;
-    });
+                               val += ',';
+                               val += element;
+                               return val;
+                           });
 }
 
 bool removeStringFromCSV(std::string& csvStr, const std::string& delStr)
@@ -894,8 +894,8 @@
         buflen = 1024;
     }
     std::vector<char> buffer(buflen);
-    auto status = getspnam_r(userName.c_str(), &spwd, buffer.data(), buflen,
-                             &spwdPtr);
+    auto status =
+        getspnam_r(userName.c_str(), &spwd, buffer.data(), buflen, &spwdPtr);
     // On success, getspnam_r() returns zero, and sets *spwdPtr to spwd.
     // If no matching password record was found, these functions return 0
     // and store NULL in *spwdPtr
@@ -1042,8 +1042,8 @@
         std::string basePath = "/xyz/openbmc_project/user/ldap/openldap";
         std::string interface = "xyz.openbmc_project.User.Ldap.Config";
 
-        auto ldapMgmtService = getServiceName(std::move(basePath),
-                                              std::move(interface));
+        auto ldapMgmtService =
+            getServiceName(std::move(basePath), std::move(interface));
         auto method = bus.new_method_call(
             ldapMgmtService.c_str(), ldapMgrObjBasePath,
             "org.freedesktop.DBus.ObjectManager", "GetManagedObjects");
