Я думаю, что это не рекомендуется, так как, даже если вам удастся сделать это правильно, это испортит все функции безопасности вашего сайта: аудит и отчетность. Если Мэри позволят выдавать себя за Джона, практически невозможно сказать, кто что сделал.
Лучшее решение - принять политику, согласно которой ни один человек не должен утверждать срочные документы. Вместо этого используйте группы (даже если в группах изначально будет 1 человек). Таким образом, когда Джон уходит в отпуск, он (или администратор) может добавить Марию в группу, и она сможет выполнять свои задачи без необходимости выдавать себя за него.
Если вы хотите реализовать олицетворение, вам, возможно, придется использовать проверку подлинности с помощью форм. Возможно, создайте новую зону, которая использует формы. Поэтому, когда Джон просит позволить Мэри выдать себя за него, вы помещаете это в какую-то таблицу базы данных. Когда Мэри входит в систему, используя URL-адрес формы, вы ищете значение человека, которого она должна выдать за себя, и связываете ее сеанс с учетной записью этого человека.