Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

2step-verification

Build Status codecov

Двухфакторная авторизация - апи, которое по пользователю определяет, логинлся ли он раньше с этого устройства, да -> ok, не логинился - шлём смску (дёргаем стороннее апи), если код совпадает, то ок, нет - идёт в бан на час

Требования к коду

  • все бд и сервисы подняты в докере
  • метрики кол-ва и времени исполнения запросов в statsd+graphite+grafana
  • ошибки и ворнинги в ELK
  • походы в БД должны быть с глобальным (и возможно локальным) кэшом в redis
  • апи и компоненты (elk, statsd, redis и пр) поднимается через docker-compose
  • БД - cassandra
  • (python 3.6+ с typehint'ами или scala) и с неблокирующим походом во все внешние хранилища
  • unit-test'ы с моками на походы во внешние сервисы
  • скрипт инициализации БД
  • проверка нагрузки Jmeter/Яндекс танк/ Locust
  • код на github

Зависимости

sbt

build.sbt + project/Dependencies.scala

Публичное API

Пользователи могут

  • зарегистрироваться в системе

POST /register

    {
      "phoneNumber": "some phonenumber",
      "password": "secure password"
    }

Ответ:

HTTP/1.1 201 OK

  • залогиниться

Пользователь должен быть зарегистрирован и не забанен. При успешном логине должна отправиться смс-ка :) (но это не точно) Если код не отправился (у апи смс бывают проблемы), то можно посмотреть в таблицу кассандры prod.codes...

POST /login

    {
      "phoneNumber": "some phonenumber",
      "password": "secure password"
    }

Ответ:

HTTP/1.1 200 OK

  • ввести верификационный код из смс-ки

На данном этапе полагается, что пользователь уже зарегистрирован и залогинен. Если код неверный, то пользователь идет в бан на час.

POST /verifyCode

    {
      "phoneNumber": "some phonenumber",
      "code": "some code"
    }

Ответ:

HTTP/1.1 200 OK

  • войти в приложение!

Если пользователь подтвердил код, то он может войти в приложение

GET /

Ответ:

HTTP/1.1 200 User <user phone> was successfully logged in!

Запуск приложения

Заполнить конфигурационный файл application.conf

 docker-compose up
 cd redis
 docker-compose up
 cd ..
 sbt "runMain ApplicationApp"

Приложение запустится на http://localhost:8080

Запуск тестов

sbt test

Непрерывная интеграция

Travis

Измерение покрытия кода

CodeCov

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages