Redirect user role to a specific page on login in a multisite network?

Here’s the solution if anyone’s interested:

add_filter('login_redirect', function( $url, $query, $user ) {
  $user_info = get_userdata($user->ID);
  return get_blogaddress_by_id($user_info->primary_blog) .  'wp-admin/?login=1';
}, 10, 3);

add_action('current_screen', function ( $user ) {
    $userID = get_current_user_id();
    $user_info = get_userdata($userID);
    if ($_GET['login'] == 1 && $user_info->primary_blog) {
        $primary_url = get_blogaddress_by_id($user_info->primary_blog) . 'wp-admin/edit.php?post_type=visitor';
        $site_id = $user_info->primary_blog;
        if (!current_user_can_for_blog($site_id, 'create_users')) {
          wp_redirect( $primary_url );
          exit();
        }
    }
});