shortener-server

shortener-server

Демо-страница использования сервера авторизации https://auth.chgk.me.

Используется язык haskell, но идеи должны быть понятными даже без знания языка. Для других языков тоже есть библиотеки OpenId Connect: https://openid.net/developers/libraries/.

Для понимания принципов работы должно быть достаточно этой документации. В документации к типам функций есть ссылки на типы их аргументов, стоит поглядывать и туда. Если интересна реализация, исходный код любой функции можно увидеть по ссылке Source рядом с ней.

Точка входа в приложение находится в модуле Main.

Для изучения работы с OpenID Connect стоит посмотреть модули:

  • Api с описанием API всего приложения и, в частности, описание API для авторизации в типе AuthApi;
  • Auth, в котором подробно описано используемое подмножество OpenID Connect и имеющаяся реализация авторизации;
  • и, конечно, Types, в котором описаны используемые во всём приложении типы. Для авторизации будут необходимы типы User с информацией о пользователе и OIDCEnv с информацией, необходимой для работы клиента OpenID Connect.

Для изучения логики собственно приложения нужны модули:

  • Types с типами, используемыми во всём приложении. В частности, там вводятся типы Short и Long, которые позволяют компилятору различать и проверять использование сокращённых ссылок, исходных ссылок и прочих текстовых данных;
  • Api с описанием API всего приложения и, в частности, тип LinkApi с логикой собственно приложения;
  • Server с реализацией этого API;
  • DB, в котором инкапсулирована работа с базой данных.

Всевозможные вспомогательные функции, используемые в нескольких модулях, находятся в модуле Utils.

Signatures

Modules