diff --git a/app/models/concerns/foreman_passwordstate/host_managed_extensions.rb b/app/models/concerns/foreman_passwordstate/host_managed_extensions.rb
index 58edd841bf98130c86760924db814aa1f7f8f974..75855c87366ea8a62021fc154d2bc1a68ef8b831 100644
--- a/app/models/concerns/foreman_passwordstate/host_managed_extensions.rb
+++ b/app/models/concerns/foreman_passwordstate/host_managed_extensions.rb
@@ -17,7 +17,7 @@ module ForemanPasswordstate
     delegate :passwordstate_server, to: :passwordstate_facet
     delegate :password_list, to: :passwordstate_facet, prefix: :passwordstate
 
-    def host_pass(username, create: true, **params)
+    def password_entry(username, create: true, **params)
       return nil unless passwordstate_facet
 
       list = passwordstate_password_list
@@ -34,16 +34,18 @@ module ForemanPasswordstate
       end
     end
 
-    def root_pass
-      return super unless passwordstate_facet
+    def host_pass(username, password_hash: 'SHA256', create: true, **params)
+      return nil unless passwordstate_facet
 
       # As template renders read the root password multiple times,
       # add a short cache just to not thoroughly hammer the passwordstate server
-      PasswordstateCache.instance.fetch("#{cache_key}/root_pass", expires_in: 1.minute) do
-        pw = host_pass('root')
-        alg = operatingsystem&.password_hash || 'SHA256'
+      PasswordstateCache.instance.fetch("#{cache_key}/pass-#{username}", expires_in: 1.minute) do
+        pw = password_entry(username, create: create, **params)
+        alg = password_hash || 'SHA256'
         if alg == 'Base64'
           pw = PasswordCrypt.passw_crypt(pw.password, alg)
+        elsif alg == 'None'
+          pw = pw.password
         else
           seed = "#{uuid || id}/#{pw.title}-#{pw.password_id}"
           rand = Random.new(seed.hash)
@@ -53,5 +55,11 @@ module ForemanPasswordstate
         pw
       end
     end
+
+    def root_pass
+      return super unless passwordstate_facet
+
+      host_pass('root', password_hash: operatingsystem&.password_hash)
+    end
   end
 end