Всем добрый день!
Необходимо реализовать следующий функционал:
Пользователь после авторизации должен видеть страничку, на которой согласно его роли ему отображается нужный ему функционал и ничего лишнего. Т.е. заходит в Мудл студент Иванов и видит там интерфейс и функционал для студента, заходит в Мудл преподаватель Петров и видит там уже совсем другой функционал- для преподавателя.
Столкнулся с 2 мя жирными проблемами…
Проблема № 1 Отображение функционала
a) Подобный функционал в Мудл мы можем реализовать только в виде блока. Но, показывать каждой роли свой блок нет возможности, потому что настроить отображение блока можно только для глобальных ролей а для локальных нет.
b) Блок это все-таки блок, а нам надо интерфейс на всю странницу.
Проблема № 2 Роли...
a) Каждый юзер может иметь одновременно роль, как препода ,так и студента, в связи с этим сложно понять кто он на самом деле.
Возможные способы решения проблем:
1) прежде чем записать студента на курс, проверять записан ли он где-нибудь уже, и с какой ролью записан, если да и роль отличается, то выводить ошибку типа "пользователь Иванов не может быть преподавателем данного курса ибо он уже записан с ролью студент в курс такой-то".
Решение плохое, потому что нам надо будет изменять код ядра.
2) делать запрос к базе - определять в скольких курсах он студент, а в скольких курсах он препод ,и что за курсы (мета или дочерние), исходя из этого принимать решение, какой интерфейс ему показывать.
Решение плохое, потому что нам надо будет изменять код ядра.
3) сделать блок с правами "авторизованный пользователь" - чтобы был виден всем, а уже в самом блоке прибегать к шаманствам описанным выше и определять "доминирующую" роль пользователя и исходя из этого выводить необходимый роли функционал.
Решение плохое, потому что нам надо будет изменять код ядра.
4) описанном выше блоке доступном для всех пользователей сделать страничку на которой с помощью описанных выше шаманств определения доминирующей роли юзера, показывать необходимый нам функционал, а в curse/view.php?id=1 прописать редирект на страничку нашего блока.
Решение плохое, потому что нам надо будет изменять код ядра.
5) переделывать course/view.php?id=1 чтобы он вместо новостей, списка курсов, списка категорий, отображал необходимый нам функционал, причем разный для каждой роли.
Решение плохое, потому что нам надо будет изменять код ядра.
6) Александр предлагает реализовать этот функционал через RSS, может быть я плохо знаком с технологий RSS, НО такой функционал не реализовать на RSS, и он опять-таки, будет “сбоку” как блок.
Из тех решений, которые я привел, нет ни одного нормального.
Может вы подскажете?
Спасибо!