Commit Graph

282 Commits

Author SHA1 Message Date
ErickSkrauch
f9842acf29 Увеличено время жизни access_token 2017-03-07 19:09:41 +03:00
ErickSkrauch
f86be5688b Добавлено отдельное сообщение для авторизации в Minecraft, если у аккаунта включена двухфакторная аутентификация 2017-02-23 20:15:03 +03:00
ErickSkrauch
40239b4ee5 Исправлено поведение TOTP валидатора, если Closure для timestamp возвращает null 2017-02-23 02:18:25 +03:00
ErickSkrauch
689919fc17 Логика уничтожения активных сессий вынесена в компонент User
Теперь при смене пароля и включении двухфакторной аутентификации также очищаются и сессии Minecraft
2017-02-23 02:01:32 +03:00
ErickSkrauch
7bf8260331 В форму включения двухфакторной аутентификации добавлено поле для фиксации времени запроса 2017-02-22 01:49:24 +03:00
ErickSkrauch
0eedfe91a2 Добавлено окно для валидации TOTP токена на формах входа и восстановления пароля 2017-02-22 01:44:23 +03:00
ErickSkrauch
0798faa7f1 Добавлена возможность указывать длину генерируемого otp_secret 2017-02-21 20:06:04 +03:00
ErickSkrauch
d262e577a6 Исправлено поведение hasJoined операции для legacy протокола 2017-02-13 13:44:14 +03:00
ErickSkrauch
b069ec630d Исправлена ошибка при попытке рефрешнуть несуществующий oauth refresh token 2017-02-05 15:26:44 +03:00
ErickSkrauch
4695b6e724 Внедрена валидация OTP в процесс восстановления пароля 2017-01-23 23:50:13 +03:00
ErickSkrauch
e82b8aa8cf В запрос /currect добавлен вывод состояния включённости OTP авторизации 2017-01-23 14:38:21 +03:00
ErickSkrauch
a2e1e9a805 В форму входа внедрена проверка на наличие включённой OTP авторизации 2017-01-23 14:22:20 +03:00
ErickSkrauch
6aab2592b4 Добавлены тесты для включения/отключения OTP 2017-01-23 02:07:29 +03:00
ErickSkrauch
be4c7908b2 Реализованы методы для включения\отключения двухфакторной аутентификации 2017-01-21 02:28:26 +03:00
ErickSkrauch
3b9ef7ea70 Реализован метод для запроса информации для активации двухфакторной аутентификации
Добавлен валидатор для TOTP кодов
2017-01-21 02:14:19 +03:00
ErickSkrauch
6f81c38b7f Реализована форма разблокировки аккаунта 2017-01-05 00:57:04 +03:00
ErickSkrauch
b9e5e3a679 Добавлен обработчик для события блокировки аккаунта 2016-12-29 02:01:26 +03:00
ErickSkrauch
79bbc12206 Добавлен контроллер для блокировки аккаунта
Добавлен client_credentials grant для oAuth
Рефакторинг структуры OauthScopes чтобы можно было разделить владельца прав на пользовательские и общие (машинные)
Исправлена стилистика кода, внедряются фишки PHP 7.1
2016-12-28 23:25:55 +03:00
ErickSkrauch
1e7039c05c Реализован контроллер для формы запроса на блокировку аккаунта 2016-12-26 19:17:07 +03:00
ErickSkrauch
45775a64af Добавлены unit-тесты для формы блокировки аккаунта 2016-12-26 19:17:07 +03:00
ErickSkrauch
28b06d51ce Базовая реализация API для блокировки аккаунта 2016-12-26 19:17:07 +03:00
ErickSkrauch
213782ff62 Добавлена поддержка для "внутренних" scopes, запросить которые во время oauth процесса нельзя 2016-12-26 19:17:07 +03:00
ErickSkrauch
796ca647e4 #274: упразднена базовая модель KeyConfirmationForm, внедрён обновлённый валидатор EmailActivationKeyValidator 2016-12-23 01:22:51 +03:00
ErickSkrauch
07735a0eed #274: переработан валидатор EmailActivationKeyValidator 2016-12-23 00:21:05 +03:00
ErickSkrauch
6d4bef0549 Исправлена проверка авторизации для запроса на refresh-token 2016-12-13 01:10:05 +03:00
ErickSkrauch
f2e6df4022 Исправлено передение авторизатора для OAuth процесса 2016-12-12 00:07:39 +03:00
ErickSkrauch
b00c4ae4fc Исправлено поведение User\Component::getIdentity(), если в контроллере не было accessFilter 2016-12-11 17:58:08 +03:00
ErickSkrauch
8570cfcbfa Обновление версии компонента для отправки логов в sentry 2016-12-07 23:22:49 +03:00
ErickSkrauch
4623063074 Merge branch 'develop' into sentry 2016-12-07 21:36:49 +03:00
ErickSkrauch
a8c7118e38 Добавлен Helper для AMQP, который собирает все поступающие сообщения и предоставляет методы для проверки созданных сообщений
Исправлен баг в форме ChangeUsernameForm
Исправлен баг с конфигурацией тестов, который не позволял правильно проводить проверки на существование\несуществование моделей
Добавлена поддержка передачи хоста Redis через env переменные в тестах
2016-12-04 19:56:49 +03:00
ErickSkrauch
ffd4a9000f Реализовано кэширование ответа /api/options 2016-12-02 11:38:53 +03:00
ErickSkrauch
0a0cca0834 Добавлен компонент для кэшиования ответа на уровне nginx 2016-12-02 11:38:35 +03:00
ErickSkrauch
225f2fd3cf Первичная интеграция логирования ошибок в sentry 2016-12-01 01:16:52 +03:00
ErickSkrauch
5de6fa91c8 Удалён лишний компонент ApiNormalizer 2016-11-30 20:57:30 +03:00
ErickSkrauch
23d079346b Проверка oAuth авторизации организована через oauth компонент и больше не завязана на реализации внутри моделей приложения 2016-11-30 12:19:10 +03:00
ErickSkrauch
422d5c4fd4 Хранилище access_token вынесено в redis
Переписана логика связи моделей для oAuth процесса
2016-11-30 02:19:14 +03:00
ErickSkrauch
4f259a9dc7 Подменены все ключевые сущности на наши 2016-11-29 23:15:56 +03:00
ErickSkrauch
5f07834f45 Исправлено поведение при обновлении устаревшего токена
Обновлена логика в компонентах для работы с ключами redis
2016-11-29 01:57:58 +03:00
ErickSkrauch
1e94cda399 Из базы удалена таблица oauth_scopes 2016-11-27 19:19:13 +03:00
ErickSkrauch
744ec9520a Используем в качестве компонента для соединения с редисом библиотеку Predis 2016-11-27 17:41:39 +03:00
ErickSkrauch
bec00df77b redirectUri может быть null 2016-11-27 00:56:13 +03:00
ErickSkrauch
f5981f1cd1 Исправлен namespace для исключений 2016-11-27 00:55:43 +03:00
ErickSkrauch
20286f1744 Все классы, отвечающие за oAuth передвинуты в компоненты API, освежён код, поправлены неймспейсы 2016-11-27 00:43:42 +03:00
ErickSkrauch
49fb2efc0c Не логируем http исключения 2016-11-20 20:37:08 +03:00
ErickSkrauch
7249323ec4 В dev режиме больше не бутстрапаем gii 2016-11-20 20:32:54 +03:00
ErickSkrauch
5c02b54010 Обновлена версия amqp controller, удалён gii, очередь событий аккаунтов переведена в устойчивый режим 2016-11-15 22:45:30 +03:00
ErickSkrauch
bfbcf141ee Больше не возвращаем shouldChangePassword 2016-11-14 20:14:10 +03:00
ErickSkrauch
bc2f1d4ce9 Добавлено запоминание client_redirect_uri при oauth авторизации 2016-11-05 18:02:46 +03:00
ErickSkrauch
fe4e62af39 YII_DEBUG всегда получалось true 2016-11-05 02:53:53 +03:00
ErickSkrauch
a7822bf0f1 Уменьшаем уровень логирования для запросов к authserver и sessionserver 2016-11-05 02:53:25 +03:00
ErickSkrauch
d3a2a37f11 Добавлена проверка, что если приходить nil uuid, то бросается IllegalArgumentException для sessionserver 2016-11-04 19:33:57 +03:00
ErickSkrauch
c324ebe1c6 Формируем время в DateTime для генерации JWT токенов 2016-11-04 12:23:04 +03:00
ErickSkrauch
93f8d170dc Более точное условие для автоматической смены пароля в форме входа 2016-11-02 00:04:10 +03:00
ErickSkrauch
b6b579b721 Метод save на модели Accounts теперь вызывается без аргумента false, т.к. из модели были удалены валидаторы 2016-11-02 00:02:58 +03:00
ErickSkrauch
3cce2c9bd1 Переименован класс валидатора пароля 2016-11-01 23:59:43 +03:00
ErickSkrauch
91df81f97d Образован валидатор EmailValidator 2016-11-01 23:57:42 +03:00
ErickSkrauch
94a8e21f27 Образован валидатор UsernameValidator 2016-11-01 23:27:38 +03:00
ErickSkrauch
3b56f3c418 Фиксы после инспекции кода новым инспектором в PHPStorm
В некоторых формах отключена валидация при сохранении модели аккаунта
2016-11-01 19:36:39 +03:00
ErickSkrauch
9c8600b2ad В процесс регистрации добавлена поддержка логики, когда можно перезанять ник или email, который ещё не окончил регистрацию.
Валидатор LanguageValidator убран из модели Account
2016-10-27 01:34:51 +03:00
ErickSkrauch
8049d3c774 Фикс для формы смены ника (поломалась логика, когда ник не менялся) 2016-10-27 01:22:39 +03:00
ErickSkrauch
5a88229c2d Создаём событие о новом нике только при успешной регистрации 2016-10-27 00:07:08 +03:00
ErickSkrauch
c828b8e1e6 Фикс ошибки в форме смены ника, когда старый ник перезатирался на этапе валидации 2016-10-25 22:33:51 +03:00
ErickSkrauch
f3b953607d Фикс для очереди пула ников 2016-10-25 22:20:44 +03:00
ErickSkrauch
cfd8ba95ef Отключаем валидацию для форм, где не участвуют email и username 2016-10-25 11:46:31 +03:00
ErickSkrauch
20b0076672 Удаляем уникальный индекс для поля client_token в таблице minecraft_access_keys 2016-10-25 02:43:27 +03:00
ErickSkrauch
1764fb6009 Задание параметров для рекапчи в продакшен режиме через env переменные 2016-10-24 15:14:39 +03:00
ErickSkrauch
4b6bfa15ec Фикс бага с повторным добавлением аккаунта в authserver 2016-10-15 17:35:03 +03:00
ErickSkrauch
bafac25baf Добавлена поддержка авторизации с передачей параметров в теле запроса + тесты под этот кейс 2016-10-15 16:07:03 +03:00
ErickSkrauch
1ff6898c43 Простые шаблоны писем для процесса смены E-mail адреса 2016-10-08 16:24:10 +03:00
ErickSkrauch
1254369d3e На GitHub подкинули идею, как сделать поддержку http и https одновременно 2016-10-07 17:48:57 +03:00
ErickSkrauch
ad058664db Фикс получателя для формы обратной связи 2016-10-07 17:45:06 +03:00
ErickSkrauch
862c2d467e Продублированы роуты для https запросов, пока не ответят в https://github.com/yiisoft/yii2/issues/12691 2016-10-07 02:02:51 +03:00
ErickSkrauch
f193964ea3 Фикс переменных, отвечающих за коды для писем 2016-10-04 01:45:50 +03:00
ErickSkrauch
dea5b05014 Эти ребята теперь в игноре 2016-10-03 11:34:59 +03:00
ErickSkrauch
c162a46e62 Интегрирован шаблон для письма "забыл пароль" 2016-10-03 01:59:24 +03:00
ErickSkrauch
b67a1879fe Обновлена версия Email Renderer
Добавлен компонент для настройки Email Renderer
Добавлен роут в nginx для отображения картинок из Email Renderer
2016-10-02 12:52:17 +03:00
ErickSkrauch
df1859f0c1 Реализован функционал Mojang API
Исправлена ошибка доступа к authserver из-за перехода на использование хостов, а не доменов
2016-10-02 01:21:54 +03:00
ErickSkrauch
8120e43bec Исправлен тест для AccountIdentity 2016-09-19 11:18:52 +03:00
ErickSkrauch
df6d319187 Восстановлен запуск тестов
Загрузчик конфигов выделен в отдельный класс
authserverHost выделена в params
Исправлены некоторые common.unit тесты, т.к. наследовались не от того базового класса
2016-09-19 01:01:19 +03:00
ErickSkrauch
54485b2271 Огромный рефакторинг в пользу отказа от механизма environment и использования .env файла
Найдено и удалено немного мусора
2016-09-16 01:28:28 +03:00
ErickSkrauch
9d935d84cd Интеграция письма о регистрации 2016-09-13 14:50:22 +03:00
ErickSkrauch
dd2407e347 Сконфигурировано логирование приложения 2016-09-09 00:39:00 +03:00
ErickSkrauch
d2fd803b0d Отключаем RateLimiter для запросов, что идут с хоста старого сервера авторизации, но включаем для остальных (фикс для beforeAction) 2016-09-09 00:38:25 +03:00
ErickSkrauch
c2eee9b67d Добавлен запрос /session/profile 2016-09-08 13:07:43 +03:00
ErickSkrauch
8eb6a595c0 Обновлены роуты в соответствие с тем, как они в итоге будут прописаны в документации
В nginx добавлена конфигурация, отвечающая за проксирование сессионных запросов со старого домена
Версия nginx обновлена с 1.9 до 1.11
В тестах сессионного сервера больше не используется генерация url
2016-09-07 17:56:30 +03:00
ErickSkrauch
6e15522140 Добавлен рейт-лимитер для запросов к hasJoined для незарегистрированных серверов 2016-09-06 20:10:42 +03:00
ErickSkrauch
68ce8b3fb6 Добавлена логика HasJoined для сервера авторизации Minecraft
Исправлена ошибка в JoinForm
Добавлено базовое API для общения с сервером системы скинов
2016-09-06 12:56:39 +03:00
ErickSkrauch
e8b5e90a91 Немного рефакторинга Join формы для учёта Legacy API
Добавлена поддержка чтения данных из POST запроса, если они переданы как RAW json
Исправлен StringHelper::isUuid()
2016-09-05 17:55:38 +03:00
ErickSkrauch
34d725abe2 Перенесена логика join операции для современных серверов.
Нужно признать, что перенесена она так себе, но в будущем я обязательно это перепишу.
2016-09-03 01:54:22 +03:00
ErickSkrauch
9371fc32ca Перенесены тесты со старого authserver, исправлены ошибки в коде 2016-09-01 10:31:43 +03:00
ErickSkrauch
147c84f487 Убрано лишнее звено в вызове имени исключения 2016-08-31 13:35:43 +03:00
ErickSkrauch
1023eed03b Методы в Authserver AuthenticationController прикрыты verb фильтром 2016-08-31 13:32:51 +03:00
ErickSkrauch
66e266692c Добавлен кастомный ErrorHandler для форматирования ошибок authserver'а в соответствии с ожиданиями лаунчера 2016-08-31 13:32:14 +03:00
ErickSkrauch
9c658f5bd9 Тесты для AuthorizationForm и кастомного RequiredValidator
В модуль Authserver добавлены хелперы для логирования
Исправлена ошибка в MinecraftAccessKey
Ускорено тестирование всего приложения
2016-08-29 02:17:45 +03:00
ErickSkrauch
72a7f743be Мигрирована логика блокировки аккаунтов 2016-08-22 00:09:14 +03:00
ErickSkrauch
b57b015f66 Первичное портирование логики сервера авторизации с PhalconPHP на Yii2 2016-08-21 02:23:48 +03:00
ErickSkrauch
0b67267426 Я тут писал фильтр для доступа к каким-то внутренним API запросам, но потом понял, что пока таких кейсов не будет, но логика пусть сохранится :) 2016-08-21 01:23:46 +03:00
ErickSkrauch
59f51451d0 Добавлено запоминание регистрационного IP адреса 2016-08-18 02:56:05 +03:00
ErickSkrauch
433f560f48 Мелкие улучшения для контроллера OauthController 2016-08-18 02:56:05 +03:00
ErickSkrauch
426fa7dc6e Образован фильтр ActiveUserRule для проверки активности пользовательского аккаунта 2016-08-07 03:08:48 +03:00
ErickSkrauch
16fc1ecb8c Добавлен action для принятия правил + тесты для него 2016-08-06 19:22:09 +03:00
ErickSkrauch
cf6c7bc88e Добавлено поле версии принятых правил 2016-08-06 18:52:03 +03:00
ErickSkrauch
a48c1432c6 Реализован функционал получения информации об аккауте после выполнения oAuth авторизации 2016-08-06 16:36:24 +03:00
ErickSkrauch
26b37c2f6b Попытка реализовать отдельный компонент для oAuth авторизации в свой же API. Не тестировал, не проверял работу, просто пушнул, чтобы потом продолжить в дргуом месте. 2016-08-04 01:07:21 +03:00
ErickSkrauch
6efbbb7098 Ререализован метод для получения инфы о конфигурации API 2016-08-03 21:47:36 +03:00
ErickSkrauch
5e40ccbe49 Добавлен API вызов для получения активного Recaptcha public key 2016-08-03 15:58:12 +03:00
ErickSkrauch
c2986445f1 В форму регистрации и форму повторной отправки Email внедрён валидатор ReCaptcha 2016-08-03 15:57:41 +03:00
ErickSkrauch
bef12954bd Усовершенствован валидатор ReCaptcha и покрыт тестами 2016-08-03 15:56:08 +03:00
SleepWalker
327e900f2b #148: remove depreacted error.password_required 2016-07-28 07:44:16 +03:00
ErickSkrauch
d514ba620d Заменил библиотеку для JWT токенов на свой форк с разнообразными исключениями, подрихтовал тесты для класса AccountIdentity 2016-07-27 16:25:40 +03:00
ErickSkrauch
c25bfeb8bc Обновлены роуты для oAuth2 запросов по последней спеке 2016-07-27 01:11:13 +03:00
ErickSkrauch
31679b84cb Упразднён контроллер PasswordProtectedController и заменён на валидатор PasswordRequiredValidator
Реорганизованы тесты для ChangeUsernameFormTest
2016-07-25 14:07:14 +03:00
ErickSkrauch
681996740d При попытке запроса смены E-mail теперь происходит проверка, как давно был выполнен предыдущий запрос 2016-07-17 20:46:04 +03:00
ErickSkrauch
e756dbacd6 Токен, выписанный на сессию без запоминания должен истекать дольше времени 2016-07-17 19:54:33 +03:00
ErickSkrauch
ae3c3b88de Добавлен обработчик для удаления сессии при логауте 2016-07-17 19:38:04 +03:00
ErickSkrauch
2063d7daa0 Добавлен файл для автокомплита в проекте, обновлены обращения к di для лучшего статического анализа 2016-07-17 19:13:40 +03:00
ErickSkrauch
dd0c4fcc9e Добавлено событие о изменении email адреса пользователя, вызовы методов для генерации уведомлений внесены внутрь транзакции бд 2016-07-17 18:42:37 +03:00
ErickSkrauch
6d3db89140 Изменена логика для работы с очередью задач, чтобы её можно было использовать в дальнейшем в кластере серверов 2016-07-17 18:27:44 +03:00
ErickSkrauch
8906370bb9 Образован хелпер Error, в который вынесены все коды ошибок.
Подкорректирован errorDict на фронте
2016-06-16 23:32:23 +03:00
ErickSkrauch
4614cf8fe7 Убраны разрознености в ошибках, скорреткированы тесты 2016-06-16 22:36:52 +03:00
ErickSkrauch
912606e27f Реализована форма обратной связи 2016-06-15 23:54:13 +03:00
ErickSkrauch
113b9f98d8 Отрефакторен компонент User\Component
Добавлен метод getActiveSession
Добавлена логика для функции "Разлогинить всех" в форме смены пароля
2016-06-05 17:01:35 +03:00
SleepWalker
e18f6a08b0 Merge branch 'master' into account_sessions 2016-06-04 15:59:01 +03:00
ErickSkrauch
67fa28aaa1 Удалён никому ненужный SiteController 2016-05-31 21:25:04 +03:00
ErickSkrauch
1945a7baec Добавлен роут и логика для обновления access_token по refresh_token'у 2016-05-31 01:03:30 +03:00
ErickSkrauch
cb038c897b Добавлены тесты для ответа сервера о истёкшем токене
Добавлены doc-блоки для поведений в базовом контроллере
2016-05-30 21:11:22 +03:00
ErickSkrauch
bdc96d82c1 Реорганизована выдача JWT токенов
Добавлен механизм сохранения сессий и refresh_token
2016-05-30 02:44:17 +03:00
ErickSkrauch
b5ed01853e Убран валидатор на тип алгоритма хэширования пароля для формы инициализации смены E-mail адреса 2016-05-23 22:55:36 +03:00
ErickSkrauch
fe2c422621 Реализовано автоматическое обновление алгоритма хэширования пароля во время авторизации пользователя 2016-05-23 22:42:50 +03:00
SleepWalker
1b4249ecd7 #100: password protection for email change form 2016-05-22 22:04:52 +03:00
ErickSkrauch
c34f0947ad Форма инициализации смены E-mail адреса теперь требует ввода пароля 2016-05-22 21:36:02 +03:00
ErickSkrauch
ad42411a89 Реализован обработчик для смены языка аккаунта 2016-05-19 01:10:05 +03:00
ErickSkrauch
f99b281f30 Добавлены экшены в контроллер и 1 тест (больше не успел) 2016-05-16 11:21:12 +03:00
ErickSkrauch
50439fdaeb Реализованы формы для шагов смены E-mail адреса, покрыты unit-тестами
У EmailActivation добавлено поле $_data и дописано поведение для работы с ним
Упрощено подключение фикстур для EmailActivations
2016-05-16 01:33:19 +03:00
ErickSkrauch
e2e31c3720 Логика проверки ключа из KeyConfirmationForm вынесена в отдельный валидатор
У EmailActivationFixture зафиксирован стандартный путь к файлу данных
2016-05-15 14:13:51 +03:00
ErickSkrauch
0ba1be27e8 Наведён порядок в моделях проекта 2016-05-14 02:47:17 +03:00
ErickSkrauch
ecd92b8fda Добавлена поддержка запоминания языка для аккаунта
Обновлена минимальная версия Yii2
Удалено немного хлама от Yii2 Advanced
Исправлены некоторые тесты
2016-05-13 12:03:00 +03:00
ErickSkrauch
184ff02240 Изменёна кодировка столбца username в usernames_history для организации бинарного поиска
Из Account вынесена логика аутентификации в дочерний AccountIdentity
Исправлена логика валидации при вызове на неизменённом нике для формы смены ника
2016-05-12 11:50:30 +03:00
ErickSkrauch
2a4da87fd5 Реализована форма восстановления пароля от аккаунта
Логика проверки пароля вынесена в отдельный валидатор
В composer.json докинута зависимость от php7
2016-05-12 01:13:33 +03:00
ErickSkrauch
ebf4947c37 Обновлена версия Codeception (там поправили баг с анонимными классами)
Переписаны тесты для базовой формы с кодовым доступом
В базовую форму кодового доступа добавлена проверка на истечение кода
2016-05-12 01:13:33 +03:00
ErickSkrauch
15922ba02e Немного приемственности в именовании сущностей 2016-05-10 23:28:04 +03:00
ErickSkrauch
c6547b6540 Добавлен action для формы восстановления пароля 2016-05-10 23:25:04 +03:00
ErickSkrauch
a29cb76cbf Образован trait AccountFinder для поиска пользователя по его нику\мылу
Модель EmailActivation теперь умеет автоматически создавать своих правильных потомков по соответствующему типу
Добавлена форма восстановления пароля и её обработчик (без контроллера)
2016-05-10 22:40:06 +03:00
SleepWalker
75a0811488 Do not request password till newPassword and newRePassword are valid 2016-05-02 13:11:10 +03:00
ErickSkrauch
45b1f43d09 Добавлено поле для разлогивания всех авторизованных устройств при смене пароля (пока без имплементации) 2016-04-25 00:30:10 +03:00
ErickSkrauch
cba769a1ec В проект внедрён RabbitMQ.
Контроллер для работы с RabbitMQ научился создавать типизированные аргументы для $body
Добавлена таблица с историей ников
Добавлена таблица Mojang ников
Добавлена проверка активированности аккаунта в AccountsController
2016-04-23 21:44:10 +03:00
SleepWalker
067fc1d3d6 Добавил эксепшен в случае утсутствия мыла.
З.Ы. Туда бы di в тот класс... :)
2016-04-15 07:06:21 +03:00
ErickSkrauch
a69cd2da2c Исправлен баг с валидатором ника в форме смены никнейма 2016-04-15 02:01:01 +03:00
SleepWalker
d8a2cc21b8 Merge branch 'profile' 2016-03-21 20:28:18 +02:00
ErickSkrauch
b277f48785 Отрефакторены тесты для форм 2016-03-20 23:33:09 +03:00