Per user lovelace dashboard, how?

Guys, thanks for your answer.
If I get the manual Dashboards and Views - Home Assistant correctly:

Visible
You can specify the visibility of views as a whole or per-user. (Note: This is only for the display of the tabs. The URL path is still accessible)

It limits access to view (also named tabs) on a per user basis. I am looking for a level “above” the entire dashboard shouldn’t be accessible.
This is the part I am missing / looking for.

1 Like

sorry, can’t help with that, as I do not use it that way… :wink:

So basically you want to completely restrict access of specific dashboard pages to certain users. This is not directly possible, but it is indirectly possible. Dashboards are viewable by anyone that is logged in and visits the url. The solution that currently is, will still provide access if one visits the url. It just hides it from the sidebar. However…

You can create users without admin privileges. They won’t be able to access pages like Supervisor, Settings and Add-ons. According to the docs, you can also create Dashboards that are only accessible by admin: require_admin: true - Should this dashboard be only accessible for admin users

However, this means that in order to restrict a dashboard, that user is also restricted from other admin pages (like Supervisor, Settings, Add-ons).

So, yes this works, kinda. You cannot specifically restrict a user to a certain Dashboard. But you can restrict a user to all admin stuff and create admin-only Dashbords.

What you want to do is to also have differences between the non-admins. That is not possible. It only hides it from the sidebar, but using the url any non-admin user can access any non-admin Dashboard. For this you will need to make a feature request.

2 Likes

Thanks for the explanations. I had hoped I missed something obvious. Unfortunately not :frowning:
I’ll do a feature request or wait for the “what the heck” month :wink:

1 Like

Hi, any update on this ? I’m also missing this feature to customize the UI on a per-user basis.
Do you have a link to your feature-request so that I can vote ?

2 Likes

Nope… I have eventually done it on a per client basis which is possible but not as convenient IMHO.

Yes, it’s a pity that the ‘visible’ setting is only available on the views, but not for dashboard or not for cards :frowning:
It would be very handy to have this setting also available on other structures in lovelace so that you can make a finegrained config on a per user basis, it’s a bit clumsy that only the views have this setting.
But do you have a feature-request still open for this ? I was looking through the list but couldn’t find it.

2 Likes

No, I haven’t. I don’t think there has been a new WTH month. Or I missed it…

I am looking for this same thing. I propose that groups be implemented. It would work similarly to how the option for “admin only” can be applied, except that option would be replaced with “Available/Visible to Group” and then you would select which groups could see that dashboard. I suppose having a dropdown with checkboxes for individual users would also work though. I’m a Windows admin so groups is what is familiar, hah.

If I knew how to submit a feature request, I would.

Edit: Well that wasn’t too hard. Thanks Google. Here it is:

5 Likes

1 Select a dashboard on the sidebar
2 Open dashboard menu (3 dots on the right). Select Edit Dashboard
3 Edit view (pencil icon)
4 Click the Visibility tab
5 Select which user should see this view in the navigation.

This way, you can assign the different dashboards a user can see.

This is a method, but not THE method I am looking for.
As admin of HA, I can create X different dashboards. I would like to have a way to map user X to dashboard a, Y to b… Kind of a login page. And user X wouldn’t be able to go to b. All the available solutions for me are unideal ways to accommodate that missing (at least for me) feature.

6 Likes

This doesn’t work for two reasons:

  • The dashboard is still shown in the sidebar, even if all tabs are invisible to a user.
  • It doesn’t work at all for the automatic dashboard, the Energy dashboard, the Logbook, etc.
1 Like

I would also love to see this happen, I wanted to made a dashboard and a new user account for my sister’s kids to track me/Santa until Christmas and now they just keep flashing the lights cause they got access to this panel too. :joy:

This is the solution I use for my family’s companion app dashboards. I use ui minimalist to create my dashboards, I also use kiosk mode to limit the access to the side bar and header for all but me (admin).

Each person has a ‘home’ screen that is visible to only them, which allows them access to (for example) their own light, common lights in the garden etc, they can then navigate via buttons to room views and various other shared resources (local bus times, weather and our shared shopping list) But not heating controls, cameras, networking, and all the other elements I can’t trust them not to mess up!

I do have repetitive code in each of the home screens, but any changes that are common to all users is just a copy and paste exercise to propagate it to everyone.

I then use the UI minimalist back chip on each linked page to take them back ‘home’ I control this home action using the following:

- type: "custom:button-card"
    template: chip_back
    
    variables:
      usernavigation: &usernav |
          [[[
            let home = 'home';
            return user.name + home ;
          ]]]
      ulm_chip_back_path: *usernav

This means that any user ends up navigating to their own home page for example olliehome.yaml, or georgehome.yaml etc. Every common page that is shared by all users has this chip on it.

This obviously doesn’t prevent someone seeing any other pages if they log in and navigate directly to it in a browser, but within the companion app, they are limited. Works well for us.

Maybe this would help others?

5 Likes

Thanks for this idea/solution.

Something I don’t understand, when someone you know let’s say john uses a new phone/laptop/stuff to connect to HA. He uses john as his username, how do you force john to go to directly johnhome.yaml?
If I understand correctly, he arrives on a default page shared by all and as soon as he moves to another page he is “jailed” into johnhome.yaml. Is that it ?

I supported a WTH on the matter. It seems so obvious to me that there is such a requirement to be able, as an admin, to link john to johnhome.yaml without much complication.

2 Likes

Simplest option right now is to have just the default dashboard, with views in it that are only visible to the specific user. It is a bit of a pain to have it all in one, but it works until there is a better way.

2 Likes

yes, I generally set up the kids devices with home assistant, so once it’s on their device, I can force that initial transition from default home to their own home page. That said, with the visibility flag set as well, the device usually finds itself starting on one of the shared pages, although I see no reason why this is the case, and don’t really understand why that would be the case. It’s certainly a trade off and obviously can’t stop access to some pages for nefarious reasons, but it works for us.

When they are getting older, their smartphone is untouchable :slight_smile:
As I said above, that solution is probably the best that can be done until a simple link username ↔ lovelace dashboard can be made. Hopefully, one day…

The closest option you can get for dashboards visibility is a boolean argument. Set it aligned with title

require_admin: true

Would you mind explaining how you did this based on the client? Is there a way to hide cards based on the specific device accessing it? Is there a variable in Lovelace that lets you determine the current media player showing the dashboard?