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
- 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:
- 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/