This will log the user in to multiple contexts:
$usr = $modx->getObject('modUser', $user->get('id'));
$modx->user =& $usr;
$modx->getUser();
$contexts = $modx->getOption('contexts', $scriptProperties, $modx->context->get('key'));
$contexts = explode(',', $contexts);
foreach ($contexts as $ctx) {
$modx->user->addSessionContext($ctx);
}
I think you could put the contexts as a comma-separated list in the &contexts property of the Login snippet, modify the above code to log the user in to only the contexts they're qualified for, and use it as a postHook for Login.
That way, the users would already be logged in to all their contexts and you could forward them at will. You might have to use an intermediate page with $modx->switchContext($newContext) and then $modx->sendRedirect() to forward them, but I'd try it first without that.