Your solution seems fine to me (unless you're dealing with a really big number of logins and the performance will be a problem).
The more granular data you store in the fact table the more flexible it is and supports more possible queries and calculations.