Обновление профиля если на это есть права

165
15 января 2019, 19:50

Как правильно реализовать данный функционал.?

Есть пользователи с разными ролями и есть страница "Профиль пользователя"

Нужно сделать так что бы каждая роль могла просмотреть свой профиль.

Но только администратор мог редактировать свой профиль.

На данный момент я сделал что для просмотра профиля существует одна страница а для редактирования другая страница, но как реализовать это все на одной странице, потому что очень много кода который повторяется

Вариант с тем что скрыть кнопку обновления не корректен так как останутся поля которые можно редактировать в пределах странниц до ее перегрузки - что очень некрасиво А выключать каждое поле если роль пользователя ниже определенной как то очень грязно получается

Как это реализуется на продвинутом уровне, а не на уровне быдло кода когда пойдет то что бы просто работало.

Постарался как можно детальнее объяснить суть вопроса.

Не нужно писать код, просто подскажите в каком направлении думать что бы лучше реализовать данное.

Спасибо

UPDATED

На данный момент я нашел решение с помощью js если у меня роль текущего юзера ниже нужной я запускаю след код

 var form = document.getElementById("form_user_profile");
    var elements = form.elements;
    for (var i = 0, len = elements.length; i < len; ++i) {
        elements[i].disabled = true;
    }

Но насколько это правильно?

Answer 1

Самый правильный способ это разграничение по правам. У тебя к примеру есть роли и есть права вот ты и проверяешь не роль, а права к примеру будет условие, что аккаунт администратора может редактировать только пользователь с ролью администратор.

Для примера можешь посмотреть как это реализовано в разных пакетах. К примеру https://github.com/z-song/laravel-admin тут неплохая реализация разграничения по правам.

READ ALSO
Как сделать НЕ наследуемый класс в PHP?

Как сделать НЕ наследуемый класс в PHP?

Судари и сударыни, помогите советомКак сделать класс НЕ наследуемым (PHP) ?? Гугление по ключевым словам "не наследуемый класс PHP", "какие бывают...

132
php -S localhost Segmentation fault: 11

php -S localhost Segmentation fault: 11

стоит версия php56 mac os, ставил через brew, при запуске php -S localhost:8000 заводится сервер, читает indexhtml, но как только доходит дело до чтения кода php сервер...

163
Разработка приложений для Windows XP в Visual Studio 2017 + Windows 10?

Разработка приложений для Windows XP в Visual Studio 2017 + Windows 10?

Есть потребность в том, чтобы моя программа имела полноценную поддержку Windows XP

159
создать Лист и от листа Стек [закрыт]

создать Лист и от листа Стек [закрыт]

создать клас Лист и унаследовав от него клас Стекв листе только два метода add и remove

199