saveCachedRoles
Persist the user's allowed roles (propertyId -> accessRoleId) and stamp the TTL now. The accessRoleId matches RoleAccessPair.roleId; the SDK resolves roleId -> accessLevelId downstream. A null/empty map clears the cache.