I was looking for how to do this, there doesn’t seem to be a built-in way of doing this (yet), and most of the solutions were pretty involved. I found an easy way to limit a user to a dashboard using Browser-Mod.
Go to Browser-Mod settings…
4a. Add a user setting under “Hide Sidebar” (true) for the user you created
4b. Add the same user setting under “Hide Header” (true).
4c. Add a user setting under “Default dashboard” pointing to the dashboard you created for the user.
When the user logs in, they will see the assigned dashboard with no sidebar/header. That effectively makes it impossible for them to do anything not on the dashboard you’ve given them. This works well for the mobile app. However, I think if the user logged in via web interface, and knows the URL paths to other dashboards/tabs, it’s possible they can still access other dashboards. So, this isn’t an absolutely secure solution, but it works if you trust your users. To make it all a tiny bit more secure, I created the user as non-admin and set all dashboards I don’t want them to access as admin only.
One small quirk I noticed upon testing was, when I setup the new user in the app for the first time, they still got the default dashboard upon first login. However, on refresh and subsequent logins, they only saw the dashboard I pinned them to.
This is nuts. HA wants all users to see the full dashboard and makes it hard to give a user a limited dashboard? There’s security implications there for my home
I’ve been struggling with the same problem and adopted the same solution as the OP. To avoid the problem outlined above I’ve done 2 other things:
remove the default dashboard (the one that HA manages & shows all entities)
under edit dashboard / visbility, limit the users as you wish. Do this for every dashboard!
This is now working well enough for me. What I want to do next is keep track of how long users are logged-on. I can’t find any mechanism to trigger an automation (or template sensor) on each new log-on/off to I can accumulate time. I’ve posted this question elsewhere (eg How much time is my HA used?) with no response.