Open mpennaste opened 2 years ago
Peale Mihkli ja Mardiga kõnet, panin siis testkeskkonnas tööle OAuth 2 Google ja FB (sutsu aeglane võib lihtsalt olla, USA server jne), see siis samade FB ja Google appidega mis meil live: https://bit.ly/mpmoodle
Kuigi ma ei tea täpselt kas just see on see mis me soovime, sest ei saanud aru kas Mart mõistis seda pluginat millest ka ülal juttu ning mis kirjelduse järgi tegelt just vastaks kõige paremini meie soovidele, vähemalt minu arusaama mööda, st kasutataks olemasolevaid Strapi kasutajaid ja nende kontode infot (lisainfo siis talletatakse ka Moodles ja uuendatakse vajadusel):
Kui me ikkagi soovime oma kasutajatele võimaldada parooliga autentimist, siis on selleks ainus moodus oma oauth teenuse käivitamine, mille vastu siis nii koduka, kui Moodle kasutajad saavad pöörduda.
Seda aitaks teha selle Argo est-o-auth abil; pealekauba oleks sellega kohe olemas ka ID, MID ja SmartID.
Kui kasutaja ostab kursuse, siis:
Strapi loob API kaudu Moodle kasutaja (kęs on identifitreeritud e-maili kaudu)
Moodle käivitab seepeale kasutaja autentimise protseduuri?
Strapis Peab täiendama user profile't Moodle ID väljaga
Strapi saab tagasi Moodles loodud kasutaja ID ja salvestab user profile alla
Strapi registreerib API kaudu kasutaja, kes ostis kursusele ligipääsu, MOODLEs kursuse juures ära
Kasutajale omistatakse roll (kursuse ostmise kaudu või toimetaja poolt), mille õigused kirjeldavad: -- kasutajal on õigus selle kurrsuse infot näha (kui osa infot on tavakasutajale varjatud, näiteks video vaatamine meie lehtedel) -- kasutajal aktiveeritakse Moodlesse sellele kurusele suunamise nupp -- kasutajale on õigus luua Moodles kasutaja, kui seda juba olemas ei ole
Igale kurususele loome eraldi rolli (UserRole) strapis
loodud: user collectionis UID väli nimega moodle_id course collectionis UID väli nimega moodle_id
loodud roll Course_01_participant
ja selle alla seotud 2 õigust:
loodud 2 funktsiooni moodle_user_create ja moodle_register_to_course_01
Ma siin oma keskkonnas sain lõpuks loogika mingitpidi küll tööle, aga mitmeid küsimusi tekkis.
küsimusele suunaks vastama Liisi ja Mihkli :)
3.
lisasin ka yhele course'le moodle ID ja yhele CourseEventile sama moodle ID - see on päriselt olemasolev kursus seal, id'ga 2
2.
- Toote alt selle product_type kustutaksin ära, aga tahaks enne kindel olla, et me seda väärtust kusagil ei kasuta. Praegu tabeli kaudu tooteid luues täidame selle väärtusega 'pass'. Nii et võibolla kasutame? Nõus Martiniga, et kuna see on loodud nyyd product_category alla, siis loeks tyypi sealt (pass ja course on praegu tüübid). Äkki Liis oskab kommenteerida näiteks Google tabelisse aruande küsimise juures - kas seal kasutame seda tyypi producti alt?
Tundub mõistlik. Samas miks Product_Category all see korratav on, kas põhjusega?
- ProductType juures palun veel kriitikat, et kas seal oleks parem kasutada lisaks nimele ka value välja: näiteks name = Pass ja value = pass?
Samuti ilmselt mõistlik, sest seal ei osanudki muud võtta hetkel kui võrrelda ID järgi, et kui sisaldab ID 2, siis järelikult passitüübiga tegu.
- Kui teha relatsioon Course (CourseEvent) ja Product_Category vahel kahepoolseks? Sest moodle_id käsitsi kopeerimine Moodlest lisaks Course'le (CourseEventile) veel ka Product_Category alla - ei tundu õige ja on ka veaaldis.
Või sisestada ainult Product_Category alla. Kuna ma pärin asja alates Productist siis väga sügavaid andmeid ei saa kätte, sama näiteks juba product_types'iga, mida siis spetsiaalselt pärin, sest ta on relatsioonina. Siin targemad siis otsustagu. Lihtsalt neid relatsioone lisades võib juhtuda, et peab lisapäringuid tegema just selle tarbeks (mis mulle pole probleem, aga Strapi kohta ei tea kui koormus suur).
3.
- Jah, võiks olla küll sel viisil hierarhiliselt, et kui on üksiku producti (kindla iD'ga toote) all kirjas tema valid_from ja valid_to - siise sealt, muidu Product_Category alt. Küsimus: kas peaks need sama asja kirjeldavad infod viima ka samale kujule? Product_category all on need korratava komponendi sees, Producti all lapikult.
Mina toetaks mõlemal puhul lapikut :)
- Kui Kursuse juures on see info pigem informatiivne, siis Product_Category juures pigem funktsionaalne, e sealt peaks saama nii selle info, millal kasutaja võib osta kursusele piletit (sales_period) kui ka selle, millal ta seda piletiga saadud õigust kasutada võib (validity_period)
Ma kasutaks jah funktsionaalsuses Product_Category't (st ka moodle_id oleks tore seal) ja super kui ajavahemik lapik oleks, hetkel passi saadavust/ostmisvõimalust kontrollides kasutan nt esimest priceAtPeriod vahemikku mis ette jääb ja millesse ostmisaeg mahub.
- Toote alt selle product_type kustutaksin ära, aga tahaks enne kindel olla, et me seda väärtust kusagil ei kasuta. Praegu tabeli kaudu tooteid luues täidame selle väärtusega 'pass'. Nii et võibolla kasutame? Nõus Martiniga, et kuna see on loodud nyyd product_category alla, siis loeks tyypi sealt (pass ja course on praegu tüübid). Äkki Liis oskab kommenteerida näiteks Google tabelisse aruande küsimise juures - kas seal kasutame seda tyypi producti alt?
Jah, kui tabelist kirjutame siis anname kaasa tüübi pass, ei pea! Küsimise osas, ei oska 100% vastata, kus võime kasutada aga Mirror eraldi esmapilgul ei tundunud küsivat tüüpi toote all.
- ProductType juures palun veel kriitikat, et kas seal oleks parem kasutada lisaks nimele ka value välja: näiteks name = Pass ja value = pass?
Kui tundub nii selgem. siis ilmselt võib lisada välja. Koodis ma ei näe vahet, kas küsid ja kontrollida väärtust välja sees v id'd.
Tundub, et Martini vastused ja koosolekul arutatu vastab küs :)
Kui tundub nii selgem. siis ilmselt võib lisada välja. Koodis ma ei näe vahet, kas küsid ja kontrollida väärtust välja sees v id'd.
Ses tõesti vist väga vahet pole, jätab ilmselt selle lisavälja siis ära (kui just muud head põhjust sellele pole ja keegi seda vahepeal ei kustuta ja uut ei loo). Ma koodis katsunud mõne kommentaari ka panna, et hiljem ise midagi aru saaks ja ei peaks jooksma Strapisse või kuhugi piiluma, et mis see ID 2 siis nüüd lõpuks oli :)
Testin:
E nagu nähe, ma ei oska testida
dev keskkonnas:
toote müügi ajal lisaks:
Keiss: Kasutaja on ostnud toote, mis annab õiguse osaleda kursusel, nii meie lehel kui Strapis. Aga tekib olukord, kus meil on vaja peatada (näiteks ajutiselt) tema õigus kursusel osaleda. Siis tal peab säilima ostetud toode - selle eest on ta maksnud, see on tema oma, transaktsiooniga seotud jne. E me ei saa kursusel osalemise õigust ära kaotada temalt toote ära võtmisega. Product'i all on boolean väli ACTIVE. Product'i all on ka väljad valid_from ja valid_to, ja kui need on tyhjad, siis lloetakse need väärtused Product_Category alt. E kasutaja õigus kursusel osaleda tuleb toote kaudu ja tootel on kehtivusaeg ja aktiivsuse boolean väärtus. Neid mõlemaid saaks kasutada kursusel ühe konkreetse kasutaja ühel konkreetsel kursusel osalemise õiguse kontrollimiseks.
Tahame, et kasutaja näeks oma tooteid ja oma kursusi. Ja tahame, et kasutaja näeks, nii neid kursusi, millel osalemiseks on tal õigus, kui ka neid, millele tema õigus on peatatud.
Ettepanek:
Arutame täna, 8. juunil, koosolekul kuidas seda testida.
pikkade nimedega objektide vahelised relatsioonid DEVis - kas saame üle vaadata?
See on tegemata või ei tööta, vajab uurimist:
- Strapis minu kasutaja all rolli 'Course_01_participant' ei ilmu kontrollida, kas Productile vastava Product_Category all on user_roles relatioonis väärtusi. Kui on, siis lisada need user_role väärtused Producti ostja User'ile
- [ ] Teha, lisada kõik user_roles product_category alt userile toodet userile omistades.
Mulle tundub ka see teema pole veel reaalsuses lahendust leidnud.
Keiss: Kasutaja on ostnud toote, mis annab õiguse osaleda kursusel, nii meie lehel kui Strapis. Aga tekib olukord, kus meil on vaja peatada (näiteks ajutiselt) tema õigus kursusel osaleda. Siis tal peab säilima ostetud toode - selle eest on ta maksnud, see on tema oma, transaktsiooniga seotud jne. E me ei saa kursusel osalemise õigust ära kaotada temalt toote ära võtmisega. Product'i all on boolean väli ACTIVE. Product'i all on ka väljad valid_from ja valid_to, ja kui need on tyhjad, siis lloetakse need väärtused Product_Category alt. E kasutaja õigus kursusel osaleda tuleb toote kaudu ja tootel on kehtivusaeg ja aktiivsuse boolean väärtus. Neid mõlemaid saaks kasutada kursusel ühe konkreetse kasutaja ühel konkreetsel kursusel osalemise õiguse kontrollimiseks.
Tahame, et kasutaja näeks oma tooteid ja oma kursusi. Ja tahame, et kasutaja näeks, nii neid kursusi, millel osalemiseks on tal õigus, kui ka neid, millele tema õigus on peatatud.
Ettepanek:
- lisada kasutaja alla lisaks My_products, My_films, My_screenings ja My_events'ile ka My_courses (CourseEvents). -- Kas see peaks olema relatsioon, nagu My_products või korratav komponent nagu teised (filmid, seansid ja evendid)?
- näidata kasutajale kõiki tema tooteid
- näidata kasutajale kõiki tema kursusi -- ideaalis näidata kursuste juures ka nende 'kehtivust' - sest need on alati ajalised - on möödunud kursused, käimasolevad ja tulevad kursused. E ideaalis tahaks markeerida aktiivseid ja mitteaktiivseid kursusi.
Testisin LIVEs
Rollide osas, et kas lihtsalt lisamisest piisab või jääb kasutaja ka mingi hetk rollist ilma, ala kui toode vahetab omanikku vms?
Lisaks see omanikuvahetuse asi, arve jms osas vist tegime eraldi, st owner väli pole enam see mis kajastab ostjat vaid konkreetset toote praegust omanikku?
Rollide osas, et kas lihtsalt lisamisest piisab või jääb kasutaja ka mingi hetk rollist ilma, ala kui toode vahetab omanikku vms?
Jah, kui roll tuleb toote kaudu ja toode vahetab omanikku, e kasutaja pole eile ostetud toote omanik näiteks täna, siis peaks ka roll kaduma. Hetkel on see passide ostul ja ehk ka kursustel / Industry'l osalemisel toimuv, kui ma ostja palvel määran tootele uue omaniku.
Lisaks see omanikuvahetuse asi, arve jms osas vist tegime eraldi, st owner väli pole enam see mis kajastab ostjat vaid konkreetset toote praegust omanikku?
Selleks tegime jah eraldi issue: https://github.com/poff-bnff/web2021/issues/514
Rollidega lõpuks pea tossas, aga üht juhtumit ei saagi hetkel nagu lahendada. Aga laias laastus peaks töötama.
Siin siis ainuke probleem selles, et kui keegi peaks käsitsi lisama kasutajale mingi rolli mis võib kaasneda hiljem ka mõne tootega, siis tootest ilma jäädes kaotab ta selle rolli, mis siis, et see oli tal ka juba kellegi poolt käsitsi ilma tooteta lisatud.
St näide:
St hetkel võtame kasutaja õigused, lahutame sealt kasutajalt eemaldatud toodetega seotud õigused ning lisame omakorda kõik kasutaja hetkel olemasolevate toodetega seotud õigused.
Sarnaselt nagu kirjeldatud siin
Moodle plugin: Dashboard - Site administration - Plugins - Authentication - External database Strapi enda süsteemis kasutab järgnevat: Link
Moodle plugin aga tundub, et salt'imist ei kasuta?
Lisaks on meil databaasi ühendus SSL certiga, seda kohta ei leia pluginast hetkel.