shortener-server

Copyright(c) Mansur Ziiatdinov 2018-2019
LicenseBSD-3
Maintainerchgk@pm.me
Stabilityexperimental
PortabilityPOSIX
Safe HaskellNone
LanguageHaskell2010

Main

Contents

Description

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

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

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

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

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

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

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

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

Synopsis

Точка входа

main :: IO () Source #

Точка входа в выполняемый файл:

  • читает и парсит файл config.json с конфигурацией приложения Config;
  • выполняет инициализацию информации, необходимой клиенту OpenID Connect;
  • запускает веб-приложение на порту 4102 и начинает логирование всех запросов в stdout.

app Source #

Arguments

:: OIDCEnv

Информация, необходимая для работы клиента OpenID Connect

-> Application 

Веб-приложение с реализацией API из функции server

server Source #

Arguments

:: OIDCEnv

Информация, необходимая для работы клиента OpenID Connect

-> Server Api

Реализация API всего приложения

Реализация тривиально собирается из реализаций API авторизации authServer, реализации API приложения linkServer и реализации API статических файлов staticFiles

staticFiles :: Server HomepageApi Source #

Реализация API статических файлов. Выдаёт файлы из директории static/.