2014-10-11 7 views
2

Использование потока OAuth-2 с использованием пароля. Если пользователь, не являющийся администратором, запрашивает токен доступа с scope: 'admin', я хочу, чтобы иметь возможность отклонить это из-за этого - я использую привратник с изобретением.Doorkeeper - отклонить запрос доступа к токенам, если пользователь не администратор

В настоящее время любой старый пользователь может запросить любой объем и по умолчанию получает его.

Я не вижу очевидного крючка в привратнике, чтобы выполнить такую ​​логику. Где/как мне это настроить?

ответ

0

В настоящее время это невозможно с привратником 3.x. Вам нужно будет обезвредить класс OAuth::PreAuthorization или развить драгоценный камень, чтобы добавить нужную логику.

У меня была аналогичная потребность, поэтому я сделал это в варианте конфигурации, где вы можете указать свой собственный класс preauth. Код here. Сопровождающие привратника указали they wanted to think more about the feature.

0

Использование привратник 4.x.x Я проверка на наличие «админ» рамки, и если текущий пользователь является администратором в инициализаторе привратник в:

resource_owner_from_credentials do 
    user = User.find_for_database_authentication(login: params[:login]) 
    if user&.active_for_authentication? && 
    user.valid_for_authentication? { user.valid_password? params[:password] } 
     admin_scope = params[:scope]&.split&.include?('admin') 
     user if admin_scope && user.admin? || !admin_scope 
    end 
    end 
end 
Смежные вопросы