Предыстория
Системе требуется разграничение прав для операций
Задача
Добавить поле Permission в таблицу Role
Реализовать в бинарном виде права пользователей системы для следующих операций:
1) ввод ЭД в систему: [Агент0, Агент]
DO_EMISSION = 0b0000001
2) покупка ЭД: [Физ.лицо]
BUY = 0b0000010
3) продажа ЭД c выводом на банковский счёт: [Все участники системы]
SELL = 0b0000100
4) принятие перевода ЭД: [Физ.лицо]
ACCEPT_TRANSFER = 0b0001000
5) осуществление перевода ЭД: [Физ.лицо, Агент]
DO_TRANSFER = 0b0010000
6) принятие платежа в виде ЭД: [Поставщик]
ACCEPT_PAYMENT = 0b0100000
7) осуществление платежа в виде ЭД: [Физ.лицо]
DO_PAYMENT = 0b1000000
Обернуть обработку этих констант в классе Role
Методы решения:
Собственная реализация
Критерии готовности:
1) Метод can_do_transfer? отвечает true/false на запрос current_user.role.can_do_transfer?
2) Метод can_buy? отвечает true/false на запрос current_user.role.can_buy?
3) Метод can_sell? отвечает true/false на запрос current_user.role.can_sell?
4) Метод can_accept_transfer? отвечает true/false на запрос current_user.role.can_accept_transfer?
5) Метод can_do_transfer? отвечает true/false на запрос current_user.role.can_do_transfer?
6) Метод can_accept_payment? отвечает true/false на запрос current_user.role.can_accept_payment?
7) Метод can_do_payment? отвечает true/false на запрос current_user.role.can_do_payment?
Предыстория Системе требуется разграничение прав для операций
Задача Добавить поле Permission в таблицу Role Реализовать в бинарном виде права пользователей системы для следующих операций: 1) ввод ЭД в систему: [Агент0, Агент]
DO_EMISSION = 0b0000001
2) покупка ЭД: [Физ.лицо]BUY = 0b0000010
3) продажа ЭД c выводом на банковский счёт: [Все участники системы]SELL = 0b0000100
4) принятие перевода ЭД: [Физ.лицо]ACCEPT_TRANSFER = 0b0001000
5) осуществление перевода ЭД: [Физ.лицо, Агент]DO_TRANSFER = 0b0010000
6) принятие платежа в виде ЭД: [Поставщик]ACCEPT_PAYMENT = 0b0100000
7) осуществление платежа в виде ЭД: [Физ.лицо]DO_PAYMENT = 0b1000000
Обернуть обработку этих констант в классе RoleМетоды решения: Собственная реализация
Критерии готовности: 1) Метод can_do_transfer? отвечает true/false на запрос current_user.role.can_do_transfer? 2) Метод can_buy? отвечает true/false на запрос current_user.role.can_buy? 3) Метод can_sell? отвечает true/false на запрос current_user.role.can_sell? 4) Метод can_accept_transfer? отвечает true/false на запрос current_user.role.can_accept_transfer? 5) Метод can_do_transfer? отвечает true/false на запрос current_user.role.can_do_transfer? 6) Метод can_accept_payment? отвечает true/false на запрос current_user.role.can_accept_payment? 7) Метод can_do_payment? отвечает true/false на запрос current_user.role.can_do_payment?