-
Notifications
You must be signed in to change notification settings - Fork 0
Mailer
- Komponent odpowiedzialny jest za komunikację z użytkownikiem systemu przy pomocy wiadomości email.
- Maile wysyłane będą w celu poinformowania użytkownika o przyznaniu punktów możliwych do rozdysponowania na konkretne problemy zgłoszone w YAIT.
- Dostarczany jest również interfejs umożliwiający rozsyłanie maili do podanych użytkowników i o wskazanej treści umieszczanej później w domyślnym szablonie.
Dla określonego adresów email i parametrów tworzone są zestawy tokenów. W systemie zapisujemy dla każdego tokenu:
- ID tokenu
- ilość wykorzystanych punktów (konieczne)
- informację o dacie ważności
- ilość punktów możliwych do rozdysponowania na podstawie tokenu
Dla każdego tokenu tworzony jest link URL, który następnie wysyłany jest do określonego użytkownika. Tworzenie URLa będzie zrealizowanie przez stworzenie skrótu z jego ID (HMAC lub JWT). W systemie nie zapisujemy powiązania pomiędzy użytkownikiem a tokenem. URL może być wykorzystany do autoryzacji anonimowego użytkownika. W założeniu linki mogą być przesyłane przez użytkownika dowolnej innej osobie.
Ilość punktów przyznanych danego issue będzie zapisywane jako liczba.
- Dostarcza funkcjonalności dla komponentu backendowego.
- Aby zapisywać tokeny potrzebne będzie powiązanie z komponentem obsługującym bazę danych (ten sam co backend?).
Java
Przypadki użycia:
- Wysłanie tokenów do użytkowników
- Wysłanie maili o określonej treści do użytkowników
Przebieg głównego przypadku użycia - wysłanie tokenów do użytkowników:
- Wywołanie funkcji (przez komponent zewnętrzny/użytkownika/etc.) pozwalającej na przydzielenie danej grupie użytkowników tokenów - możliwości zagłosowania. Funkcja dostaje listę adresów email.
- Generowanie tokenów dla podanych adresów - przy użyciu JWT.
- Generowanie URL dla tokenów. Dla każdego osobny URL. (Musi być zgodny z URLami obsługiwanymi przez backend)
- Stworzenie treści maili, wraz z załączonym URLem.
- Wysłanie maili (Spring Mail)
Przebieg dodatkowego przypadku użycia - wysłanie maili do grupy użytkowników:
- Wywołanie funkcji otrzymującej na listę adresów email.
- Stworzenie przez użytkownika treści maila.
- Wysłanie maili (Spring Mail)
- Wysyłanie maili – Spring (http://docs.spring.io/spring/docs/4.3.8.RELEASE/spring-framework-reference/htmlsingle/#mail) on JavaMail (https://java.net/projects/javamail/pages/Home) + SMTP server (gmail?, linux sendmail?)
- Templaty dla maili – Apache Velocity (http://velocity.apache.org/)
- -Jako osobny proces (również przez Gradle) mailer korzystający z kolejki zadań (Redis (https://spring.io/guides/gs/messaging-redis/)/ RabbitMQ (https://spring.io/guides/gs/messaging-rabbitmq/))-
- Zewnętrzny serwer SMTP (testowo może być GMail, ostatecznie skontaktujemy się z administratorami IISG, aby uzyskać dostęp do jakiegoś uczelnianego serwera – interfejs jest stały)
- Tokeny (JWT) – jedna z https://github.com/jwtk/jjwt, https://github.com/auth0/java-jwt lub https://bitbucket.org/b_c/jose4j