2012-04-12 3 views
0

Я занят работой над проектом, который включает в себя множество поддоменов и разных уровней аутентификации, я хотел бы изменить то, что URL-адрес выглядит в зависимости от вашего уровня доступа, у нас есть суперпользователь, который имеет доступ ко всем (только для программистов), а затем несколько различных административных прав. каждый из них имеет доступ к различным вещам в зависимости от того, с чем они имеют дело, администратор портала имеет доступ к функции, называемой data_report, только он и суперпользователь могут получить доступ, то, как он был маршрутизирован, был предназначен только для доступа суперпользователя, поэтому URL-адрес показывает http://toolkit.dev/portal_data/21 21 - это учетная запись, с которой ведет портал, но ему не нужно это видеть, поскольку он не может получить доступ к другим учетным записям, где, как суперпользователь может и может, есть способ просто скрыть 21 в этом URL-адресе и все еще перейдите в одно и то же место. поэтому суперпользователь мог видеть номера учетных записей, и если бы он был portal_administrator, тогда он бы не стал ???Rails уникальные имена маршрутизации

мои маршруты выглядеть следующим образом:

map.resources :portal_data, :only => [:show, :create] 
map.show_account_portal_datum '/portal_data/:id/account/:account_id/', :controller => 'portal_data', :action => 'show_account' 

контроллер, что он относится к имеет метод

def show_account 
    @account = @portal.accounts.find(params[:account_id]) 
end 

жаль, если это простой вопрос, его мой первый раз дело с маршрутами.

+0

Я не думаю, что это нормальное требование ... –

ответ

1

Я думаю, что в этом случае администратор портала также не нуждается в индексной странице. Как просто проверить это в действии индекса и рендеринг (без переадресации) того же представления, что и действие show, если текущий зарегистрированный пользователь является администратором портала?

Просто быстрая идея, не знаю, соответствует ли она вашим потребностям.

+0

Это то, о чем я думал, но его не очень сухой, так как его точно такой же код, и его уже монолитная программа. что я ищу - это что-то вроде матча? например: match 'show_account' => 'portal_data' ... просто нужно каким-то образом отделить его от суперпользователя ... mmm спасибо, я мозг штурмует alot lol – TheLegend

+0

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

+0

это круто, единственная причина, по которой я пытался, - это то, что я подслушал одного из наших старших разработчиков, говорящего о решении проблемы, подобной этому, делая это таким образом. Не обращайте на него помощи. спасибо за предложения: D – TheLegend

Смежные вопросы