Git Product home page Git Product logo

Comments (13)

Axadiw avatar Axadiw commented on July 4, 2024

Widzę, że ten kod smsowy ma myslnik w środku - celowo?

Dopóki nie zrobimy UI to nie wiem jak to zadziała, ale iOS ma wbudowany mechanizm w klawiaturę, który umożliwia automatyczne przepisywanie kodów jednorazowych.

Nie wiem dokładnie jak to działa i czy nie ma tam jakichś obostrzeń, zaznaczam, ze jakbysy chceili z tego skorzystac (a raczej bysmy chcieli, bo wpływa to super na UX) to mozliwe ze będziemy eksperymentowali z formatem tego kodu

from backend.

jakublipinski avatar jakublipinski commented on July 4, 2024

@Axadiw dobre. Wydaje się to proste, ale faktycznie może wymagać jakiejś zabawy z treścią SMS (do sprawdzenia). Więcej: https://stackoverflow.com/questions/50791050/ios-12-sms-reading-api

from backend.

jakublipinski avatar jakublipinski commented on July 4, 2024

Pseudokod:

Parametry:
invalid_regs_per_IP = 10
invalid_regs_per_msisdn = 4

/register(msisdn, IP) returns error lub registration_id

Policz ile pending rejestracji nastąpiło z IP w ciągu ostatniej 1h. Jeśli więcej niż invalid_regs_per_IP zwróć error = "Rejestracja chwilowo niedostępna. Spróbuj za godzinę". (zadanie z gwiazdką: policzyć za ile minut będzie możliwa rejestracja i zwrócić liczbę minut)

Policz ile nieudanych rejestracji nastąpiło na numer msisdn i jeśli więcej niż invalid_regs_per_msisdn zwróć error = "Rejestracja chwilowo niedostępna. Spróbuj za godzinę". (zadanie z gwiazdką: jak wyżej).

Sprawdź czy istnieje Registration na ten sam msisdn rozpoczęte w ciągu ostatnich 10 minut. Jeśli tak weź użyj code z tej rejestracji. Jeśli nie wylosuj code. (Tak, to oznacza, ten sam code może żyć dłużej niż 10 minut).

Zapisz do Registrations IP, msisdn, registration_date, code. Oznacz jako pending.

Sprawdź czy istnieje Registration na ten sam msisdn rozpoczęte w ciągu ostatniej minuty. Jeśli NIE, wyślij SMS.

Zwróć registration_id

/confirm_registration(registration_id, code) returns error lub user_id

Znajdź Registration po registration_id i statusie pending.
Jeśli nie ma, zwróć error = Rejestracja niepoprawna. Spróbuj ponownie.

Sprawdź czy Registration.registration_date nie jest starsze niż 10 minut. Jeśli tak, zwróć error = Rejestracja wygasła. Spróbuj ponownie

Sprawdź czy Registration.code == code. Jeśli nie, oznacz Registration jako incorrect i zwróć error = Niepoprawny kod. Spróbuj ponownie.

Oznacz Registration jako completed.

Sprawdź czy jest już User z msisdn == Registration.msisdn. Jeśli tak, zwróć User.user_id.

W przeciwnym wypadku wygeneruj nowego User i zwróć User.user_id.

from backend.

kstrz avatar kstrz commented on July 4, 2024

Sprawdź czy istnieje Registration na ten sam msisdn rozpoczęte w ciągu ostatniej minuty. Jeśli NIE, wyślij SMS.

Może wysyłać SMS dla tej rejestracji tylko jeśli wysyłka się nie powiodła?

Poza tym wygląda OK.

from backend.

jakublipinski avatar jakublipinski commented on July 4, 2024

@kstrz nie wiem czy będziemy wiedzieć o tym, że się nie powiodła. @DariuszAniszewski chyba chciał to robić pub/sub'em

from backend.

DariuszAniszewski avatar DariuszAniszewski commented on July 4, 2024

@jakublipinski jest OK - zróbmy to i spróbujmy otestować w miarę możliwości
Wysyłka smsa jest robiona osobną funkcją, po triggerze Pub/Sub'em, ale nie widzę problemu, żeby w tej funkcji oznaczyć że wysyłka się udała, a w register sprawdzić

from backend.

jakublipinski avatar jakublipinski commented on July 4, 2024

Nie jestem pewien co nam daje informacja o tym, że wysyłka się powiodła lub nie. Jeśli SMSAPI nie działa to i tak niewiele możemy zrobić. Fragment który wskazuje @kstrz zabezpiecza nas przed wysłaniem komuś SMS częściej niż 1/minutę.

from backend.

DariuszAniszewski avatar DariuszAniszewski commented on July 4, 2024

Tak, czaję - chciałem się tylko odnieść do tego, że możemy sprawdzić, czy się udało.

Zastanawiam się nad tym co mówisz w kwestii niedziałającego SMSAPI i im dłużej o tym myślę tym bardziej się zgadzam że można to całkowicie pominąć - jak się nie uda, to ktoś spróbuje ponownie po paru minutach. Jeśli nie działa z winy dostawcy, to może już naprawią. A jak się nie uda w ciągu 10 minut, to kody i tak wygasną.
👍

from backend.

kstrz avatar kstrz commented on July 4, 2024

Bardziej myślałem o tym żeby nie wysyłać wiele razy smsa z tym samym kodem

from backend.

kstrz avatar kstrz commented on July 4, 2024

Policz ile nieudanych rejestracji nastąpiło na numer msisdn

to znaczy rejestracji ze statusem pending, analogicznie jak w przypadku z ip?

from backend.

kstrz avatar kstrz commented on July 4, 2024

Rejestracja chwilowo niedostępna. Spróbuj za godzinę

Czy po polslu zwracamy z api? Pozostałem error message mamy po ang.

from backend.

jakublipinski avatar jakublipinski commented on July 4, 2024

@kstrz zwracamy błędy w języku lang który przesłał nam użytkownik wraz z żądaniem.

from backend.

jakublipinski avatar jakublipinski commented on July 4, 2024

Przerzuciłem pseudokod tutaj: https://github.com/ProteGO-app/backend/blob/master/sms_registration.md Jak chcemy coś zmienić to róbmy PR.

from backend.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.