Simplified GitHub Login for a Ruby Web App

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

Вы знаете, что такое вход через OAuth, не так ли? Это когда ваши пользователи нажимают “войти” и перенаправляются на Facebook, Twitter, Google или другой веб-сайт, который их идентифицирует. Затем они возвращаются на ваш веб-сайт, и вы знаете, кто они. Это очень удобно для них. Это также удобно для вас, так как вам не нужно реализовывать функциональность входа и хранить их учетные данные в базе данных. Я создал простой Ruby-модуль, чтобы упростить эту операцию только для GitHub. Вот как это работает.

Сначала вам нужно зарегистрировать свое приложение в GitHub, как объясняется на этой странице. Вот как это работает с Sinatra, но вы можете сделать что-то подобное в любом фреймворке.

Сначала где-то в глобальной области, перед запуском приложения:

Затем для всех веб-страниц нам необходимо разобрать cookie, если оно существует, и преобразовать его в пользователя:

Если входящий cookie glogin содержит действительные данные, локальной переменной @user будет присвоено что-то подобное:

Далее, нам нужен URL для обратного вызова GitHub OAuth:

Наконец, нам понадобится URL для выхода из системы:

Еще одним важным моментом является URL-адрес для входа, который вам понадобится на вашей главной странице. Вот он:

Для модульного тестирования вы можете просто передать пустую строку в качестве secret для GLogin::Cookie::Open и GLogin::Cookie::Closed, и шифрование будет отключено: все, что поступает из куки, будет считаться доверенным. Для тестирования удобно передавать имя пользователя в строке запроса, например:

Для этого рекомендуется добавить эту строку (см. работу на zold-io/wts.zold.io).

Я использую этот gem в веб-приложениях sixnines, 0pdd и Zold на основе Sinatra (все с открытым исходным кодом).

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-27 at 10:57

sixnines availability badge   GitHub stars