Я создаю одностраничную веб-систему, используя Angular в качестве интерфейса и Java (Spring-Boot) в качестве сервера. Эта система имеет разные роли, и пользователю должна быть назначена одна роль. Разные роли могут выполнять разные операции.
Скажем, для простоты: в системе есть 2 роли: суперпользователь и администратор. Единственной функцией в этой системе является продукт, который имеет 3 свойства: имя, розничная_цена, заводская_цена. Суперпользователь может добавить продукт и обновить эти свойства. Администратор может просматривать имя и розничную_цену, но не может видеть заводскую цену. Администратор также может обновлять розничную_цену, но не может добавлять продукт.
Чтобы реализовать управление этой функцией в Angular, прямо сейчас я жестко кодирую код в HTML. При отображении страницы «Продукты» кнопка «Добавить» будет отображаться, если пользователь для входа принадлежит привилегированному пользователю. При отображении страницы сведений о продукте factory_price будет скрыт, а поле имени будет доступно только для чтения, если пользователь для входа принадлежит администратору.
Очевидно, что это не лучший способ сделать это, потому что весь этот управляющий код находится в HTML, каждый может прочитать его и понять нашу логику. Я ищу какое-то решение и руководство, которое может обрабатывать эту логику на стороне сервера, а сервер просто возвращает все, что браузер должен показывать, а внешний интерфейс (Angular) просто показывает контент с сервера и избавляется от всей этой логики управления, как упомянуто выше.
Еще одна проблема заключается в том, как обрабатывать разные HTML для разных ролей. например, для страницы сведений о продукте я хочу подготовить содержимое HTML для другой роли на стороне сервера, и как только пользователь входа в систему переходит на страницу сведений о продукте, angular просто отправляет вызов Restful и получает содержимое HTML из бэкэнда и показывает его. Тогда клиентской стороне не нужно иметь никакой логики и просто показывать ее. Должен ли я использовать другой шаблон HTML для другой роли?