3
1
Fork 0
dydaktyka/bikol/ZPRILI1_2016/gr5.md

8.7 KiB

Strona automatycznie zmigrowana z systemu Eduwiki z wykorzystaniem Pandoc

License It

strona: http://licenseit.pro

Temat projektu

Aplikacja i system zarządzania licencjami dla programistów

Skład zespołu

  • Mateusz Kumanowski (backend api, devops, product owner)
  • Mateusz Wąsowski (scrum master, design, frontend)
  • Marek Suśniak (frontend master)

Repozytorium projektu

FRONT: https://github.com/mateuszwasowski/license-it <
>API: https://github.com/mateuszwasowski/license-it-api <
><
>TEAM ONLY: <
>ISSUE TRACKER: https://trello.com/b/jtqyVeEK/projekt-inż

Opis projektu

Planujemy udostępnić aplikację, umożliwiającą licencjonowanie własnych aplikacji. Aplikacja będzie zawierała Panel administracyjny (aplikacja webowa do zarządzania) oraz REST API.

Sama licencja będzie składać się m.in. z numeru, kodu autoryzacji (numer bazy, MAC address lub cokolwiek innego co umożliwi autoryzację konkretnego użytkownika), daty aktywności, aktywnych opcji (wersjonowanie/uruchamianie modułowe funkcji/demo itd.).

Licencja przy pierwszym uruchomieniu będzie się "aktywować" - poprzez przypisanie indywidualnej wartości (np. numeru bazy danych) do licencji. W ten sposób numer licencji będzie działał tylko dla konkretnego użytkownika (zabezpieczenie przed sytuacją używania jednego numeru przez wielu użytkowników).

Odpowiednie metody przez API będą zwracały niezbędne informację, co zabezpiecza wrażliwe dane w osobnej bazie danych. Nawet dekompilacja kodu samej aplikacji nie spowoduje dostania się do bazy z licencjami.

Licencje muszą działać dla różnych aplikacji i technologii. Jeżeli webserwis będzie nieaktywny, aplikacja implementująca API powinna wprowadzić tryb tymczasowy (np. na 3 dni) w którym główna aplikacja będzie jeszcze działała - tak, aby zabezpieczyć ewentualne problemy z serwerem.

Tematem do zastanowienia się jest sposób udostępnienia systemu. Jedną opcją jest udostępnienie kodu na git hubie (instalacja na serwerach klienta), drugą hosting na własnych serwerach (darmowe konta użytkowników, w przyszłości może opcje Premium). Trzecia opcja to połączenie dwóch poprzednich i udostępnianie aplikacji na takiej zasadzie jak np. jira, bitbucket itd.

Przypadki użycia

  1. Rejestracja/Logowanie Użytkownika

2. Rejestracja/Logowanie Grupy
3. Dodawanie Group Userów do Grupy
4. Edycja ustawień grupy
5. Dodawanie Aplikacji
6. Dodawanie Licencji
7. Dodawanie Users

Skrócone przypadki użycia

1.Rejestracja/Logowanie Użytkownika<
> Użytkownik wchodzi na stronę licensit.pro i aby skorzystać ze strony najpierw musi podać w panelu logowania swój email i hasło. Po zalogowaniu przekierowywany jest następnie do osobnej strony wyboru grupy. Jeśli do danego emaila przypisane są jakieś grupy (bądź zaproszenia) ma możliwość wybrania danej grupy. Ma również zawsze opcje utworzenia nowej grupy, więc nawet jak nie ma żadnych innych możliwości to zawsze jest ta opcja widoczna. Po wybraniu wybraniu grupy logowanie jest zakończone. Jest następnie przekierowywany do strony głównej grupy (panel licencji). Notka. użytkownik ma oczywiście możliwość zmiany hasła w razie zapomnienia. Wysyłany zostaje mail z linkiem w którym może zmienić swoje hasło. Póki co nie przewidywane są większe zabezpieczenia (np.: 2FA). Użytkownik może mieć wiele grup (każda to osobny panel ale logowanie jest to samo.)

2. Rejestracja/Logowanie Grupy<
> Patrz najpierw punkt 1. Po wpisaniu maila użytkownik i hasła ma możliwość wyboru/stworzenia grupy. Jeśli otrzymał on zaproszenie od administratora danej grupy, ma możliwość logowania w niej. Jeśli nie otrzymał zaproszenia to nie ma możliwości logowania, więc grupa nie wyświetla się w opcjach. Nie ma możliwości rejestracji/logowania do grupy bez zaproszenia. 2.1 Jeśli użytkownik chcę stworzyć grupę po kliknięciu stwórz nową grupę podaje nazwę grupy (unique), wyświetlaną nazwę grupy po czym zostaje przeniesiony do panelu nowej grupy z tą notką że ta osoba automatycznie po zarejestrowaniu otrzymuje uprawnienia admina.

3. Dodawanie Group Userów do Grupy<
> Jeśli użytkownik ma uprawnienia dodawania nowych osób dodanych przez administratora to ma prawo zapraszania ich. Wchodzi w panel "My Group" gdzie następnie ma możliwość wglądu na wszystkie wysłane zaproszenia, wszystkich userów i ich uprawnienia (dostępne uprawnienia póki co: "admin", "invite") edycję ich uprawnień (tylko admin) jak również prosta notka z secretsami aby móc je wkleić do aplikacji (tylko 'admin') [to będzie opisane w docsach, ale każda grupa musi mieć unique secrets jakiś]. Jest to prosta lista na której spodzie będzie znajdowała się opcja zaproszenia nowej osoby przez podanie emailu (tylko admin i invite). Ma w tym panelu również możliwość wybrania opcji edytowania ustawień grupy (tylko admin). Nowy użytkownik który nie jest założycielem grupy domyślnie może robić wszystko tylko nie zapraszać nowe osoby i nie edytować grupę.

4. Edycja ustawień grupy<
> Klikając opcję edytowania ustawień grupy (patrz punkt 3) mamy możliwość zmiany widocznej nazwy grupy i całkowitego rozwiązania grupy (zabezpieczone prostym pop up'em "are you sure?").

5. Dodawanie Aplikacji<
> Wchodząc na panel Licencji najpierw wyświetla się lista naszych aplikacji które później możemy wybierać przy dodawaniu licencji. Możemy je edytować i dodawać z tego panelu. Aplikacja zawiera w sobie poza nazwą, toggle switch on/off którym można wyłączyć dostęp do aplikacji wszystkim licencjom z tą aplikacją powiązanym.

6. Dodawanie Licencji<
> Wchodząc na panel 'Licenses' mamy możliwość stworzenia licencji. Na początku pokazuje się nam panel z listą wyboru aplikacji. Po wyborze aplikacji do której chcemy wyświetlić/dodać/edytować licencje wyświetla nam się lista kluczy i przypisanej im użytkownikom. Klikając odpowiedni przycisk tworzymy nową licencje (klucz). Tworząc nową licencje generuje się nam unikalny klucz (możemy go regenerować). Mamy możliwość przypisania danego klucza do klienta (rozwijany z listy) i dodania mu permissions które są niczym innym jak arrayem stringów. np.: Permissions: ['Drukowanie', 'Generowanie'] tak więc wszystkie pola licencji to:

  1. Aplikacja jakiej dotyczy (brana ze podstrony aplikacji w którą weszliśmy)

2. Klient (może być też firma) dla jakiej została sprzedana(wybierany z listy rozwijanej)
3. data włączenia (POSTMVP)
4. data wyłączenia (POSTMVP)
5. Czy aktywna (ogólnie)
6. Czy aktywowana (numer mac/ bazy danych lub innej wartości identyfikującej został przypisany)
7. Numer identyfikujący (numer mac/ bazy danych lub innej wartości identyfikującej) tylko dla tego numeru licencja będzie zwracała true  (POSTMVP)
8. Listę premissions (POSTMVP)
9. Uwagi (POSTMVP)

7. Dodawanie Klientów<
> Wchodząc w panel 'Clients' mamy listę użytkowników naszej aplikacji (z widocznymi kolumnami: nazwa klienta, data dodania Klienta). Jeden Klient może mieć wiele licencji. Możemy edytować każdego użytkownika jak i dodawać nowych. Klikając na nim rozwijamy jego dodatkowe info tj.: listę wszystkich jego licencji z linkami do edycji przy każdym z nich. Klikając odpowiedni przycisk tworzymy nowego Klienta. Dodając nowego Klient podajemy jego nazwę (może być np.: imie+nazwisko lub nazwa firmy) jak również podajemy id przypisanej mu licencji. Info: póki co wszystkie listy będą one page, z czasem można dodać paginacje. POST-MVP

Model Biznesowy

Projekt jest planowany jako open source. W planach byłoby w przyszłości wprowadzenie płatności w aplikacji zależnej od ilości licencji. Jednakże kod dalej pozostawałby open source, więc jeżeli kogoś nie satysfakcjonowałyby nasze stawki, zawsze mógłby postawić na własnym serwerze fork'a i działać niezależnie bez naszej zgody. Jako że wdrażanie płatności nie jest naszym priorytetem, prawdopodobnie pojawi się dopiero jeśli pojawią się klienci.

Materiały

|| nazwa |||| link || || Pełne przypadki użycia |||| https://docs.google.com/document/d/1dgvFnFiLlrq6S6c9j_WkCLk3DjNyGPf8tr3QL68YI90/ || || Prezentacja |||| https://docs.google.com/presentation/d/1jrnxKi64PHJ7Q6vHHB4Bx0SndzZh8r08k88Qk7G7M0E/ ||

Praca Inż

https://docs.google.com/document/d/1mInTXhjTBsbkBVZQRCy9euA_psfwE2JR9-5AK2TH27w/