тут масса вариантов.
на фронте можно два поля выводить с логикой ИЛИ
одно из можно прятать, примерно так:
Ваш Email: ____________
Link: Войти по номеру телефона
Ваш телефон: ____________
Link: Войти по Email
При клике на ссылку поле для мыла прятать и показывать поле для телефона (каждое со своей маской). Текст ссылки соответственно тоже менять на "Войти по имейл"
На бэке как уже отметили использовать prepareForValidation. Номер телефона нормализовывать. Проще всего вырезать всё, кроме цифр и так хранить в базе. При выводе форматировать как нравится.
А чтобы юзер не забыл, что он вводил при регистрации, восьмерку или семерку, использовать вот эту продвинутую маску
https://intl-tel-input.com/ Эта библиотечка, кстати, и нормализацию делает.