Клиенты — не всегда пользователи системы.
Партнёры — не всегда пользователи системы.
Если мыслить в таком ключе, то Вам нужно разделять эти ответственности. Это будет более правильно. У вас получится система, разделенная на модули. Это позволит вам сделать независимость как на уровне кода, так и на уровне базы. Разделить свой код и базу по ответственностям.
- Модуль Auth - Система управление аутентификацией: логин, пароль, телефон, социальные сети (для входа по соц сети), роли, разрешения ну и так далее.
- Модуль Partners - Система управление партнёрами.
- Модуль CRM - Система управления взаимоотношениями с клиентами.
В клиентах, партнёрах есть ссылка на user_id (аккаунт). Таким образом у вас система разделена на свои ответсвенности (модули) и каждая система решает одну определённую задачу/проблему. Ваш код становится менее связанным и более независимым.
User вам нужно чтобы только авторизоваться. А когда он авторизован вы работаете с Client или Partner. В UI интерфейсе вы делаете два личных кабинета или один с переключением (кабинет клиента, кабинет партнёра)
P.S.: Важный комментарий. Под модулями я понимаю не модули Yii, а область кода который сфокусирован для решения определённой задачи и слабо связан с другими модулями. В Yii3 модулей вообще нет. Модули могут быть разделены папками:
src/Model/User
src/Model/СRM