ζην Authentication Manager Joomla CMS Πηςσιακή επγαζία με θέμα:
by user
Comments
Transcript
ζην Authentication Manager Joomla CMS Πηςσιακή επγαζία με θέμα:
Πηςσιακή επγαζία με θέμα: Authentication Manager ζην Joomla CMS Διζηγηηήρ: Παπαδοςπάκηρ Γεώπγιορ ποςδαζηήρ: Μπαπούνηρ Ιωάννηρ Πεπιεσόμενα 0. Ππόλογορ 1. Κεθάλαιο 1ο : Διζαγωγή 1.1. Πεξηγξαθή πηπρηαθήο εξγαζίαο…………………………………………………..5 1.2. θνπόο πηπρηαθήο εξγαζίαο...…………………….…………………………………5 2. Κεθάλαιο 2ο : Δπγαλεία 2.1. Αλαθνξά 2.1.1. Xampp έθδνζε 1.7.1…………………………………………….….………6 2.1.2. Joomla έθδνζε 1.5.10………………………………………………………7 2.2. Οδεγίεο εγθαηάζηαζεο 2.2.1. Δγθαηάζηαζε Xampp………………………………………………………8 2.2.2. Δγθαηάζηαζε Joomla……………………………………………..………10 2.2.2.1. Βήκα 1ν : Δπηινγή Γιώζζαο……………………………………10 2.2.2.2. Βήκα 2ν : Πξνιεπηηθόο Έιεγρνο……………………………….11 2.2.2.3. Βήκα 3ν : Άδεηα Υξήζεο GNU/GPL………………………….12 2.2.2.4. Βήκα 4ν : Ρπζκίζεηο Βάζεο Γεδνκέλσλ………………………13 2.2.2.5. Βήκα 5ν : Ρπζκίζεηο FTP………………………………………..14 2.2.2.6. Βήκα 6ν : Βαζηθέο Ρπζκίζεηο…………………………………..15 2.2.2.7. Βήκα 7ν : Σέινο……………………………………………16 ο 3. Κεθάλαιο 3 : Γνωπιμία -Δξοικείωζη με ηο Joomla 3.1. Backend………………………………………………...………………………….17 3.2. Frontend………………………………………………..………………………….24 4. Κεθάλαιο 4ο : Γνωπιμία - Μελέηη δομικών ζηοισείων 4.1. Δλζέκαηα (Modules)…………………………………………………..…………26 4.2. Δλζέκαηα Γηαρείξηζεο (Components)…………………………….……………29 4.3. Πξόζζεηα (Plugins)………………………………………………………………31 5. Κεθάλαιο 5ο : Ανάλςζη - Δγκαηάζηαζη Authentication Manager 5.1. Υξήζηκα ζηνηρεία – ιεπηνκέξεηεο………………………………...…………….33 5.2. Δγθαηάζηαζε – ξύζκηζε επέθηαζεο…………………………………………….34 5.3. Αλάιπζε δηεπαθώλ………………………………………………..…………….41 5.3.1. Γηαρεηξηζηήο Δμππεξεηεηώλ…………………….…….…………………….43 5.3.2. Γηαρεηξηζηήο Δλζεκάησλ Γηαρείξηζεο………………..……………………..45 5.3.3. Γηαρεηξηζηήο Πεξηνξηζκώλ…………………………..……….…………..46 5.3.4. Γηαρεηξηζηήο Παξακέηξσλ………………………………………………..47 5.3.5. Γηεπαθή πξόζζεζεο λένπ αληηθεηκέλνπ – λένπ εμππεξεηεηή……...……….48 5.3.6. Γηεπαθή πξόζζεζεο λένπ αληηθεηκέλνπ ζην Γηαρεηξηζηή Πεξηνξηζκώλ……49 6. Κεθάλαιο 6ο : Authentication Manager ζηην ππάξη 6.1. Γηεπαθέο…………………………………………………………………………..50 6.1.1. Πξόζζεζε - επεμεξγαζία εμππεξεηεηή…………………………………52 6.1.2. Γνθηκή εηζόδνπ ρξήζηε ρξεζηκνπνηώληαο εμππεξεηεηή…………..…56 6.1.3. Απελεξγνπνίεζε αληηθεηκέλνπ ελζέκαηνο δηαρείξηζεο CAS Login...63 6.1.4. „Παίδνληαο‟ κε ηνπο πεξηνξηζκνύο………………………………………65 2 7. Κεθάλαιο 7ο : Μελέηη - ανάλςζη ζημανηικών ζςναπηήζεων ηηρ επέκηαζηρ 7.1. generateServer()…………………………………………….…..…………..68 7.2. getParams()………………………………………………….….……..……68 7.3. authenicate()……………………………………………….………..………69 7.4. generateValidateURL()……………………………………………………..69 7.5. getServer()…………………………………………………..………………72 7.6. createUser()…………………………………………………………….…...74 7.7. onAuthenticate()…………………………………………………………….75 8. ςμπεπάζμαηα – Δπίλογορ 9. Βιβλιογπαθία - Πηγέρ 3 ΠΡΟΛΟΓΟ Με ηελ επξεία αλάπηπμε ηνπ δηαδηθηύνπ θαη ησλ εθαξκνγώλ ηνπ, ε δπλαηόηεηα ησλ ρξεζηώλ λα επηθνηλσλνύλ θαη λα αληαιιάζνπλ απόςεηο κεηαμύ ηνπο, έγηλε πνην επξεία. Βέβαηα γηα ιόγνπο αζθαιείαο θαη όρη κόλν, πξέπεη νη εθαξκνγέο λα γλσξίδνπλ ηνπο ρξήζηεο. Έηζη από πνιύ λσξίο ρξεηάζηεθε νη δηαδηθηπαθέο εθαξκνγέο λα απνζεθεύνπλ ηα ραξαθηεξηζηηθά ησλ ρξεζηώλ ηνπο. Υαξαθηεξηζηηθά ηα νπνία θάλνπλ ηελ εθαξκνγή πνην εύρξεζηε θαη πξνζηηή ζηνλ ρξήζηε. πλήζσο δεηνύληαη από ηνλ ρξήζηε έλα όλνκα (username) θαη έλαο θσδηθόο (password) γηα ηελ απζεληηθνπνίεζή ηνπ θαη ελ ζπλερεία ηα ινηπά ζηνηρεία ηνπ. Σα ηειεπηαία ρξόληα αλαπηύρζεθε ε δπλαηόηεηα λα ππάξρεη έλα κνλαδηθό username θαη password ηα νπνία ζα ρξεζηκνπνηνύληαη από νπνηαδήπνηε δηαδηθηπαθή εθαξκνγή. Απηό έρεη πινπνηεζεί ζήκεξα εθηόο ησλ άιισλ θαη κε ηελ ρξήζε ηνπ OpenID, όπνπ έλαο ρξήζηεο απνθηά κηα κνλαδηθή „ηαπηόηεηα‟ ηελ νπνία κπνξεί λα ρξεζηκνπνηήζεη γηα λα έρεη πξόζβαζε ζε εθαξκνγέο νη νπνίεο ππνζηεξίδνπλ ηελ ρξήζε OpenID. Δπνκέλσο ε γενική ιδέα είλαη λα κελ αζρνινύκαη εγώ ζαλ εθαξκνγή κε ηελ απζεληηθνπνίεζε ηνπ ρξήζηε αιιά λα ηνλ παξαπέκπσ θάπνπ αιινύ, π.ρ. ζε θάπνηνλ εμππεξεηεηή εηο ηνλ νπνίν ηα ζηνηρεία ηνπ είλαη είδε γλσζηά, έηζη μεθεύγσ από ην θνκκάηη ηεο απζεληηθνπνίεζεο θαη ηα πξάγκαηα γίλνληαη πνην εύθνια γηα κέλα. Απηό έξρεηαη ε επέθηαζε Authentication Manager λα θάλεη. Με ιίγα ιόγηα, παξέρεηαη ε δπλαηόηεηα ζηνλ δηαρεηξηζηή κηαο ηζηνζειίδαο βαζηζκέλεο ζην δεκνθηιέο joomla λα παξαπέκπεη ηνλ ρξήζηε ζε έλαλ εμσηεξηθό εμππεξεηεηή γηα ηελ απζεληηθνπνίεζή ηνπ. θνπόο ηεο όιεο απηήο εμσηεξηθήο παξαπνκπήο δηά απζεληηθνπνίεζε είλαη θαζαξά θαη κόλν ε απζεληηθνπνίεζε ηνπ ρξήζηε. Γελ παξέρνληαη ινηπά ζηνηρεία ηνπ ρξήζηε (άιισζηε πνηνο εμππεξεηεηήο δίδεη έηζη απιά ηα ζηνηρεία ησλ ρξεζηώλ ηνπ). 4 ν Κεθάιαην 1 : Δηζαγωγή Ζ επέθηαζε Authentication Manager αλαπηύρζεθε κε ζθνπό λα δίδεη ηελ δπλαηόηεηα ζηνλ δηαρεηξηζηή ηεο βαζηζκέλεο ζε joomla (έθδνζε 1.5.x) ηζηνζειίδαο ηνπ, ηελ δπλαηόηεηα λα ρξεζηκνπνηήζεη εμσηεξηθνύο εμππεξεηεηέο απζεληηθνπνίεζεο (external authentication servers (SSO)) γηα ηελ είζνδν ρξεζηώλ ζηελ ηζηνζειίδα, όπσο CAS, openid, AOL OpenAuth, Google AuthSub, Microsoft Windows Live Contacts API, Yahoo BBAuth θ.η.ι. 1.1. Πεπιγπαθή πηςσιακήρ επγαζίαρ Ζ επέθηαζε ζα απνηειείηαη από ελζέκαηα, ελζέκαηα δηαρείξηζεο θαη πξόζζεηα (modules ,components, plugins "δνκηθά" ζηνηρεία joomla) αλαπηπγκέλα κε PHP ηα νπνία ζα θάλνπλ ρξήζε βάζεο δεδνκέλσλ SQL. ια ηα components, plugins θαη modules ηα νπνία ζα αλαπηπρζνύλ ζα ζέβνληαη ηηο αξρέο ζρεδίαζεο θαη πξνγξακκαηηζκνύ ηνπ joomla (MVC - Model View Controller). Ο δηαρεηξηζηήο ζα έρεη ηελ δπλαηόηεηα λα εηζάγεη θαηλνύξγηνπο εμππεξεηεηέο ζην ζύζηεκα, λα επηιέγεη πνηνη από απηνί ζα είλαη ελεξγνί θαη γηα πνηνπο ρξήζηεο, θαζώο επίζεο θαη ηελ δπλαηόηεηα λα επηηξέπεη ή απνξξίπηεη ηελ είζνδν ελόο ρξήζηε ζηελ ηζηνζειίδα εμεηάδνληαο ηελ IP δηεύζπλζή ηνπ. Σν ίδην ζα κπνξεί λα θάλεη θαη γηα ηνπο ηπρώλ ππάξρνληεο άιινπο δηαρεηξηζηέο. 1.2. κοπόρ πηςσιακήρ επγαζίαρ θνπόο ηεο πηπρηαθήο εξγαζίαο είλαη ε παξνπζίαζε κηαο ρξήζηκεο επέθηαζεο γηα ην joomla ε νπνία αλαπηύρζεθε ζαλ αληηθείκελν απαζρόιεζεο ηεο πξαθηηθήο κνπ άζθεζεο ζην παλεπηζηήκην La Rochelle ηεο Γαιιίαο. ηόρνο βέβαηα, είλαη λα γίλεη όζν πνην δπλαηόλ αλαιπηηθόηεξε παξνπζίαζε ηεο επέθηαζεο θαη ε ελζάξξπλζε ησλ αλαγλσζηώλ λα ηελ ρξεζηκνπνηήζνπλ. 5 ν Κεθάιαην 2 : Δξγαιεία Δηο ην θεθάιαην 2ν ζα γλσξίζνπκε ηα εξγαιεία κε ηα νπνία ζα βνεζεζνύκε δηά ηελ αλάπηπμε ηνπ Authentication Manager extension, θαζώο επίζεο θαη ηελ δηαδηθαζία εγθαηάζηαζεο θαη έιεγρν ζσζηήο ιεηηνπξγίαο ησλ. 2.1 . Αναθοπά επγαλείων 2.1.1 Xampp 1.7.1. Σν XAMPP είλαη έλα ρξήζηκν βνήζεκα πνπ καο δίλεη ηελ δπλαηόηεηα λα θάλνπκε ηνλ ππνινγηζηή καο έλα web server θαη όρη κόλν. Δκείο ζα ρξεζηκνπνηήζνπκε ηελ έθδνζε 1.7.1 γηα windows δηά ηελ εγθαηάζηαζε ηνπ Joomla θαη ελ ζπλερεία ηεο επέθηαζήο καο. Σν XAMPP γηα Windows πεξηέρεη: Apache HTTPD 2.2.11 + Openssl 0.9.8i MySQL 5.1.33 PHP 5.2.9 phpMyAdmin 3.1.3.1 XAMPP CLI Bundle 1.3 FileZilla FTP Server 0.9.31 Mercury Mail Transport System 4.62 Από απηά ζα ρξεηαζηνύκε θπξίσο ηνλ Apache (εμππεξεηεηή εηο ηνλ νπνίνλ ζα αλεβάζνπκε ηελ Joomla ηζηνζειίδα καο), ηελ MySQL (έλα πνιύ γξήγνξν θαη δπλαηό, ζύζηεκα δηαρείξηζεο βάζεσλ δεδνκέλσλ. Μηα βάζε δεδνκέλσλ καο επηηξέπεη λα απνζεθεύνπκε , λα αλαδεηάκε , λα ηαμηλνκνύκε θαη λα αλαθαινύκε ηα δεδνκέλα απνηειεζκαηηθά. Χξεζηκνπνηείηαη εθηελώο από ην Joomla) θαη ηελ PHP (κηα γιώζζα script από ηελ πιεπξά ηνπ δηαθνκηζηή , ζρεδηαζκέλε εηδηθά γηα ην Web. Χξεζηκνπνηείηαη θαη απηή εθηελώο από ην Joomla) Θα ρξεζηκνπνηήζνπκε επίζεο, θαη ην phpMyAdmin (έλα ζύλνιν από php scripts κε ην νπνίν δηαρεηξηδόκαζηε ηηο βάζεηο δεδνκέλσλ πνπ έρνπκε, κέζσ web) θπξίσο γηα ηνλ έιεγρν ησλ εηζαρζέλησλ δεδνκέλσλ. Γηα πεξηζζόηεξεο πιεξνθνξίεο, επηζθεθηείηε ηελ ηζηνζειίδα www.apachefriends.org 6 2.1.2 Joomla 1.5.10. Έλα πιήξεο ζύζηεκα δηαρείξηζεο πεξηερνκέλνπ, γεκάην δπλαηόηεηεο αιιά θαη ηαπηόρξνλα εμαηξεηηθά επέιηθην θαη θηιηθό ζηελ ρξήζε εθαξκνγή. Υξεζηκνπνηώληαο ην Joomla κπνξνύκε λα δεκνζηεύζνπκε ζην δηαδίθηπν κηα πξνζσπηθή ηζηνζειίδα, αιιά θαη έλαλ νιόθιεξν εηαηξηθό δηθηπαθό ηόπν. Ζ εθαξκνγή είλαη αλνηθηνύ θώδηθα ( Open Source ) θαη ε ρξήζε ηνπ είλαη απνιύησο δσξεάλ. Δίκεζα ειεύζεξνη λα ην ρξεζηκνπνηήζνπκε, λα ην ηξνπνπνηήζνπκε θαη λα δηεξεπλήζνπκε ηηο δπλαηόηεηέο ηνπ ρσξίο λα πξέπεη λα πιεξώζνπκε θάπνηα άδεηα ρξήζεο. Οη δπλαηόηεηεο επέθηαζήο ηνπ είλαη πξαθηηθά απεξηόξηζηεο. To Authentication Manager extension απνηειείηαη από δνκηθά ζηνηρεία ηνπ Joomla (components, plugins, modules), ζπλεπώο δηά ιόγνπο αζθαιείαο ρξεζηκνπνηνύκε ηελ ηειεπηαία έθδνζε 1.5.10. (ηειεπηαία έθδνζε ηελ ζηηγκή ζπγγξαθήο πηπρηαθήο), ε νπνία πεξηέρεη ζεκαληηθέο αλαβαζκίζεηο αζθαιείαο από ηελ πξνεγνύκελε έθδνζε 1.5.9 (66 ζην ζύλνιν). Γηα πεξηζζόηεξεο πιεξνθνξίεο επηζθεθηείηε ηελ ηζηνζειίδα www.joomla.org 7 2.2 . Οδηγίερ εγκαηάζηαζηρ 2.2.1 Δγκαηάζηαζη Xampp Αθνύ θαηεβάζνπκε ζηνλ ππνινγηζηή καο ην xampp-win32-1.7.1.exe από ηελ ηζηνζειίδα www.apachefriends.org ηξέρνπκε ην αξρείν, θαηόπηλ ζα καο δεηήζεη έλα θάθειν γηα λα θάλεη εγθαηάζηαζε ησλ απαξαίηεησλ αξρείσλ, ηα νπνία ρξεηάδνληαη γηα ηελ ιεηηνπξγία ηνπ. Έζησ όηη θάλνπκε ηελ εγθαηάζηαζε ζηνλ ζθιεξό δίζθν C ζηνλ θάθειν xampp (C:\xampp). Ζ εγθαηάζηαζε ζα δεκηνπξγήζεη - ηνπνζεηήζεη απηόκαηα ηα απαξαίηεηα αξρεία γηα ηελ νκαιή ιεηηνπξγία ηνπ Apache εμππεξεηεηή θαη ησλ άιισλ επηκέξνπο πξνγξακκάησλ (PHP, MySQL). Καηόπηλ ην ηειεπηαίν πξάγκα πνπ πξέπεη λα θάλνπκε είλαη λα ηξέμνκε ην αξρείν setup_xampp.bat γηα λα εγθαηαζηήζεη – ζεηάξεη ηελ εθαξκνγή. Δλ ζπλερεία ην κόλν ην νπνίν κέλεη είλαη λα μεθηλήζνκε ηνλ Apache εμππεξεηεηή θαη ηελ MySQL (Γελ ρξεηάδεηαη ηίπνηα άιιν). Απηό ζα γίλεη αλ ηξέμνπκε ηα αξρεία apache_start.bat θαη mysql_start.bat ή ελαιιαθηηθά ην xampp-control.exe κε ην νπνίν κπνξνύκε λα ηα μεθηλήζνπκε. (Όια ηα αξρεία πνπ επηζεκάλακε βξίζθνληαη ζηνλ θάθειν εγθαηάζηαζεο) Γηα λα πηζηνπνηήζνπκε ηελ ιεηηνπξγία ηνπο, ηξέρνπκε κηα εθαξκνγή θπιινκεηξεηή, ζηελ δηθή καο πεξίπησζε απηόλ ηεο Mozilla Foundation. ηελ κπάξα δηεύζπλζεο εηζαγάγνπκε: http://localhost/xampp Αλ όια πάλε θαιά ζα δνύκε ηελ παξαθάησ εηθόλα. 8 Έλα ζεκαληηθό βήκα είλαη λα αιιάμνπκε ηηο πξνεπηιεγκέλεο ξπζκίζεηο αζθαιείαο ηνπ xampp. Δκείο εδώ δελ ζα ην θάλνπκε δηά ηνλ απιό ιόγν ηνπ όηη δνπιεύνπκε ηνπηθά ( localhost ). πλεπώο ν ρξήζηεο ηεο MySQL είλαη ν root κε θελό ην πεδίν θσδηθνύ (Θα ρξεηαζηεί από ην Joomla). Αο πξνρσξήζνπκε ζηελ εγθαηάζηαζε ηνπ joomla 9 2.2.2 Δγκαηάζηαζη Joomla Γηα ηελ εγθαηάζηαζε ηνπ Joomla ζηνλ ηνπηθό εμππεξεηεηή πνπ έρνπκε είδε εγθαηαζηήζεη (βιέπεηε παξαπάλσ 2.2.1 Δγκαηάζηαζη Xampp), ζα ρξεηαζηνύκε ην αξρείν Joomla_1.5.10-Stable-Full_Package.zip ην νπνίν ζα ην βξνύκε ζηελ ηζηνζειίδα http://www.joomla.org/download.html. Μόιηο κε επηηπρία απνθηήζνπκε ην αξρείν, ην απνζπκπηέδνπκε (παξέρεηε δπλαηόηεηα απνζπκπίεζεο κέζσ ησλ windows) θαη ηνπνζεηνύκε ηα δεδνκέλα ηνπ κέζα ζε έλαλ θάθειν ηνλ νπνίν νλνκαηίδνπκε joomla10. Καηόπηλ ηνλ ηνπνζεηνύκε ζηνλ θάθειν htdocs ν νπνίνο βξίζθεηαη ζηνλ θάθειν πνπ θάλακε ηελ εγθαηάζηαζε ηνπ Xampp. Δλ ζπλερεία ζηελ κπάξα δηεύζπλζεο ηνπ θπιινκεηξεηή καο εηζαγάγνπκε: http://localhost/joomla10 Δπεηδή είλαη ε πξώηε θνξά πνπ ηξέρνπκε ην joomla πξέπεη λα ην εγθαηαζηήζνπκε – αξρηθνπνηήζνπκε. Γηά ηνηνύηνλ ιόγν θαινύκαζηε λα εθηειέζνπκε θάπνηα βήκαηα εγθαηάζηαζεο όπσο απηά θαίλνληαη ζηνλ θπιινκεηξήηε θαη εηο ηελ παξαθάησ εηθόλα. ΒΗΜΑ 1ν : Δπηινγή Γιώζζαο Δπηιέγνπκε ηελ γιώζζα ηεο αξεζθείαο καο θαη θάλνπκε θιηθ ζην θνπκπί κε ηελ ιέμε Επόμενο και με ένα βελάκι δίπλα ηου. Δλ ζπλερεία κεηαθεξόκαζηε ζην βήκα 2ν 10 ΒΗΜΑ 2ν : Πξνιεπηηθόο Έιεγρνο Γίλεηε γεληθόο έιεγρνο γηα ηα ζηνηρεία πνπ ρξεηάδεηαη ην joomla δηά ηε ζσζηή ιεηηνπξγία ηνπ (Όπσο PHP, MySQL θ.η.ι.). Κάλνπκε θιηθ ζην θνπκπί Επόμενο θαη κεηαθεξόκαζηε ζην βήκα 3ν . 11 ΒΗΜΑ 3ν : Άδεηα Χξήζεο GNU/GPL Γηαβάδνπκε ηελ άδεηα ρξήζεο ηνπ πξνγξάκκαηνο. Κάλνπκε θιηθ ζην θνπκπί Επόμενο θαη κεηαθεξόκαζηε ζην βήκα 4ν. 12 ΒΗΜΑ 4ν : Ρπζκίζεηο Βάζεο Γεδνκέλωλ ηηο Βαζηθέο Ρπζκίζεηο o o o o o Δπηιέγνπκε ην είδνο ηεο βάζεο δεδνκέλσλ: mysql Δηζαγάγνπκε ζην πεδίν λνκα Γηαθνκηζηή: localhost Δηζαγάγνπκε ζην πεδίν λνκα Υξήζηε: root Σν πεδίν Κσδηθόο ην αθήλνπκε θελό Δηζαγάγνπκε ζην πεδίν λνκα Βάζεο Γεδνκέλσλ: joomla10 Γελ ρξεηάδεηαη λα πεηξάμνπκε ηηο Πξνρσξεκέλεο Ρπζκίζεηο. Αλ εηζαγάγνπκε ηα πξναλαθεξζέληα δεδνκέλα ζα έρνπκε ηελ εμήο εηθόλα: Κάλνπκε θιηθ ζην θνπκπί Επόμενο θαη κεηαθεξόκαζηε ζην βήκα 5ν. 13 ΒΗΜΑ 5ν : Ρπζκίζεηο FTP Γελ ρξεηάδεηαη λα εηζαγάγνπκε ηίπνηα. Κάλνπκε θιηθ ζην θνπκπί Επόμενο θαη κεηαθεξόκαζηε ζην βήκα 6ν. 14 ΒΗΜΑ 6ν : Βαζηθέο Ρπζκίζεηο Καινύκαζηε λα εηζαγάγνπκε θάπνηα δεδνκέλα γηα ηελ βαζηθή ιεηηνπξγία ηεο ελ Joomla βαζηζκέλεο ηζηνζειίδαο καο. Δηο ην πεδίνλ Όνομα Ιζηόηοπος εηζαγάγνπκε ην όλνκα ηεο ηζηνζειίδαο καο. Δηο ην πεδίνλ Η διεύθςνζη ηλεκηπονικού ηασςδπομείος ζαρ εηζαγάγνπκε ηελ ειεθηξνληθή καο δηεύζπλζε, ( επεηδή εκείο δνπιεύνπκε ηνπηθά ζα ρξεζηκνπνηήζνπκε κηα ηπραία ). Δηο ην πεδίνλ Κωδικόρ Γιασειπιζηή εηζαγάγνπκε έλαλ θσδηθό ηνλ νπνίν ζα ρξεζηκνπνηνύκε γηα λα ζπλδεζνύκε σο δηαρεηξηζηήο ζηελ ηζηνζειίδα καο. Δηο ην πεδίνλ Δπιβεβαίωζη Κωδικού Γιασειπιζηή επαλεηζαγάγνπκε ηνλ παξαπάλσ θσδηθό. Γηα ιόγνπο επρξεζηίαο ζα θάλνπκε θιηθ θαη ζην θνπκπί πνπ ιέεη Διζαγωγή Δνδεικηικού Πεπιεσομένος έηζη ώζηε απηόκαηα ην Joomla λα καο θηηάμεη κηα αξρηθή ζειίδα. Δθόζνλ πξαγκαηνπνηήζνπκε ηα παξαπάλσ βιέπνπκε ηα εμήο: Κάλνπκε θιηθ ζην θνπκπί Επόμενο θαη κεηαθεξόκαζηε ζην βήκα 7ν. 15 ΒΗΜΑ 7ν : Σέινο Μέρξη ηώξα, όια θαιά. Έρνπκε εγθαηαζηήζεη κε επηηπρία ην Joomla. Σν κόλν πνπ κέλεη, όπσο καο δεηείηε (βιέπεηε παξαπάλσ εηθόλα), είλαη λα δηαγξάςνπκε ηνλ θάθειν INSTALLATION , ν νπνίνο βξίζθεηαη εηο ηνλ θάθειν εγθαηάζηαζεο ηνπ Joomla (ζπκεζείηε θάθεινο εγθαηάζηαζεο: joomla10). Μόιηο ην πξάμνπκε, κπνξνύκε λα ηδνύκε ηελ ηζηνζειίδα καο θάλνληαο θιηθ ζην θνπκπί πνπ ιέεη Ηζηόηνπνο ή λα ζπλδεζνύκε σο δηαρεηξηζηέο εηο ηελ ζειίδα δηαρεηξίζεσο ηνπ Joomla. ηε ζπλέρεηα εηο ην κεθάλαιο 3ο ζα εμνηθεησζνύκε κε ηελ δηαρείξηζε ηνπ Joomla όζνλ αθνξά ην θνκκάηη ηνπ δηαρεηξηζηή, εηο βαζκό ηέηνην ώζηε λα κπνξνύκε λα εγθαζηζηνύκε θαη δηαρεηξηδόκαζηε ηα ιεγόκελα extensions ( επεθηάζεηο ), πξάγκα πνπ ζα καο θάλεη γλώζηεο ηεο εγθαηάζηαζεο θαη δηαρείξηζεο ηεο δηθήο καο επέθηαζεο, Authentication Manager. 16 ν Κεθάιαην 3 : Γλωξηκία – Δμνηθείωζε κε ην joomla 3.1. Backend Σν Administrator Back-end (πίλαθαο ειέγρνπ δηαρεηξηζηή) είλαη ε πξώηε ζειίδα πνπ εκθαλίδεηαη κόιηο ζπλδεζεί έλαο Γιασειπιζηήρ (Administrator), Τπεπδιασειπιζηήρ (Super Administrator) ή έλαο Γιεςθςνηήρ (Manager) ζηνλ πίλαθα ειέγρνπ. Σν πξαγκαηηθό πιηθό ηνπ Πίλαθα ειέγρνπ, ην νπνίν κπνξεί λα δεη θάζε επίπεδν δηαρεηξηζηή, εμαξηάηαη από ην επίπεδν πξόζβαζεο. Έλαο Γηεπζπληήο βιέπεη ιηγόηεξα από έλα Γηαρεηξηζηή πνπ κε ηε ζεηξά ηνπ βιέπεη ιηγόηεξα από έλα Τπεξδηαρεηξηζηή ν νπνίνο βιέπεη ηα πάληα. ην ζεκείν απηό λα αλαθέξνπκε όηη ζα αζρνιεζνύκε κε ηελ δηαρείξηζε ηνπ ηζηόηνπνπ σο Τπεξδηαρεηξηζηέο. Αο ζπλδεζνύκε ινηπόλ ζηνλ πίλαθα ειέγρνπ. Δηζαγάγνπκε εηο ηελ κπάξα δηεύζπλζεο ηνπ θπιινκεηξήηε καο ηελ δηεύζπλζε: http://localhost/joomla10/administrator. Καηόπηλ ζα κεηαθεξζνύκε ζε κηα ηζηνζειίδα εηο ηελ νπνίαλ θαινύκαζηε λα εηζαγάγνπκε ηα ζηνηρεία δηαρεηξηζηή (username θαη password), ηα νπνία ηα εηζαγάγακε, γηα πξώηε θνξά, θαηά ηελ δηάξθεηα εγθαηάζηαζεο ηνπ Joomla. Δηζαγάγνπκε σο Username: admin (ην joomla εμ’ νξηζκνύ θηηάρλεη ηνλ δηαρεηξηζηή σο admin). Δηζαγάγνπκε σο Password: (ηνλ θσδηθό πνπ δώζακε θαηά ηελ εγθαηάζηαζε ηνπ joomla). Παξαθάησ βιέπνπκε ηελ ζειίδα εηζαγσγήο Username θαη Password. Θα παξαηεξήζεηε όηη ππάξρεη έλα κελνύ επηινγήο Language. Αθήλνπκε απηό πνπ έρεη (default) δεδνκέλνπ όηη δελ έρνπκε εγθαηαζηήζεη θάπνηα άιιε γιώζζα. 17 Δλ ζπλερεία θάλνπκε θιηθ-παηάκε (από εδώ θαη ζην εμήο „παηάκε‟) ην θνπκπί πνπ βιέπνπκε από θάησ (Login). Αλ ηα ζηνηρεία πνπ εηζαγάγακε είλαη ζσζηά ηόηε κεηαθεξόκαζηε ζηε ζειίδα ηνπ πίλαθα ειέγρνπ. 18 Απηά πνπ ρξεηάδεηαη λα γλσξίδνπκε, είλαη πσο ζα βιέπνπκε ηνπο ρξήζηεο νη νπνίνη είλαη απνζεθεπκέλε ζην joomla, πσο ζα εγθαζηζηνύκε, βιέπνπκε θαη δηαρεηξηδόκαζηε επεθηάζεηο θαη πσο βιέπνπκε ηα ελζέκαηα δηαρείξηζεο (components, γηα ηα νπνία ζα κηιήζνπκε ζην επόκελν θεθάιαην Γλσξηκία – Μειέηε δνκηθώλ ζηνηρείσλ joomla). Γηα λα δνύκε ηνπο ρξήζηεο, επηιέγνπκε κε ην δείθηε ηνπ πνληηθηνύ, από ηελ κπάξα ηνπ κελνύ, ην πξώην κελνύ Site θαη ελ ζπλερεία παηάκε ην ππνκελνύ User Manager. ειίδα User Manager: 19 Δδώ βιέπνπκε ηνπο ρξήζηεο ηνπο νπνίνπο „γλσξίδεη‟ ην joomla. πσο βιέπνπκε έρεη έλαλ ρξήζηε ηνλ Administrator, ν νπνίνο είλαη Logged In, Enabled, θαη έρεη επίπεδν πξόζβαζεο Super Administrator. Γελ καο ελδηαθέξεη γεληθώο ε ρξήζε ηνπ User Manager, δηόηη δελ ζα ρξεηαζηεί λα δεκηνπξγήζνπκε θαηλνύξγην ρξήζηε (όρη ηνπιάρηζηνλ από απηή ηε ζειίδα αιιά κέζσ θώδηθα), απιά κόλν ε ιεηηνπξγία Enabled, Group θαη Delete. Γηα λα δνύκε ηα δηαζέζηκα ελζέκαηα δηαρείξηζεο, επηιέγνπκε κε ην δείθηε ηνπ πνληηθηνύ, από ηελ κπάξα ηνπ κελνύ, ην κελνύ Components. Από εδώ ζα βιέπνπκε – δηαρεηξηδόκαζηε ην έλζεκα δηαρείξηζεο πνπ ζα δεκηνπξγήζνπκε. Γηα λα θάλνπκε εγθαηάζηαζε ή απεγθαηάζηαζε επεθηάζεσλ, επηιέγνπκε κε ην δείθηε ηνπ πνληηθηνύ, από ηελ κπάξα ηνπ κελνύ, ην κελνύ Extensions θαη ελ ζπλερεία παηάκε ην ππνκελνύ Install/Uninstall. 20 ηε ζειίδα πνπ εκθαλίδεηαη παηάκε ην θνπκπί Αλαδήηεζε, βξίζθνπκε ην αξρείν ηεο επέθηαζήο καο (ζπλήζσο ζε ζπκπηεζκέλε κνξθή, zip, tar ) θαη ελ ζπλερεία παηάκε ην δηπιαλό θνπκπί Upload File & Install. Απηό ήηαλ, αλ ε επέθηαζή καο είλαη ζσζηά δνκεκέλε (προγραμμαηιζηικά) ζα εγθαηαζηαζεί κηα ραξά. Γηα λα δνύκε - δηαρεηξηζηνύκε ηα ελζέκαηα (βιέπεηε θεθάιαην Γλσξηκία – Μειέηε δνκηθώλ ζηνηρείσλ joomla), επηιέγνπκε κε ην δείθηε ηνπ πνληηθηνύ, από ηελ κπάξα ηνπ κελνύ, ην κελνύ Extensions θαη ελ ζπλερεία παηάκε ην ππνκελνύ Module Manager. 21 ηελ ζειίδα πνπ εκθαλίδεηαη βιέπνπκε ηα δηαζέζηκα ελζέκαηα,ηα νπνία κπνξνύκε πνιύ εύθνια επεμεξγαζηνύκε. Γηα λα δνύκε - δηαρεηξηζηνύκε ηα πξόζζεηα (βιέπεηαη θεθάιαην Γλσξηκία – Μειέηε δνκηθώλ ζηνηρείσλ joomla), επηιέγνπκε κε ην δείθηε ηνπ πνληηθηνύ, από ηελ κπάξα ηνπ κελνύ, ην κελνύ Extensions θαη ελ ζπλερεία παηάκε ην ππνκελνύ Plugin Manager. 22 ηε ζειίδα πνπ εκθαλίδεηαη βιέπνπκε ηα δηαζέζηκα πξόζζεηα. πσο ίζσο πξνζέμαηε, ζηελ αξρή ηεο ιίζηαο παξαηεξνύκε ηέζζεξα authentication πξόζζεηα (ηα νπνία έρνπλ λα θάλνπλ κε ηελ ηαπηνπνίεζε ελόο ρξήζηε όζνλ αθνξα ην backend αιιά θαη ην frontend): Authentication - Joomla, Authentication – LDAP, Authentication – OpenID θαη Authentication – Gmail, όπσο ίζσο έρεηε θαηαιάβεη, εκείο ζα πξνζζέζνπκε έλα δηθό καο authentication πξόζζεην, ην Authentication Manager (ην νπνίν ζα δηαρεηξίδεηαη πνιιέο authentication κεζόδνπο). Απηά όζνλ αθνξά ην θνκκάηη ηεο δηαρείξηζεο ηνπ backend. Πεξηζζόηεξα ζα δνύκε θαηά ηελ δηάξθεηα εγθαηάζηαζεο θαη ειέγρνπ ηεο επέθηαζήο καο. Αο πεξάζνπκε λα γλσξίζνπκε ιίγα πξάγκαηα γηα ην frontend. 23 3.2. Frontend Σν Front-end είλαη ε θπξίσο ζειίδα πνπ εκθαλίδεηαη ζε έλαλ επηζθέπηε ηνπ ηζηόηνπνύ καο αιιά θαη ελόο ζπλδεδεκέλνπ ρξήζηε. Αο δνύκε ινηπόλ ην frontend, ην νπνίν είλαη νπζηαζηηθά ε ηζηνζειίδα καο. Δηζαγάγνπκε εηο ηελ κπάξα δηεύζπλζεο ηνπ θπιινκεηξεηή καο ηελ δηεύζπλζε: http://localhost/joomla10/ . Βιέπνπκε ηελ αξρηθή καο ζειίδα λα έρεη θάπνηα έηνηκα κελνύ θάπνηα άξζξα θ.η.ι. Απηό δηόηη θαηά ηελ εγθαηάζηαζε ηνπ joomla παηήζακε ην θνπκπί Διζαγωγή Δνδεικηικού Πεπιεσομένος. Απηό πνπ καο ελδηαθέξεη από ην frontend είλαη ην ζεκείν εηο ην νπνίνλ γίλεηε εηζαγσγή ζηνηρείσλ από έλαλ ρξήζηε γηα είζνδν (login) ζηελ ηζηνζειίδα καο. ηελ ζπγθεθξηκέλε πεξίπησζε, απηό βξίζθεηαη θάησ αξηζηεξά. ύξνληαο ηελ ζειίδα πξνο ηα θάησ, ζα ην εληνπίζνπκε. 24 Ηδνύ: Απηά ηα νιίγα πξνο ην παξώλ δηά ην frontend. Πεξηζζόηεξα ζα δνύκε αθόηνπ εγθαηαζηήζνπκε ηελ επέθηαζή καο. Τέλορ 3ος Κευαλαίος. Δηο ηνηνύην θεθάιαην κάζακε πώο λα δηαρεηξηδόκαζηε ην backend θαη ην frontend ηνπ joomla. Πξάγκα πνιύ ζεκαληηθό δηόηη δελ θηάλεη κόλν λα θηηάμνπκε ηελ επέθηαζή καο, αιιά λα ηελ θάλνπκε θαη ιεηηνπξγηθή ρξεζηκνπνηώληαο θάπνηα ζηάληαξ ηνπ, όζνλ αθνξά ζηνλ ζρεδηαζκό αιιά θαη ζην πξνγξακκαηηζκό ηεο επέθηαζήο καο. Δηο ην επόκελν Κεθάιαην 4ν ζα κάζνπκε ηη είλαη ηα δνκηθά ζηνηρεία ηνπ joomla θαη πσο απηά είλαη δνκεκέλα θαη επίζεο από ηη απνηεινύληαη. 25 ν Κεθάιαην 4 : Γλωξηκία - Μειέηε δνκηθώλ ζηνηρείωλ joomla 4.1. Δλζέκαηα (Modules) Σα ενθέμαηα είλαη ηα αληηθείκελα κέζα από ηα νπνία κπνξνύκε λα εκθαλίζνπκε πιεξνθνξίεο ζηελ ηζηνζειίδα καο (εηο ην frontend αιιά όπσο ζα δνύκε θαη ζην backend). Κάζε ένθεμα πξέπεη λα έρεη κνλαδηθό όλνκα, ώζηε λα κελ κπεξδεύεηαη κε ηα άιια. Σα ενθέμαηα κπνξνύλ λα πεξηέρνπλ κελνύ, δηαθεκίζεηο, ςεθνθνξίεο, άιιεο εθαξκνγέο ή πεξηερόκελν ηεο επηινγήο καο. Έζησ όηη ζέινπκε λα δεκηνπξγήζνπκε έλα ένθεμα κε ην όλνκα externallogin. Απηό ζα απνηειείηαη από αξρεία php, html, xml κέζα ζε έλα θάθειν κε όλνκα ηεο κνξθήο mod_xxxxx όπνπ xxxxx ην όλνκα ηνπ ενθέμαηορ. ηελ πεξίπησζή καο externallogin. Έρνπκε ζπλεπώο έλαλ θάθειν κε νλνκαζία mod_externallogin. Απηό όκσο δελ θηάλεη γηα λα έρνπκε έλα έλζεκα όπσο θαηαιαβαίλεηε. Πξέπεη λα πξνζζέζνπκε θάπνηα αξρεία κε θώδηθα ηα νπνία ζα θάλνπλ ηε ιεηηνπξγία πνπ ζέινπκε. Έηζη ινηπόλ πξέπεη λα πξνζζέζνπκε έλα αξρείν php κε νλνκαζία mod_externallogin.php, ε νλνκαζία είλαη ζεκαληηθή θαη θαιό είλαη λα έρνπκε ην ίδην όλνκα κε ην όλνκα ηνπ ελζέκαηνο. 26 Mod_externallogin.php: Κάθε απσείο ηος ηο οποίο βπίζκεηαι ζηο joomla ππέπει να έσει ηο εξήρ κομμάηι κώδικα <?php defined('_JEXEC') or die('Restricted access'); ?> ν ιόγνο, δηά ηελ κε αλάγλσζε ηεο ζειίδαο απεπζείαο από ηνλ θπιινκεηξεηή. Έηλαη απαξαίηεην γηα ηελ αζθάιεηα ηνπ ηζηόηνπνπ. Από θάησ πεξηέρνληαη ππό ηελ κνξθή ζρνιίσλ ηεο php γιώζζαο πξνγξακκαηηζκνύ, ρξήζηκα ζηνηρεία γηα ην ένθεμα. Από θάησ κπνξνύκε λα πξνζζέζνπκε θώδηθα html, javascript θπζηθά θαη php. Έλα ελδηαθέξνλ ραξαθηεξηζηηθό είλαη όηη κπνξνύκε λα έρνπκε θαη άιια αξρεία κε θώδηθα php από ηα νπνία ζα κπνξνύκε δηαβάδνπκε δεδνκέλα, λα εθηεινύκε ζπλαξηήζεηο θαη νύησ θαζεμήο. ην παξάδεηγκά καο 27 θαινύκε ην αξρείν helper.php (πεξηέρεη θάπνηεο ρξήζηκεο θιάζεηο) ην νπνίν βξίζθεηαη ζηνλ ίδην θάθειν κε ην mod_externallogin, δειαδή ηνλ θάθειν ηνπ ελζέκαηόο καο. require_once (dirname(__FILE__) . DS . 'helper.php'); Έλα άιιν βαζηθό αξρείν, ην νπνίν είλαη απαξαίηεην γηα ηελ εγθαηάζηαζε ηνπ ελζέκαηνο είλαη έλα αξρείν xml κε όλνκα mod_externallogin.xml (όπσο θαηαιάβαηε κέρξη ηώξα, ρξεζηκνπνηνύκε ην όλνκα ηνπ ελζέκαηνο). Απηό ην αξρείν παξέρεη δεδνκέλα ζην joomla ζηνηρεία ηνπ δεκηνπξγνύ (όλνκα, ειεθηξνληθή δηεύζπλζε, θ.η.ι.), ζηνηρεία ηνπ ελζέκαηνο (όλνκα, έθδνζε, πεξηγξαθή θ.η.ι.) θαη θάπνηα πνην ζεκαληηθά ζηνηρεία όπσο, πνηα αξρεία θαη πνπ, λα θάλεη εγθαηάζηαζε. Σν xml αξρείν ρξεζηκνπνηεί xml markup γιώζζα. Γηα πεξηζζόηεξεο πιεξνθνξίεο: http://www.w3.org/XML/ Παξάδεηγκα xml. Mod_externallogin.xml Γηα λα κπνξέζνπκε λα εγθαηαζηήζνπκε ην έλζεκά καο πξέπεη λα ζπκπηέζνπκε ηα δεδνκέλα ζε έλα αξρείν zip, tar, tgz θ.η.ι. όπσο έρεη πξνιερζεί ζε πξνεγνύκελν θεθάιαην. Ολνκαηίδνπκε ην αξρείν mod_externallogin.tgz. Σώξα είκαζηε έηνηκνη λα εγθαηαζηήζνπκε ην έλζεκά καο ζην joomla. 28 4.2. Δλζέκαηα Γηαρείξηζεο (Components) Σα ενθέμαηα διασείπιζηρ είλαη ελζέκαηα ηα νπνία είλαη νξαηά κόλν ζην δηαρεηξηζηή θαη ζε όζνπο έρνπλ πξόζβαζε ζηελ πεξηνρή δηαρείξηζεο (πίλαθαο ειέγρνπ). Έζησ έλα έλζεκα δηαρείξηζεο κε όλνκα ελζέκαηνο externallogin. Απηό „πξέπεη‟ λα απνηειείηαη από έλα αξρείν admin.externallogin.php (ην νπνίν ειέγρεη λα δεη αλ ππάξρεη ην controller.php πνπ κε ηε ζεηξά ηνπ, καο παξαπέκπεη ζην ηη ζα δνύκε, ‘views’, κόιηο θνξηώζνπκε ην έλζεκα δηαρείξηζεο από ηνλ πίλαθα ειέγρνπ). Απηά ηα views πεξηέρνληαη ζε έλαλ θάθειν views (πάληα κέζα ζην θάθειν ελζέκαηνο δηαρείξηζεο). Απηά είλαη θάθεινη κε αξρεία php, js, css θαη όηη άιιν ρξεηαζηνύκε γηα ηελ ζσζηή εκθάληζε ησλ δεδνκέλσλ καο ζηνλ πίλαθα ειέγρνπ. Πξέπεη λα ππάξρνπλ αξρεία sql (install.sql, uninstall.sql) γηα εγθαηάζηαζε πηλάθσλ ζηε βάζε mysql ηνπο νπνίνπο ζα θάλεη ρξήζε ην έλζεκά καο. ην έλζεκα δηαρείξηζεο πξέπεη λα ππάξρεη θαη έλαο θάθεινο tables ν πνίνο πεξηέρεη αξρεία php κε θώδηθα πνπ αθνξνύλ ηα πεδία ηηκώλ ζηε βάζε δεδνκέλσλ mysql (αλ ρξεζηκνπνηεί ην έλζεκά καο βάζε δεδνκέλσλ), έλαο θάθεινο models ν νπνίνο πεξηέρεη αξρεία php κε θώδηθα ν νπνίνο απνηειείηαη από ζπλαξηήζεηο θαη κεζόδνπο κε ηηο νπνίεο π.ρ. κπνξνύκε λα δηαγξάςνπκε έλα αληηθείκελν ή λα πάξνπκε ηα δεδνκέλα από ηε βάζε, έλαο θάθεινο controllers ν νπνίνο πεξηέρεη αξρεία php κε θώδηθα π.ρ. γηα απνζήθεπζε δεδνκέλσλ, αθύξσζε δηεξγαζίαο θ.η.ι. (Απηά θαινύλε ηηο ζπλαξηήζεηο από ηα αξρεία ζηνλ θάθειν models), έλαλ θάθειν assets κε ηπρώλ εηθνλίδηα πνπ ίζσο ρξεζηκνπνηήζνπκε ζην έλζεκά καο, έλαλ θάθειν help ν νπνίνο πεξηέρεη αξρεία βνεζείαο ρξήζεο ηνπ ελζέκαηόο καο, έλαλ θάθειν language νπνίνο πεξηέρεη αξρεία γηα πνιύγισζζηθή ππνζηήξημε ηεο εθαξκνγήο καο θαζώο επίζεο θαη έλα θάθειν extensions εηο ηνλ νπνίνλ κπνξνύκε λα ηνπνζεηήζνπκε extra ελζέκαηα γηα απηόκαηε εγθαηάζηαζε ηνπο θαηά ηελ εγθαηάζηαζε ηνπ ελζέκαηνο δηαρείξηζεο. Σα βαζηθά κέξε ηνπ ελζέκαηνο, εθεί πνπ γίλεηε όιε ε δνπιεηά, είλαη νη θάθεινη models, views, controllers θαη θαη επέθηαζε ηα αξρεία ηνπο. Δδώ ζα έπξεπε λα κηιήζνπκε γηα ην κνληέιν MVC (Model View Controller) αιιά δελ είλαη απηόο ν ζθνπόο ηεο πηπρηαθήο. Γηα πεξηζζόηεξεο πιεξνθνξίεο κπνξείηε λα αλαηξέμεηε ζηελ ηζηνζειίδα Joomla MVC. ηηο ηζηνζειίδεο JModel, JView, JController κπνξείηε λα δείηε πεξηζζόηεξεο πιεξνθνξίεο γηα ηε δνκή ηνπο. Με ιίγα ιόγηα, απηά πξέπεη λα πεξηέρνληαη ζε έλα έλζεκα δηαρείξηζεο. ηελ επόκελε ζειίδα κπνξνύκε λα δνύκε ηελ δνκή ηνπ θαθέινπ comp_externallogin, ηελ νπνία θαη πεξηγξάςακε παξαπάλσ. 29 ηελ επόκελε ζειίδα ζα γλσξίζνπκε θάπνηα ζηνηρεία θαη γηα ηα πξόζζεηα (plugins) ηνπ joomla. 30 4.3. Πξόζζεηα (Plugins) Σα joomla! πξόζζεηα (plugins) , από εδώ θαη ζην εμήο ζα ηα αλαθέξνπκε ζθέην πξόζζεηα, εμππεξεηνύλ πνηθίινπο ζθνπνύο. πσο ηα ελζέκαηα εληζρύνπλ ηελ παξνπζίαζε ηνπ ηζηόηνπνπ , ηα πξόζζεηα εληζρύνπλ ηα δεδνκέλα κε ηα νπνία παξέρεηαη πξόζζεηε ιεηηνπξγηθόηεηα ζην joomla. Παξαθάησ ζα γλσξίζνπκε ηηο βαζηθέο αξρέο πνπ ρξεζηκνπνηνύληαη γηα ην ζρεδηαζκό θαη ηελ αλάπηπμε ελόο πξόζζεηνπ. Δλώ ν αξηζκόο ησλ πξόζζεησλ είλαη ζρεδόλ απεξηόξηζηνο, ππάξρνπλ θάπνηα βαζηθνύ ηύπνπ πξόζζεηα ηα νπνία ρξεζηκνπνηνύληαη από ην joomla. Απηνί νη βαζηθνί ηύπνη είλαη νκαδνπνηεκέλνη ζε θαθέινπο θάησ από ηνλ θάθειν /plugins/. Απηνί είλαη: authentication content editors editors-xtd search system user xmlrpc Απηά πνπ καο ελδηαθέξνπλ (επεηδή απηά ζα ρξεζηκνπνηήζνπκε) είλαη απηά ηεο θαηεγνξίαο authentication θαη system θαη user. Σα authentication πξόζζεηα καο βνεζνύλ ζηελ ηαπηνπνίεζε ηνπ ρξήζηε κε ην joomla όηαλ απηόο πξνζπαζεί λα ζπλδεζεί. Σα system πξόζζεηα εθηεινύλ ελέξγεηεο ζε δηάθνξα επίπεδα ζηε δηάξθεηα εθηέιεζεο ηνπ PHP θώδηθα ν νπνίνο ηξέρεη ζε έλα joomla ηζηόηνπν. Σα user εθηεινύλ δηεξγαζίεο νη νπνίεο έρνπλ λα θάλνπλ κε ην επίπεδν ηνπ ρξήζηε. Αο δνύκε θη έλα παξάδεηγκα ελόο πξόζζεηνπ ζηελ επόκελε ζειίδα. 31 Σν πξόζζεην απνηειείηε από κία θιάζε plgAuthenticationExternallogin ε νπνία επεθηείλεηαη ζε κία γεληθή θιάζε JPlugin ηνπ joomla. Τπάξρεη κηα ζπλάξηεζε onAuthentication εηο ηελ νπνία θάλνπκε θάπνηνπο ειέγρνπο ηηκώλ κε ηελ βάζε θαη αλαιόγσο δίλνπκε πξόζβαζε ή όρη. Δλλνείηε πσο πξέπεη λα ππάξρεη θαη έλα xml αξρείν ην νπνίν πεξηγξάθεη ην πξόζζεην. Τέλορ 4ος Κευαλαίος. Δηο ηνηνύην θεθάιαην γλσξίζακε θαη κειεηήζακε ηα δνκηθά ζηνηρεία ηνπ joomla δειαδή όια εθείλα ηα θνκκάηηα θώδηθα πνπ ην απαξηίδνπλ θαη ην θάλνπλ ην δεκνθηιέζηεξν CMS ζηνλ θόζκν, ηελ παξνύζα ζηηγκή εγγξαθήο ηεο πηπρηαθήο. Μάζακε κε ιίγα ιόγηα από ηη απνηειείηαη έλα έλζεκα / έλζεκα δηαρείξηζεο θαη πνηα είλαη ε ιεηηνπξγία ηνπ, επίζεο κάζακε ηηο ιεηηνπξγίεο ησλ πξνζζέησλ. Δηο ην επόκελν Κεθάιαην 5ν ζα αλαιύζνπκε θαη εγθαηαζηήζνπκε ηα ελζεκάηα – πξόζζεηα ηα νπνία είλαη βαζηθά γηα ηελ ζσζηή ιεηηνπξγία ηεο επέθηαζήο καο. 32 ν Κεθάιαην 5 : Αλάιπζε – Δγθαηάζηαζε Authentication Manager 5.1. Χξήζηκα ζηνηρεία – ιεπηνκέξεηεο Σν πξώην πξάγκα ην νπνίν ζα πξέπεη λα θάλνπκε είλαη λα αλαιύζνπκε ηελ επέθηαζε. Σν Authentication Manager, όπσο πξν πνιινύ έρνπκε αλαθέξεη, απνηειείηαη από ελζέκαηα, ελζέκαηα δηαρείξηζεο (ηα νπνία είλαη βαζηθά δηά ηνλ ιόγν όηη απηά ζα ρξεζηκνπνηνύκε γηα λα δηαρεηξηδόκαζηε ηνπο ρξήζηεο θαη θαη επέθηαζε ηελ πξόζβαζή ηνπο ή όρη ζηνλ ηζηόηνπό καο) θαζώο επίζεο θαη ηα πξόζζεηα κε ηελ βνήζεηα ησλ νπνίσλ κπνξνύκε λα πξαγκαηνπνηήζνπκε όια ηα πξνεγνύκελα. Ση ζα ρξεηαζηνύκε. Έλα έλζεκα δηαρείξηζεο com_externallogin-1.0.4.tgz κε ην νπνίν ζα γίλεηε ε θύξηα ιεηηνπξγία ηεο επεθηαζεο. Σξία πξόζζεηα (plg_externallogin, plg_multiplelogin, plg_restrictedlogin) κε ηα νπνία γίλνληαη νη θύξηεο ιεηηνπξγίεο ηνπ ζπζηήκαηνο. Σέζζεξα ελζέκαηα (mod_externallogin_admin_part.tgz, mod_externallogin_site_part.tgz, mod_restrictedlogin_admin_part.tgz, mod_restrictedlogin_site_part.tgz) ηα νπνία είλαη θνκκάηηα html, θπξίσο θώδηθα, ν νπνίνο εκθαλίδεηαη ζηηο ζειίδεο καο θαη έλα έλζεκα δηαρείξηζεο com_caslogin1.0.4.tgz (κε ηελ βνήζεηα ηνπ νπνίνπ κπνξνύκε λα ζπλδεζνύκε κε έλαλ νπνηνδήπνηε CAS εμππεξεηεηή). Αο πξνρσξήζνπκε ζηελ δηαδηθαζία εγθαηάζηαζεο θαη ξύζκηζεο ηεο επέθηαζήο καο. 33 5.2. Δγθαηάζηαζε - ξύζκηζε επέθηαζεο Δθόζνλ έρνπκε ζπγθεληξώζεη ηα απαξαίηεηα αξρεία (γηα δηθή καο επθνιία ζην αξρείν com_externallogin-1.0.4.tgz είλαη παθεηαξηζκέλα όια ηα πξόζζεηα θαη ηα ελζέκαηα εθηόο ηνπ com_caslogin-1.0.4.tgz), βιέπεηε πξνεγνύκελε ελόηεηα, ζπλδεόκαζηε ζαλ δηαρεηξηζηέο ζην backend θαη επηιέγνπκε από ην κελνύ extensions ην ππνκελνύ Install/Uninstall. Παηάκε ζην θνπκπί αλαδήηεζε θαη επηιέγνπκε ην αξρείν com_externallogin-1.0.4.tgz. Δλ ζπλερεία παηάκε ην δηπιαλό θνπκπί Upload File & Install. Αλ όια πήγαλ θαιά ηόηε ζα πάξνπκε ηελ εμήο εηθόλα: Από ηελ εηθόλα κπνξνύκε λα θαηαιάβνπκε όηη όια πήγαλ θαιά. Βιέπνπκε από ηελ αλαθνξά όηη καδί κε ην com_externallogin εγθαηαζηάζεθαλ θαη ηα ελζέκαηα θαη πξόζζεηα (ζπκεζείηε ηα είρακε παθεηάξεη καδί, ζην com_externallogin). Βιέπνπκε επίζεο όηη κε ηελ εγθαηάζηαζή ηνπο ελεξγνπνηήζακε ηα πξόζζεηα θαη ξπζκίζακε ηα ελζέκαηα ζε πνηα ζέζε ζα βξίζθνληαη (joomla:: θάζε έλζεκα πξέπεη απαξαηηήησο λα έρεη θαη θάπνην πξνζδηνξηζκό ζέζεο). Γηα λα εγθαηαζηήζνπκε ην έλζεκα δηαρείξηζεο com_caslogin-1.0.4.tgz εθηεινύκε ηελ ίδηα αθξηβώο δηαδηθαζία. 34 Σν έλζεκα δηαρείξηζήο καο εγθαηαζηάζεθε κηα ραξά. εκείσζε: πξέπεη πξώηα λα εγθαηαζηήζνπκε ην com_externallogin θαη κεηά ην com_caslogin, δηά ην ιόγν ηνπ όηη ην ηειεπηαίν κε ηελ εγθαηάζηαζή ηνπ, πξνζζέηεη απηόκαηα έλαλ εμππεξεηεηή CAS ζηε βάζε, εμππεξεηεηή ηνλ νπνίν ζα δηαρεηξίδνπκε από ηελ δηεπαθή Γηαρεηξηζηήο Δμππεξεηεηώλ (βιέπεηε παξαθάησ, αλάιπζε δηεπαθώλ) ην ζεκείν απηό ζα πξέπεη λα αλαθέξνπκε ηε έρεη γίλεη ζηε βάζε δεδνκέλσλ ηνπ joomla. Με ηελ βνήζεηα ηνπ πξνγξάκκαηνο phpmyadmin (παξέρεηαη κε ην xampp), αλνίγνπκε ηελ βάζε (γξάθνπκε http://localhost/phpmyadmin ζηε κπάξα δηεύζπλζεο ηνπ θπιινκεηξεηή καο). Γεκηνπξγνύληαη όπσο ζα δνύκε παξαθάησ ηέζζεξηο πίλαθεο. Jos_externallogin_components Πεξηέρεη έλα πεδίν κε ηνλ ηύπν ηνπ ελζέκαηνο δηαρείξηζεο com_caslogin, θαη έλα πεδίν ordering ην νπνίν ρξεηάδεηαη από ην joomla γηα ηελ ζέζε ηνπ ελζέκαηνο ζηε ιίζηα. πσο βιέπνπκε ζηελ παξαπάλσ εηθόλα θαηά ηελ εγθαηάζηαζε ηνπ com_caslogin1.0.4.tgv απηόκαηα εηζάγνπκε ζηνλ πίλαθα θαη ηνλ ηύπν ηνπ ελζέκαηνο δηαρείξηζεο ην νπνίν εγθαζηζηνύκε. Απηό ρξεηάδεηαη γηα ηελ ηαπηνπνίεζε ηνπ εμππεξεηεηή θαη ελζέκαηνο δηαρείξηζεο κέζσ θώδηθα. 35 Jos_externallogin_restricted ε απηό ηνλ πίλαθα ζα εηζαγάγνπκε ηα δεδνκέλα από ηνπο πεξηνξηζκνύο πνπ ζα ζέηνπκε από κηα δηεπαθή Γηαρεηξηζηήο Πεξηνξηζκώλ. Σν πεδίν name θξαηεί έλα όλνκα, ην πεδίν ip ηελ δηεύζπλζε IP, ην site_published θαη admin_published έλαλ αξηζκό 0 ή 1, ην params είλαη ηπρώλ πεξηνξηζκνί πνπ ζέηνπκε, ηα ππόινηπα πεδία ρξεηάδνληαη από ην joomla. Καηά ηελ εγθαηάζηαζε εηζαγάγνπκε 2 πιεηάδεο όπσο βιέπνπκε. Jos_externallogin_servers ε απηόλ ην πίλαθα ζα απνζεθεύνπκε ηνπ εμππεξεηεηέο νη νπνίνη ρξεηάδνληαη γηα ηελ απζεληηθνπνίεζε. Έλα ζεκαληηθό πεδίν είλαη ην option, ην νπνίν παίξλεη ηηκή ίδηα κε απηή ηνπ πεδίνπ type ηνπ πίλαθα jos_externallogin_components θαζώο επίζεο θαη ην unknown_user εηο ην νπνίνλ κπνξνύκε λα απνζεθεύζνπκε κηα ηηκή 0 ή 1 ή 2. Καηά ηελ εγθαηάζηαζε δελ εηζαγάγακε πιεηάδεο ζηνλ πίλαθα. Jos_externallogin_users ε απηόλ ην πίλαθα απνζεθεύνπκε ην id πνπ αληηζηνηρεί ζηνλ ρξήζηε κε id (user_id ην νπνίν ην δίδεη ην joomla απηόκαηα) από ηνλ πίλαθα Jos_externallogin_servers. Καηά ηελ εγθαηάζηαζε δελ εηζαγάγακε πιεηάδεο ζηνλ πίλαθα. 36 Ίζσο αλαξσηεζείηε πσο εγθαζίζηαληαη νη πίλαθεο ζηε βάζε θαη πσο εηζάγνληαη ηα δεδνκέλα, κα θπζηθά από αξρεία sql ηα νπνία βξίζθνληαη ζην έλζεκα δηαρείξηζεο θαη εγθαζηζηνύκε θαηά ηελ δηάξθεηα εγθαηάζηαζήο ηνπ. Ηδνύ ν θώδηθαο ηνπ αξρείνπ sql γηα ην com_externallogin: Με ην CREATE TABLE IF NOT EXISTS ηνπ ιέκε λα δεκηνπξγήζεη ηνπο πίλαθεο κε ηα αληίζηνηρα νλόκαηα εθόζνλ δελ ππάξρνπλ. Από θάησ πεξηγξάθνληαη ηα πεδία θαη νη ηύπνη ηνπο. Πεξηζζόηεξεο ιεπηνκέξεηεο γηα ηα πεδία θαη ηελ ρξήζε ηνπο ζα κάζνπκε θαηά ηελ ρξήζε θάπνηνλ δηεπαθώλ γηα εηζαγσγή εμππεξεηεηώλ, αληηθεηκέλσλ θ.η.ι. ζηα επόκελα θεθάιαηα. 37 Σν κόλν πνπ κέλεη ηώξα είλαη λα απελεξγνπνηήζνπκε ην θιαζηθό έλζεκα ζύλδεζεο ηνπ joomla. Απηό πξέπεη λα γίλεη γηα ηνλ ιόγν ηνπ όηη ζα ρξεζηκνπνηήζνπκε δηθό καο έλζεκα γηα απηή ηε δνπιεηά επεηδή ζέινπκε λα ρξεζηκνπνηήζνπκε πεξηνξηζκνύο ζηελ είζνδν ρξεζηώλ ζην ζύζηεκα, νη πεξηνξηζκνί απηνί ζα πινπνηνύληαη εμεηάδνληαο ηελ IP ηνπ ρξήζηε ν νπνίνο βξίζθεηε ζην frontend αιιά θαη ζην backend. Απηό βέβαηα δελ ζεκαίλεη όηη ζα θηηάμνπκε έλα θαηλνύξγην έλζεκα πνπ λα πεξηέρεη θόξκα εηζαγσγήο δεδνκέλσλ (username, password) αιιά ζα ηελ „ζεθώζνπκε‟ από ην θιαζζηθό έλζεκα ηνπ joomla πνπ ζα απελεξγνπνηήζνπκε. Καιό!!! Γηα λα απελεξγνπνηήζνπκε ην θιαζηθό έλζεκα ζύλδεζεο, επηιέγνπκε από ην κελνύ extensions ην ππνκελνύ Module Manager, ζηε ζπλέρεηα βξίζθνπκε ην αληηθείκελν Login Form (ζπλήζσο βξίζθεηαη θάπνπ ζηελ κέζε) θαη ην απελεξγνπνηνύκε θάλνληαο θιηθ ζην κηθξό πξάζηλν εηθνλίδην πνπ βξίζθεηαη ζηα δεμηά ηνπ: . Φπζηθά πξέπεη λα απελεξγνπνηήζνπκε ηελ Login form θαη από ην frontend (κόιηο ην θάλακε) αιιά θαη από ην backend. Γηα λα γίλεη απηό επηιέγνπκε ζηελ ζειίδα πνπ βξηζθόκαζηε θαη πνπ βιέπεηε ζηελ εηθόλα παξαπάλσ, ην ζύλδεζκν Administrator, ν νπνίνο βξίζθεηε πάλσ αξηζηεξά θαη δεμηά ηνπ ζπλδέζκνπ Site. Δλ ζπλερεία βξίζθνπκε ην αληηθείκελν Login θαη ην απελεξγνπνηνύκε όπσο αλαθέξακε πξνεγνπκέλσο. Σώξα πιένλ είκαζηε έηνηκνη λα ρξεζηκνπνηήζνπκε ηελ επέθηαζή καο αιιά αο δνύκε ηη έρνπκε θαηαθέξεη κέρξη ζηηγκήο. Αο πάκε λα δνύκε ην frontend ζην ζεκείν εηο ην νπνίν κπνξεί λα ζπλδεζεί έλαο ρξήζηεο. http://localhost/joomla10/ 38 Αλ θνηηάμνπκε αξηζηεξά ζα δνύκε ην έλζεκά καο κε ηίηιν External Login. Από θάησ είλαη γξακκέλν “No server available” πξάγκα πνπ είλαη απνιύησο θπζηνινγηθό δηόηη δελ έρνπκε εηζαγάγεη αληηθείκελα - εμππεξεηεηέο ζηελ δηεπαθή Γηαρεηξηζηήο Δμππεξεηεηώλ (δείηε παξαθάησ Αλάιπζε δηεπαθώλ – Οη δηεπαθέο ζηελ πξάμε). Από θάησ βιέπνπκε έλα έλζεκα κε ηίηιν Restricted Login. Φπζηθά είλαη ην έλζεκα mod_restrictelogin_site_part.tgz, ην νπνίν εμεηάδεη ηελ IP ηνπ ρξήζηε θαη αλαιόγσο εκθαλίδεη ή όρη ηελ login θόξκα. Δδώ καο ηελ εκθαλίδεη, δηόηη εγθαζηζηώληαο ην com_externallogin πξνζζέζακε απηόκαηα έλα αληηθείκελν ζηε δηεπαθή Γηαρεηξηζηήο Πεξηνξηζκώλ, κε ην νπνίν ιέκε ηνπ ελζέκαηνο δώζε πξόζβαζε ζε όινπο ηνπο ρξήζηεο (δείηε παξαθάησ Γεπαθή Γηαρεηξηζηήο Πεξηνξηζκώλ). Δδώ βέβαηα ίζσο ζα αλαξσηεζείηε ηη ζπκβαίλεη κε ην backend. Μα θπζηθά, ην ίδην πξάγκα. Αο απνζπλδεζνύκε από ην backend γηα λα δνύκε. 39 Ωξαίν ε; Μπνξνύκε λα ζπλδεζνύκε θαλνληθά ρξεζηκνπνηώληαο ηα ζηνηρεία καο (username, password) ζην πεδίν Restricted Login θαη όρη ζην External Login δηόηη όπσο πξναλαθέξακε δελ έρνπκε εηζαγάγεη εμππεξεηεηέο γηα εμσηεξηθή απζεληηθνπνίεζε. Μέρξη ζηηγκήο έρνπκε δεη ηη ζπκβαίλεη κόιηο εγθαηαζηήζνπκε θαη ξπζκίζνπκε ηελ δηεπαθή καο. Γηα λα κπνξέζνπκε λα πξνζζέζνπκε εμππεξεηεηέο, ηπρώλ πεξηνξηζκνύο θ.η.ι. πξέπεη λα ρξεζηκνπνηήζνπκε θάπνηεο δηεπαθέο, νη νπνίεο εγθαηαζηάζεθαλ απηόκαηα κε ηελ εγθαηάζηαζε ηνπ com_externallogin. Παξαθάησ ζα αλαιύζνπκε ηηο δηεπαθέο θαη ζα δνύκε ζηε πξάμε ηε ιεηηνπξγία ηνπο. 40 5.3. Αλάιπζε διεπαυών Υξεηαδόκαζηε κηα δηεπαθή κε ηελ νπνία ζα δηαρεηξηδόκαζηε ηνπο εμππεξεηεηέο, π.ρ. εθόζνλ θάλσ ρξήζε ελόο CAS εμππεξεηεηή γηα ηελ είζνδν ελόο ρξήζηε ζην joomla ηνλ παξαπέκπσ ζε κηα ηζηνζειίδα γηα λα εηζάγεη ηα ζηνηρεία ηνπ (ηα νπνία γλσξίδεη ν CAS εμππεξεηεηήο), έηζη ρξεηάδνκαη λα θξαηάσ ζηνηρεία όπσο ηελ δηεύζπλζε ηνπ CAS εμππεξεηεηή, ηελ ζύξα εμππεξέηεζεο, ηνλ θαηάινγν, ηελ έθδνζε θαζώο επίζεο θαη έλα όλνκα. Πεξηζζόηεξα ζα δνύκε όηαλ ζα κηιήζνπκε γηα ην έλζεκα δηαρείξηζεο com_caslogin. Απηή ε δηεπαθή ζα πινπνηείηαη από ην έλζεκα δηαρείξηζεο com_externallogin ζην view externallogins ( views - Κεθάιαην 4ν -Δλζέκαηα Γηαρείξηζεο ). Θα ηελ νλνκάζνπκε Γηαρεηξηζηήο Δμππεξεηεηώλ (Servers Manager). Γηα ηελ επεμεξγαζία αληηθεηκέλνπ ηεο δηεπαθήο, νπζηαζηηθά επεμεξγαζία εμππεξεηεηή, ζα ρξεηαζηνύκε κηα επηπιένλ δηεπαθή. Θα πινπνηείηαη ζην view externallogin Θα ρξεηαζηνύκε επίζεο κηα δηεπαθή κε ηελ νπνία ζα δηαρεηξηδόκαζηε ηα πξόζζεηα ελζέκαηα δηαρείξηζεο, όπσο ην com_caslogin. Απηό πνπ καο ελδηαθέξεη είλαη λα κπνξνύκε λα ελεξγνπνηνύκε, απελεξγνπνηνύκε ηα ππάξρνληα έλζεκαηα έηζη ώζηε κε κηαο λα απνηξέπνπκε – επηηξέπνπκε ηελ ρξήζε ησλ εμππεξεηεηώλ πνπ έρνπκε εηζαγάγεη ζηνλ Γηεπζπληή Δμππεξεηεηώλ. Σελ δηεπαθή απηή ζα ηελ νλνκάζνπκε Γηαρεηξηζηήο Δλζεκάησλ Γηαρείξηζεο (Components Manager) θαη ζα πινπνηείηαη από ην έλζεκα δηαρείξηζεο com_externallogins ζην view componentslogins. Θα ρξεηαζηνύκε θαη κηα δηεπαθή κε ηελ νπνία ζα δηαρεηξηδόκαζηε ηνλ έιεγρν πξόζβαζεο ησλ ρξεζηώλ βάζε ηεο IP ηνπο, όζνλ αθνξά ηνλ δηαρεηξηζηή ηνπ joomla αιιά θαη ηνλ απιό ρξήζηε – επηζθέπηε ηεο ηζηνζειίδαο καο. Θα ηελ νλνκάζνπκε Γηαρεηξηζηήο Πεξηνξηζκώλ (Restrictions Manager) θαη ζα πινπνηείηαη από ην έλζεκα δηαρείξηζεο com_externallogins ζην view restrictedlogins. Γηα ηελ επεμεξγαζία αληηθεηκέλνπ απηήο ηεο δηεπαθήο, ζα ρξεηαζηνύκε κηα δηεπαθή ε νπνία ζα πινπνηείηαη ζην view restrictedlogin. Μηα δηεπαθή κε ην όλνκα Παξάκεηξνη (Parameters) είλαη απαξαίηεηε κε ηελ νπνία ελεξγνπνηνύκε – απελεξγνπνηνύκε ηνπο πεξηνξηζκνύο, ηελ εμσηεξηθή ζύλδεζε θαη ηελ πνιιαπιή ζύλδεζε ζηελ θόξκα εηζόδνπ ηνπ δηαρεηξηζηή (Backend login form). πσο θαη νη άιιεο έηζη θη απηή, ζα πινπνηείηαη από ην έλζεκα δηαρείξηζεο com_externallogins ζην view parameters. Μηα άιιε ρξήζηκε δηεπαθή είλαη απηή πνπ ζα καο δίλεη ηελ δπλαηόηεηα λα αιιάδνπκε ηνλ ηύπν απζεληηθνπνίεζεο ηνπ αληηθεηκέλνπ ην νπνίν βξίζθεηαη ζηελ δηεπαθή Γηαρεηξηζηήο Δμππεξεηεηώλ, π.ρ. CAS login, GMAIL login θ.α. Μηα δηεπαθή ε νπνία καο ελεκεξώλεη γηα ηελ θαηάζηαζε έθδνζεο ηεο επέθηαζήο καο. Θα πινπνηείηαη ζην view update. 41 Θα ρξεηαζηνύκε επίζεο θαη έλα view γηα ηελ θεληξηθή δηεπαθή κέζσ ηεο νπνίαο κπνξνύκε λα κεηαθεξζνύκε ζηηο ππόινηπεο. Θα πινπνηείηαη από ην έλζεκα δηαρείξηζεο com_externallogins ζην view menu. Οη πξναλαθεξζείζεο δηεπαθέο βξίζθνληαη κέζα ζε κηα θεληξηθή δηεπαθή, κέζσ ηεο νπνία γίλεηε ε όιε δηαρείξηζε ηεο επαθήο. Θα ρξεηαζηνύκε βέβαηα θαη κηα άιιε δηεπαθή, ε νπνία ζα καο δείρλεη ηηο δηαζέζηκεο επηινγέο γηα ζύλδεζε ζην backend αιιά θαη ζην frontend. Απηή ζα πινπνηείηαη ζην view multiplelogin. εκείσζε, όιεο απηέο νη δηεπαθέο δηαηεξνύλ ηα ζηάληαξ ζρεδίαζεο ηνπ joomla (joomla coding standards). Καηά ηελ ζρεδίαζε ησλ πξναλαθεξζεηζώλ δηεπαθώλ, όπσο ζα δνύκε παξαθάησ, δελ ζα „μεθύγνπκε‟ πινπνηώληαο ηεο κε δηθό καο css style. Οη δηεπαθέο όπσο έρνπκε πξναλαθέξεη πινπνηνύληαη ζην έλζεκα δηαρείξηζεο com_externallogin ζην θνκκάηη ησλ views. Απηά βξίζθνληαη ζε έλα θάθειν κε ηελ νλνκαζία views ν νπνίνο βξίζθεηε ζηνλ θάθειν ηνπ ελζέκαηνο. ηελ δηπιαλή εηθόλα βιέπνπκε ηελ δνκή ηνπ θαθέινπ views ρσξίο ηα αξρεία θώδηθα. Αο μεθηλήζνπκε ηελ πεξαηηέξσ αλάιπζε ησλ δηεπαθώλ. 42 Διασειπιστήρ Εξςπηπετητών (Servers Manager) Γνκή view externallogins Με ην πνπ αλνίγνπκε ηελ δηεπαθή, ην πξώην πξάγκα πνπ θαιείηε είλαη ην view.html.php ην νπνίν καο παξαπέκπεη ζην template tpl κέζσ ηεο θιάζεο display. View.html.php <?php defined('_JEXEC') or die('Restricted access'); jimport('joomla.application.component.view'); class ExternalLoginViewExternallogins extends JView { function display($tpl = null) { $servers = & $this->get('servers'); $pagination = & $this->get('Pagination'); $this->assignRef('servers', $servers); $this->assignRef('pagination', $pagination); parent::display($tpl); } } Δλ ζπλερεία θαιείηε ην default.php ην νπνίν θνξηώλεη από ην θάθειν όια ηα αξρεία κέζσ ηεο θιάζεο ηνπ joomla loadTemplate. Default.php <?php defined('_JEXEC') or die('Restricted access'); echo $this->loadTemplate('style'); echo $this->loadTemplate('toolbar'); echo $this->loadTemplate('form'); ?> 43 Ζ κπάξα κε ηα εηθνλίδηα (Admin Publish, Admin Unpublish,… Back to Menu) πινπνηείηαη από ην αξρείν default_toolbar.php. Οη επηθεθαιίδεο (#, θνπηάθη, Name, Admin Published,…ID) πινπνηνύληαη από ην default_header.php. Σα αληηθείκελα ηα νπνία ηπρώλ ππάξρνπλ (ζηελ παξαπάλσ εηθόλα δελ έρνπκε πξνζζέζεη) πινπνηνύληαη από ην default_body.php. Αμίδεη λα αλαθεξζνύκε ζην θνκκάηη θώδηθα ηνπ default_body.php εηο ην νπνίν δηαβάδνπκε ηελ κεηαβιεηή από ηε βάζε θαη αλαιόγσο εκθαλίδνπκε έλα εηθνλίδην γηα ελεξγνπνίεζε ή απελεξγνπνίεζε ηνπ αληηθεηκέλνπ. if ($server->admin_published) { $admin_published = '<a href="javascript:void(0);" onclick="return listItemTask(\'cb' . $i . '\',\'' . 'admin_unpublish' . '\')" title="' . JText::_('UNPUBLISH ITEM') . '"><img src="images/tick.png" border="0" alt="' . JText::_('PUBLISHED') . '" /></a>'; } else { $admin_published = '<a href="javascript:void(0);" onclick="return listItemTask(\'cb' . $i . '\',\'' . 'admin_publish' . '\')" title="' . JText::_('PUBLISH ITEM') . '"><img src="images/publish_x.png" border="0" alt="' . JText::_('UNPUBLISHED') . '" /></a>'; } Αλ ην αληηθείκελν πνπ εμεηάδνπκε είλαη ελεξγό ηόηε θηηάρλνπκε έλαλ ζύλδεζκν κε κηα εηθόλα ηελ νπνία κόιηο θάλνπκε θιηθ πάλσ ηεο, ην αληηθείκελν απελεξγνπνηείηαη. Σν αληίζεην γίλεηε ζηελ πεξίπησζε πνπ είλαη αλελεξγό. Σν ίδην γίλεηε θαη γηα ην πεδίν Unknown User, γηα ην νπνίν έρνπκε ηξεηο δπλαηέο θαηαζηάζεηο, (Do Nothing , Create user do not activate him, Create User Activate Him). ηαλ έρνπκε επηιεγκέλν ην Do Nothing ηόηε αλ έλαο ρξήζηεο είλαη άγλσζηνο ζην joomla (δελ ππάξρεη ζηε βάζε ηνπ) θαη πάεη λα ζπλδεζεί ρξεζηκνπνηώληαο ηελ εθαξκνγή καο ηόηε απηόο δελ θαηαρσξείηαη ζηε βάζε. Αλ έρνπκε επηιεγκέλν ην Create user do not activate him ηόηε ν ρξήζηεο θαηαρσξείηαη ζηε βάζε αιιά είλαη αλελεξγόο, ζηελ άιιε πεξίπησζε ν ρξήζηεο θαηαρσξείηαη ζηε βάζε θαη είλαη ελεξγόο κπνξεί δειαδή λα ρξεζηκνπνηήζεη ηελ επέθηαζε γηα είζνδν ζην frontend αιιά θαη ζην backend. Οη πεξηζζόηεξεο από απηέο ηηο ιεηηνπξγίεο παξέρνληαη θαη από ηελ κπάξα ιεηηνπξγηώλ. 44 Διασειπιστήρ Ενθεμάτων Διασείπισηρ (Components Manager) Γνκή view componentlogins πσο θαη ζηε δηεπαθή Γηαρεηξηζηήο Δμππεξεηεηώλ έηζη θη εδώ αθνινπζείηαη ε ίδηα δνκή, view.html.php, default.php (ίδηα δνκή ζα αθνινπζείηαη ζε όιεο ηηο δηεπαθέο). Απηό πνπ είλαη πνην ζεκαληηθό εδώ είλαη ην θνκκάηη ηνπ Enabled, κε ην νπνίν ελεξγνπνηνύκε – απελεξγνπνηνύκε ην αληηθείκελν, πνπ ζηελ πεξίπησζε καο είλαη έλα έλζεκα δηαρείξηζεο CAS login. 45 Διασειπιστήρ Πεπιοπισμών (Restrictions Manager) Γνκή view restrictedlogins H δηεπαθή δηαρεηξηζηήο πεξηνξηζκώλ: Απηό πνπ είλαη ζεκαληηθό εδώ, είλαη ην πεδίν IP εηο ην νπνίν κπνξνύκε λα δώζνπκε πξόζβαζε ή όρη ζηνπο ρξήζηεο αλάινγα κε ηελ IP ηνπο. ηελ δηεπαθή καο βιέπνπκε όηη ε IP 127.0.0.1 είλαη ελεξγνπνηεκέλε γηα ηνλ δηαρεηξηζηή θαη ηνλ απιό ρξήζηε θαζώο επίζεο θαη όιεο νη IP δηεπζύλζεηο. 46 Διασειπιστήρ Παπαμέτπων (Parameters) Ζ δνκή ηνπ view parameters είλαη ε ίδηα. Ζ κόλε δηαθνξά είλαη όηη δηαβάδνπκε ηελ δνκή ηεο θόξκαο από έλα αξρείν, default.params κε θώδηθα ζε κνξθή xml: <?xml version="1.0" encoding="utf-8"?> <config> <params> <param name="restrictions_enabled" type="radio" default="0" label="RESTRICTIONS ENABLED" description="SPECIFY IF THE RESTRICTIONS ARE ENABLED" > <option value="0">No</option> <option value="1">Yes</option> </param> <param name="external_enabled" type="radio" default="0" label="EXTERNAL CONNEXION ENABLED" description="SPECIFY IF THE EXTERNAL CONNEXION ARE ENABLED" > <option value="0">No</option> <option value="1">Yes</option> </param> <param name="multiple_enabled" type="radio" default="0" label="MULTIPLE CONNEXION ENABLED" description="SPECIFY IF THE MULTIPLE CONNEXION ARE ENABLED IN THE ADMINISTRATOR LOGIN FORM" > <option value="0">No</option> <option value="1">Yes</option> </param> </params> </config> Ζ δηεπαθή καο: ηελ πξώηε παξάκεηξν ελεξγνπνηνύκε ή απελεξγνπνηνύκε ηνπο πεξηνξηζκνύο, ζηελ δεύηεξε επηηξέπνπκε ή όρη ηελ εμσηεξηθή ζύλδεζε (νπζηαζηηθά ηελ θύξηα ιεηηνπξγία ηεο επέθηαζήο καο) θαη ζηελ ηξίηε παξάκεηξν ελεξγνπνηνύκε ή όρη ηελ δπλαηόηεηα εηζόδνπ ζην backend. Απηέο ήηαλ νη βαζηθέο δηεπάθεο ηεο επέθηαζεο καο. Παξαθάησ ζα δνύκε ηηο δεπηεξεύνληεο (επεμεξγαζία αληηθεηκέλνπ, πξόζζεζε αληηθεηκέλνπ, αιιαγή ηύπνπ…). 47 Διεπαυή ππόσθεσηρ νέος αντικειμένος – νέος εξςπηπετητή Μόιηο παηήζνπκε ην θνπκπί, New, ηεο κπάξαο εξγαιείσλ ζηελ δηεπαθή Γηαρεηξηζηήο Δμππεξεηεηώλ ηόηε κεηαθεξόκαζηε ζηελ δηεπαθή πνπ βιέπνπκε παξαθάησ: Δηο ηελ νπνία θαινύκαζηε λα επηιέμνπκε έλα ηύπν ζύλδεζεο. Δδώ έρνπκε ην CAS login. Κάλνπκε θιηθ πάλσ ζην εηθνλίδην θαη κεηαθεξόκαζηε ζηελ δηεπαθή: Δδώ πξέπεη λα εηζαγάγνπκε έλα όλνκα εμππεξεηεηή, λα θαζνξίζνπκε γηα πνην κέξνο (δηαρεηξηζηή, ρξήζηε) ζα είλαη εθηθηή ε ζύλδεζε, ηη ζα γίλεηε κε ηνλ άγλσζην ρξήζηε θαη πνηα ζα είλαη ε δηεύζπλζε νλόκαηνο ζπζηήκαηνο. Πξέπεη λα εηζάγνπκε ηελ δηεύζπλζε ηνπ CAS εμππεξεηεηή κε ηνλ νπνίν ζα θάλνπκε ηελ ηαπηνπνίεζε, ην directory ηνπ CAS θαη ζην Advanced πεδίν ηελ ζύξα εμππεξέηεζεο αιιά θαη ηελ έθδνζε ηνπ CAS εμππεξεηεηή. 48 Ζ επεμεξγαζία ελόο αληηθεηκέλνπ γίλεηε επηιέγνληαο έλα αληηθείκελν από ηελ δηεπαθή Γηαρεηξηζηήο Δμππεξεηεηώλ θαη παηώληαο ην θνπκπί Edit από ηελ εξγαιεηνζήθε. Ζ δηεπαθή είλαη ε ίδηα κε απηή ηεο πξόζζεζεο λένπ αληηθεηκέλνπ κε ηελ δηαθνξά όηη ηα πεδία είλαη ζπκπιεξσκέλα κε ηα εμ αξρήο δεισκέλα ζηνηρεία. Διεπαυή ππόσθεσηρ νέος αντικειμένος στον Διασειπιστή Πεπιοπισμών Καινύκαζηε λα εηζάγνπκε έλα όλνκα, κηα δηεύζπλζε IP, θαζώο επίζεο θαη λα επηιέμνπκε γηα πνηνλ (backend, frontend) ζα είλαη ελεξγνπνηεκέλνο ν πεξηνξηζκόο. Ζ επεμεξγαζία γίλεηε κε αλάινγε δηεπαθή. Καη εδώ ε δηεπαθή πινπνηείηαη από έλα αξρείν default.params ζε κνξθή xml. <?xml version="1.0" encoding="utf-8"?> <config> <params> <param name="name" type="text" size="30" default="" class="required validate-name textarea" label="NAME" description="ENTER A NAME" /> <param name="ip" type="text" size="30" default="" class="required validate-ip textarea" label="IP" description="ENTER AN IP" /> <param name="site_published" type="radio" default="0" label="SITE PUBLISHED" description="SPECIFY IF THE IP IS ENABLED FOR THE SITE" > <option value="0">No</option> <option value="1">Yes</option> </param> <param name="admin_published" type="radio" default="0" label="ADMIN PUBLISHED" description="SPECIFY IF THE IP IS ENABLED FOR THE ADMIN" > <option value="0">No</option> <option value="1">Yes</option> </param> </params> </config> 49 ν Κεθάιαην 6 : Authentication Manager ζηελ πξάμε 6.1. Γηεπαθέο Δθόζνλ έρνπκε ζπλδεζεί ζαλ δηαρεηξηζηέο ζην backend θαη εθόζνλ έρνπκε εγθαηαζηήζεη ηελ επέθηαζή καο, κπνξνύκε λα ηελ δηαρεηξηζηνύκε πνιύ εύθνια. Γηα λα κεηαθεξζνύκε ζηελ θεληξηθή δηεπαθή επηιέγνπκε από ην κελνύ components ην ππνκελνύ External Login Manager. Παηώληαο ην θνπκπί Servers manager κεηαθεξόκαζηε ζηελ δηεπαθή Γηαρεηξηζηήο εμππεξεηεηώλ, παηώληαο ην Components manager κεηαθεξόκαζηε ζηελ δηεπαθή δηαρεηξηζηήο ελζεκάησλ δηαρεηξηζεο, παηώληαο ζην Restrictions manager κεηαθεξόκαζηε ζηελ δηεπαθή Γηαρεηξηζηήο Πεξηνξηζκώλ, παηώληαο ην Parameters κεηαθεξόκαζηε ζηελ δηεπαθή Παξάκεηξνη, παηώληαο ην Update κεηαθεξόκαζηε ζηε ηζηνζειίδα http://jommlacode.org εηο ηελ νπνία έρνπκε αλαξηήζεη όηη έρεη λα θάλεη κε ηελ επέθηαζε καο, γηα λα δνύκε αλ ππάξρνπλ δηαζέζηκεο αλαβαζκίζεηο, παηώληαο ην Help εκθαλίδεηαη κηα ζειίδα ε νπνία καο δείρλεη πιεξνθνξίεο βνεζείαο ηεο επέθηαζεο καο. Κάηη ην νπνίν πξέπεη λα μαλαεηπσζεί είλαη όηη θαηά ηελ εγθαηάζηαζε ηνπ ελζέκαηνο com_caslogin πξνζζέηεηαη έλα αληηθείκελν ζηνλ Γηαρεηξηζηή ελζεκάησλ δηαρείξηζεο κε ηα ραξαθηεξίζηεθα ηνπ com_caslogin. 50 Ηδνύ: Από όηη βιέπνπκε απηό είλαη ελεξγνπνηεκέλν, πνπ ζεκαίλεη όηη, νπνηνπζδήπνηε εμππεξεηεηέο έρνπκε εηζάγεη ζηελ δηεπαθή Γηαρεηξηζηήο Δμππεξεηεηώλ, απηνί ζα είλαη δηαζέζηκνη. Απηόο ν δηαρεηξηζηήο ησλ ελζεκάησλ δηαρείξηζεο είλαη πνιύ ρξήζηκνο δηά ηνλ ιόγν ηνπ όηη κπνξώ κε κηαο λα απελεξγνπνηήζσ έλα αληηθείκελν θαη απηνκάησο λα γίλνπλ κε δηαζέζηκνη νη εμππεξεηεηέο δηά ζύλδεζε, παξόιν πνπ ζηελ δηεπαθή δηαρεηξηζηήο εμππεξεηεηώλ κπνξεί λα είλαη ελεξγνπνηεκέλνη!!!. Αο πεξάζνπκε ηώξα ζηνλ δηαρεηξηζηή εμππεξεηεηώλ γηα λα πξνζζέζνπκε έλα αληηθείκελν (ιέγνληαο αληηθείκελν ελλννύκε εμσηεξηθό εμππεξεηεηή γηα ζύλδεζε, από εδώ θαη πέξα ζα αλαθεξόκαζηε ζε απηό ζαλ εμππεξεηεηή). 51 6.1.1. Πξόζζεζε – επεμεξγαζία εμππεξεηεηή Δπηιέγνπκε από ηνπο ζπλδέζκνπο ην Server Manager. Βιέπνπκε όηη δελ ππάξρεη θάπνηνο εμππεξεηεηήο ζην ζύζηεκα. Αο πξνζζέζνπκε έλαλ. Παηάκε ινηπόλ ην θνπκπί New από ηελ εξγαιεηνζήθε. Δπηιέγνπκε ηη ηύπνπ ζα είλαη ν εμππεξεηεηήο ηνλ νπνίν ζα πξνζζέζνπκε, εδώ κπνξνύκε λα επηιέμνπκε κόλν έλαλ ηνλ CAS Login δηόηη απηό είλαη εγθαηεζηεκέλν (βιέπεηε παξαπάλσ εηο ηνλ δηαρεηξηζηή ελζεκάησλ δηαρείξηζε). Δπηιέγνπκε ινηπόλ ην CAS Login. 52 πσο κπνξείηε λα δηαθξίλεηε ζην πεδίν Details, έρνπκε εηζαγάγεη έλα όλνκα εμππεξεηεηή, έρνπκε επηιέμεη λα είλαη δηαζέζηκνο ζην backend αιιά θαη ζην frontend (Admin Published, Site Published), έρνπκε επηιέμεη ζην πεδίν Unknown User ην Create User, Activate Him θαη ην Default email host name ην αθήλνπκε όπσο έρεη. ην πεδίν Parameters Basic, ζην CAS Server Url έρνπκε εηζαγάγεη ηελ δηεύζπλζε ηνπ CAS εμππεξεηεηή θαη ζην CAS Server Directory έρνπκε εηζαγάγεη ην directory ηνπ. ην πεδίν Advanced αλ θάλνπκε θιηθ πάλσ κπνξνύκε λα εηζάγνπκε ηελ ζύξα εμππεξέηεζεο, εμ νξηζκνύ είλαη επηιεγκέλε ε 443, αιιά θαη λα επηιέμνπκε ηελ έθδνζε ηνπ εμππεξεηεηή. Σα ζηνηρεία πνπ έρνπκε εηζαγάγεη είλαη πξαγκαηηθά. Τπάξρεη έλαο CAS εμππεξεηεηήο ζην παλεπηζηήκην ηεο Γαιιίαο πνπ κε ηελ βνήζεηά ηνπ ζα πξαγκαηνπνηήζνπκε ηελ ζύλδεζε ζην frontend αιιά θαη ζην backend. Παηάκε ην θνπκπί από ηελ εξγαιεηνζήθε Save γηα λα απνζεθεύζνπκε ηνλ εμππεξεηεηή. Μόιηο ην θάλνπκε κεηαθεξόκαζηε ζηνλ δηαρεηξηζηή εμππεξεηεηώλ. 53 Βιέπνπκε όηη ην αληηθείκελν κε επηηπρία απνζεθεύηεθε. Μπνξνύκε αλ ζέινπκε λα ην επεμεξγαζηνύκε παηώληαο πάλσ ζην όλνκα ηνπ ή επηιέγνληάο ην θαη ζηε ζπλέρεηα παηώληαο ην θνπκπί ηεο εξγαιεηνζήθεο Edit. Αλ ζέινπκε λα απνζεθεύζνπκε ηηο αιιαγέο παηάκε ην θνπκπί Save αιιηώο ην Close γηα λα κεηαθεξζνύκε πίζσ ζηνλ δηαρεηξηζηή εμππεξεηεηώλ. Μαο παξέρεηαη ε δπλαηόηεηα λα αιιάμνπκε ηύπν εμππεξεηεηή παηώληαο ην θνπκπί Change Type. 54 Δδώ βέβαηα ππάξρεη κόλν έλαο ηύπνο όπσο έρνπκε αλαθέξεη παξαπάλσ, έηζη ή επηιέγνπκε ηνλ ηύπν ή παηάκε ην θνπκπί back. Έζησ όηη δελ θάλακε αιιαγέο θαη παηήζακε ην θνπκπί Close, ηόηε κεηαθεξόκαζηε ζηνλ δηαρεηξηζηή εμππεξεηεηώλ παίξλνληαο ην θαηάιιειν κήλπκα. Γεληθά γηα όπνηα ελέξγεηα εθηειέζνπκε παίξλνπκε ην αληίζηνηρν κήλπκα. Αο δνύκε ηώξα πνπ έρνπκε πξνζζέζεη έλαλ εμππεξεηεηή, πσο αιιάδεη θαηαξρήλ ην frontend. 55 6.1.2. Γνθηκή εηζόδνπ ρξήζηε ρξεζηκνπνηώληαο εμππεξεηεηή πσο κπνξνύκε λα δνύκε ζην External Login έρεη πξνζηεζεί έλα αληηθείκελν κε ην όλνκα πνπ είρακε δώζεη όηαλ πξνζζέζακε ηνλ εμππεξεηεηή. ηελ ζπγθεθξηκέλε πεξίπησζε ηνλ La Rochelle Cas Server. Αο πξνζπαζήζνπκε λα ζπλδεζνύκε ζηελ ηζηνζειίδα κε απηόλ παηώληαο ην θνπκπί Login. Μόιηο ην θάλνπκε εκθαλίδεηαη κία ηζηνζειίδα ηνπ CAS εμππεξεηεηή εηο ηελ νπνία πξέπεη λα εηζάγνπκε ηα ζηνηρεία καο γηα επαιήζεπζε. Μόιηο εηζαγάγσ ζσζηά ζηνηρεία ηόηε επηζηξέθσ ζηελ ηζηνζειίδα κνπ, ζην frontend. 56 Βιέπνπκε όκσο όηη δελ έρεη γίλεη ε ζύλδεζε θαη όηη έρνπκε έλα κήλπκα ζθάικαηνο. YOUR IP IS NOT REGISTER WITH CAS SERVER Πξάγκα ινγηθό, δηόηη ν CAS εμππεξεηεηήο επεηδή είλαη ξπζκηζκέλνο γηα ην Παλεπηζηήκην ηεο La Rochelle δελ γλσξίδεη εμσηεξηθέο δηεπζύλζεηο IP, πνπ ζεκαίλεη όηη δελ κπνξώ λα ζπλδεζώ κε απηόλ. πσο θαηαιαβαίλεηε είλαη ζέκα ηνπ εμππεξεηεηή. Ση ζα γηλόηαλ άκα όια ήηαλ κηα ραξά θαη ν εμππεξεηεηήο γλώξηδε ηελ IP κνπ; 57 πσο κπνξείηε λα δείηε έρσ ζπλδεζεί ζηε ηζηνζειίδα σο ibarouni (ην username πνπ κνπ επέζηξεςε ν CAS εμππεξεηεηήο). Θπκεζείηε είρα επηιέμεη ηνπο Unknown Users λα ηνπο απνζεθεύεη ζηε βάζε ηνπ ην joomla θαη λα ηνπο ελεξγνπνηεί, επνκέλσο αλ θνηηάμνπκε ηελ δηαρείξηζε ησλ ρξεζηώλ ηνπ joomla ζα ηδνύκε θαη έλαλ ρξήζηε ηνλ ibarouni. λησο. Γεκηνπξγήζεθε έλαο ρξήζηεο κε όλνκα: ibarouni απηό πνπ καο επέζηξεςε ν εμππεξεηεηήο, κε username: www.univ-lr.fr:443/cas@ibarouni (επηιέμακε εκείο λα είλαη απηήο ηεο κνξθήο δεδνκέλνπ όηη κπνξεί λα ππάξρεη έλαο ρξήζηεο κε ην ίδην username γηα δηαθνξεηηθό εμππεξεηεηή, έηζη ζην username πξνζδηνξίδσ θαη ηελ ‘ηαπηόηεηα’ ηνπ εμππεξεηεηή εθηόο ηνπ νλόκαηνο) όπνπ www.univ-lr.fr είλαη ε 58 δηεύζπλζε, 443 ζύξα εμππεξέηεζεο, /cas ην directory ηα νπνία ηα είρακε εηζαγάγεη θαηά ηελ δεκηνπξγία ηνπ αληηθεηκέλνπ εμππεξεηεηή, θαη @ibarouni ην ζύκβνιν @ καδί κε ην username πνπ καο επηζηξέθεη ν CAS εμππεξεηεηήο θαηά ηελ δηάξθεηα ηεο απζεληηθνπνίεζεο. Βιέπνπκε επίζεο όηη ηνλ έρνπκε εληάμεη ζην επίπεδν ρξήζεο Registered, απηό δηόηη ζέινπκε λα είλαη απιώο ρξήζηεο θαη όρη δηαρεηξηζηήο. Βιέπνπκε επίζεο όηη είλαη ελεξγόο (Enabled) επεηδή έηζη ην επηιέμακε (Create user, activate him), θαζώο επίζεο θαη όηη είλαη ζπλδεδεκέλνο απηή ηε ζηηγκή (Logged In). Καιά όια απηά, αιιά ηη γίλεηε κε ην θνκκάηη ηνπ δηαρεηξηζηή θαη απηό ηνπ backend; Μπνξώ ηώξα πνπ κε γλσξίδεη ην ζύζηεκα λα ζπλδεζώ σο δηαρεηξηζηήο; Μα θπζηθά όρη γηαηί έρνπκε νξίζεη εμ αξρήο θάζε θαηλνύξγηνο ρξήζηεο λα απνζεθεύεηαη ζην ζύζηεκα ζαλ απιό κέινο (Registered). Γηα ηνπ ιόγνπ ην αιεζέο αο απνζπλδεζνύκε από ην backend. 59 Αλ παηήζνπκε ην θνπκπί Login γηα λα ζπλδεζνύκε ζην backend ρξεζηκνπνηώληαο ηνλ La Rochelle Cas Server, όπσο θαη ζηελ πεξίπησζε ηνπ frontend έηζη θη εδώ ζα πξέπεη λα εηζαγάγνπκε ηα ζηνηρεία καο, βιέπνπκε ηελ εμήο εηθόλα: You do not have access to the administrator section of this site. Πνπ ζεκαίλεη όηη δελ έρσ πξόζβαζε ζηνλ πίλαθα δηαρείξηζεο ηνπ joomla. Γηα λα έρσ πξόζβαζε πξέπεη ν δηαρεηξηζηήο administrator λα αιιάμεη ην επίπεδν πξόζβαζεο ρξήζηε από ηνλ δηαρεηξηζηή ρξεζηώλ. ην πεδίν Unknown User είρακε επηιέμεη Create user, activate him. Ση ζα γίλεη αλ επηιέμνπκε Create user, not activate him; Μα θπζηθά λα απνζεθεύζεη ην com_caslogin ηνλ ρξήζηε ζηε βάζε ηνπ joomla, αιιά λα κελ ηνλ ζέζεη σο ελεξγό, ζπλεπώο δελ ζα κπνξώ λα ζπλδεζώ ζην ζύζηεκα. 60 Γηα λα κπνξέζνπκε λα ην δνύκε ζηελ πξάμε πξέπεη λα δηαγξάςνπκε ηνλ ππάξρσλ ρξήζηε ibarouni από ηε βάζε. Θα ην θάλνπκε απηό από ηελ δηαρείξηζε ρξεζηώλ ηνπ πίλαθα δηαρείξηζεο επηιέγνληαο ην ρξήζηε ibarouni θαη παηώληαο ην θνπκπί ηεο εξγαιεηνζήθεο Delete. Σόζν απιά. Γελ πξέπεη λα μεράζνπκε λα αιιάμνπκε ηελ ξύζκηζε ζε Create user, not activate him από ηνλ δηαρεηξηζηή εμππεξεηεηώλ, επηιέγνληαο ηνλ εμππεξεηεηή θαη παηώληαο ην θνπκπί Edit ηεο εξγαιεηνζήθεο. Κάλνπκε ηελ αιιαγή θαη παηάκε ην θνπκπί Save γηα απνζήθεπζε. Ή κπνξνύκε απιώο λα παηήζνπκε ην κηθξό θνπκπάθη ζηελ ζηήιε Unknown User, ζηνλ δηαρεηξηζηή εμππεξεηεηώλ, γηα γξήγνξε αιιαγή. Πάκε ινηπόλ ζην frontend, ζηε ζειίδα καο θαη παηάκε ην θνπκπί Login. Δηζαγάγνπκε ηα ζηνηρεία καο γηα ηνλ CAS εμππεξεηεηή θαη βιέπνπκε ηα εμήο: YOU HAVE NO PERMISION FOR LOGIN - ASK ADMINISTRATOR TO GIVE YOU ONE ΓΔΝ ΔΥΔΣΔ ΑΓΔΗΑ ΓΗΑ ΔΗΟΓΟ – ΕΖΣΖΣΔ ΑΠΟ ΣΟΝ ΓΗΑΥΔΗΡΗΣΖ ΝΑ Α ΓΩΔΗ 61 Αλ κεηαθεξζνύκε ζηνλ πίλαθα δηαρείξηζεο ζηε δηαρείξηζε ρξεζηώλ ηόηε βιέπνπκε λα έρεη δεκηνπξγεζεί έλαο ρξήζηεο ibarouni κε αθξηβώο ηα ίδηα ζηνηρεία όπσο θαη ζηελ πεξίπησζε ηνπ Create User, activate him κόλν πνπ δελ είλαη ελεξγόο (Enabled) θαη θπζηθά Logged In. Ηδνύ: αλ δηαρεηξηζηήο κπνξώ λα επεμεξγαζηώ ηνλ ρξήζηε ibarouni θαη λα ηνπ δώζσ δηθαηώκαηα δηαρεηξηζηή αιιά απηό δελ ζα καο απαζρνιήζεη, δηόηη δελ έρεη λα θάλεη κε ηελ επέθηαζε αιιά κε ηνλ δηαρεηξηζηή. Αλ ζέζσ ηελ επηινγή Unknown User σο do nothing ηόηε δελ δεκηνπξγείηαη ρξήζηεο θαη θπζηθά δελ κπνξεί λα ζπλδεζεί (ελλνείηαη απηό). 62 6.1.3. Απελεξγνπνίεζε αληηθεηκέλνπ ελζέκαηνο δηαρείξηζεο CAS Login Ση ζα ζπκβεί αλ από ηνλ Γηαρεηξηζηή ελζεκάησλ δηαρείξηζεο απελεξγνπνηήζσ ην CAS Login αληηθείκελν; Μα θπζηθά δελ ζα είλαη δηαζέζηκνη νη εμππεξεηεηέο ηύπνπ CAS Login. No server available 63 Καη ζην backend: No server available 64 6.1.4. ‘Παίδνληαο’ κε ηνπο πεξηνξηζκνύο Μέρξη ζηηγκήο δελ έρνπκε δεη ηη ζα ζπκβεί αλ ζέζνπκε ηνπο πεξηνξηζκνύο, ζηνλ δηαρεηξηζηή πεξηνξηζκώλ, έηζη ώζηε λα κελ επηηξέπεηαη ε είζνδνο ηνπ ρξήζηε ζην ζύζηεκα. Πάκε ζηνλ δηαρεηξηζηή πεξηνξηζκώλ θαη απελεξγνπνηνύκε, θάλνληαο θιηθ πάλσ ζηα εηθνλίδηα κε ην ηηθ ηεο ζηήιεο Site published, ηα αληηθείκελα Local access θαη Access to all όπσο βιέπνπκε ζηελ παξαπάλσ εηθόλα. Έηζη ηώξα έρνπκε απελεξγνπνηήζεη ηνλ πεξηνξηζκό πνπ ιέεη, δώζε πξόζβαζε ζε όινπο (Access to all) θαη ηνπηθή πξόζβαζε. Άξα ινγηθά δελ ζα έρνπκε πξόζβαζε. Δίλαη ην ίδην κε ην λα θηηάμσ έλαλ πεξηνξηζκό θαη λα δίλσ πξόζβαζε κόλν ζε κία ζπγθεθξηκέλε IP. 65 YOU CANNOT ACCESS LOGIN FORM, Your IP is Not Granded πσο ην πεξηκέλακε. ην ζπγθεθξηκέλν ζεκείν ίζσο αλαξσηεζείηε ηη ζα ζπκβεί αλ απελεξγνπνηήζσ ηνπο πεξηνξηζκνύο πξόζβαζεο γηα ην backend. Μα θπζηθά άκα δελ ππάξρεη άιινο ηξόπνο γηα είζνδν ζηνλ πίλαθα δηαρείξηζεο, ηόηε δελ ππάξρεη πεξίπησζε λα ζπλδεζεί θάπνηνο ζην ζύζηεκα νύηε θαλ ν δηαρεηξηζηήο. Γηα απηό ην ιόγν πξέπεη λα είλαη πνιύ πξνζεθηηθόο ν δηαρεηξηζηήο ζηνλ ηξόπν πνπ ρεηξίδεηαη ηελ επέθηαζε. Αο δνύκε έλα ηέηνην παξάδεηγκα πξνο απνθπγήλ. Απελεξγνπνηνύκε ηνπο πεξηνξηζκνύο πξόζβαζεο γηα ην backend. Καηόπηλ απνζπλδεόκαζηε από ηνλ πίλαθα δηαρείξηζεο, θάλνληαο θιηθ ζην ζύλδεζκν Logout, ν νπνίνο βξίζθεηαη πάλσ δεμηά. Παίξλνπκε ηελ παξαθάησ εηθόλα: 66 Πνπ ζεκαίλεη όηη ηε βάςακε!!! Γελ ππάξρεη ηξόπνο λα ζπλδεζνύκε ζην ζύζηεκα. Τέλορ 6ος Κευαλαίος. Δηο ην θεθάιαην 6ν είδακε πώο κπνξνύκε λα ρξεζηκνπνηήζνπκε ηελ επέθηαζή καο ζηελ πξάμε. Δηο ην επόκελν ππ αξηζκόλ 7, ζα κειεηήζνπκε θαη αλαιύζνπκε θάπνηεο ζεκαληηθέο ζπλαξηήζεηο, δίρσο ηηο νπνίεο ζα ήην αδύλαηε ε απζεληηθνπνίεζε ελόο ρξήζηε κε ηνπο εμππεξεηεηέο ηνπο νπνίνπο έρνπκε εηζαγάγεη ζηνλ Γηαρεηξηζηή Δμππεξεηεηώλ. 67 ν Κεθάιαην 7 : Μειέηε - αλάιπζε ζεκαληηθώλ ζπλαξηήζεωλ ηεο επέθηαζεο generateServerURL(); Ζ παξαπάλσ ζπλάξηεζε δεκηνπξγεί ηελ δηεύζπλζε εηο ηελ νπνία ζα ζπλδεζνύκε γηα ηελ απζεληηθνπνίεζε. Σηο παξακέηξνπο ηηο παίξλεη από ηελ ζπλάξηεζε getParams() ε νπνία βξίζθεηαη ζην έλζεκα δηαρείξηζεο com_externallogin ζην αξρείν helper.php. Γηαβάδεη από ηνλ πίλαθα jos_externallogin_servers ηα δεδνκέλα ηεο πιεηάδαο ($sid) κε ηεο νπνίαο ηηο παξακέηξνπο ζέινπκε λα θαηαζθεπάζνπκε ην url, θάλνληαο έλα sql query ζηε βάζε. 68 Authenticate(); Με παξακέηξνπο ηα $credentials, $options, &$response, $sid, $service. Σα $credentials, $options ηα ρξεηάδεηαη ην joomla γηα ηελ απζεληηθνπνίεζε, κε ηελ κεηαβιεηή name ζην &$response ( $response->name = $cas_user; ) επηζηξέθνπκε ην username από ηνλ CAS εμππεξεηεηή, ηα $id θαη $service ηα ρξεηαδόκαζηε επεηδή θαινύκε κηα ζπλάξηεζε ηελ generateValidateURL() ε νπνία θαη ηα ρξεηάδεηαη σο παξακέηξνπο Ζ ζπλάξηεζε generateValidateURL() όπσο αλαθέξακε δέρεηαη θάπνηα νξίζκαηα θαη καο θηηάρλεη ην θαηάιιειν URL γηα ηελ ζύλδεζε κε ηνλ CAS εμππεξεηεηή. Ηδνύ: Πιεξνθνξίεο γηα ην πώο ζα θαηαζθεπάζνπκε ηνλ ζύλδεζκν ζα βξείηε ζηε ζειίδα http://www.jasig.org/cas/protocol όπνπ θαη πεξηγξάθεηαη ην πξσηόθνιιν. Μόιηο θαηαζθεπάζνπκε θαη ελ ζπλερεία πάξνπκε ηνλ ζύλδεζκν, ηόηε δηαβάδνπκε ηα δεδνκέλα πνπ καο επηζηξέθεη ν ζύλδεζκνο κε ηελ PHP ζπλάξηεζε file_get_contents. Καηόπηλ αλ δελ καο επηζηξέςεη ηίπνηα ν CAS εμππεξεηεηήο ακέζσο κεηά ηελ ζσζηή απζεληηθνπνίεζε ηνπ ρξήζηε κε ηνλ εμππεξεηεηή ηόηε ζεκαίλεη όηη ε δηεύζπλζε IP ηνπ ρξήζηε δελ είλαη θαηαρσξεκέλε ζηνλ εμππεξεηεηή θαη επνκέλσο δελ κπνξνύκε λα δώζνπκε πξόζβαζε. Ηδνύ: 69 ηε ζπλέρεηα εθόζνλ ν εμππεξεηεηήο κνπ επέζηξεςε έλα xml αξρείν πξέπεη λα ην δηαβάζσ θαη ν θαιύηεξνο ηξόπνο είλαη λα ην κεηαηξέςσ ζε αληηθείκελν. Ηδνύ: Ζ κεηαηξνπή γίλεηε κε ηελ ζπλάξηεζε 70 Γελ καο ελδηαθέξεη ε κειέηε ηεο ζπλάξηεζεο, δηόηη έρεη λα θάλεη κε object, elements, πίλαθεο θαη γεληθά πεξίπινθεο δηαδηθαζίεο δηα ηηο νπνίεο ζα πξέπεη λα αθηεξσζνύλ πνιιέο ζειίδεο γηα ηελ εμήγεζή ηνπο. ηε ζπλέρεηα δηαβάδσ ην αληηθείκελν ειέγρνληαο αλ όλησο είλαη αληηθείκελν θαη αλ βξσ ηα string «cas:serviceResponse», «cas:authenticationSuccess» θαη «cas:user», ηόηε ζεκαίλεη όηη έγηλε ζσζηά ε δηαδηθαζία θαη ν ρξήζηεο απζεληηθνπνηήζεθε κε επηηπρία από ηνλ εμππεξεηεηή. πλεπώο από ην πεξηερόκελν ηνπ «cas:user» παίξλσ ην username κε ην νπνίν ζπλδέζεθε ν ρξήζηεο θαη ην απνζεθεύσ ζε κηα PHP κεηαβιεηή ($cas_user) γηα πεξαηηέξσ ρξήζε ηνπ. Μεηά ειέγρσ γηα ζηγνπξηά όηη ε κεηαβιεηή δελ είλαη άδεηα, εηδάιισο επηζηξέθσ ηελ κεηαβιεηή. Ηδνύ: Με ην πνπ θάλσ response ηελ κεηαβιεηή κε ην όλνκα ρξήζηε ηόηε ην joomla κε δηθνύο ηνπ κεραληζκνύο κε ζπλδέεη ζην ζύζηεκα. 71 Μηα άιιε ζεκαληηθή ζπλάξηεζε είλαη ε onAuthenticate() ε νπνία θαιεί ηηο πξνεγνύκελεο θη είλαη απηή πνπ αλαιόγσο ηελ επηινγή Unkonwn User καο θαηεπζύλεη. Αο ηελ κειεηήζνπκε. Σν πξώην πξάγκα πνπ θάλσ είλαη λα δσ αλ ην έλζεκα δηαρείξηζεο com_externallogin είλαη ελεξγνπνηεκέλν. Δθόζνλ είλαη ζπκπεξηιακβάλσ ην αξρείν ηνπ ην helper.php ην νπνίν πεξηέρεη ζπλαξηήζεηο (κεξηθέο ηηο πεξηγξάςακε παξαπάλσ). Καηόπηλ δηαβάδσ ηνλ εμππεξεηεηή κέζσ ηεο getServer() ηνπ helper.php αξρείνπ πνπ κόιηο ζπκπεξηιάβακε. ηε ζπλέρεηα αλ ππάξρεη server, ηόηε δηαβάδσ από ην ελζεκα δηαρείξηζεο com_caslogin (κπνξεί λα δηαθέξεη ζηελ πεξίπησζε πνπ έρνπκε πξνζζέζεη θη άιια ηέηνηα ελζέκαηα δηαρείξηζεο). Μεηά θηηάρλσ ηελ θιάζε CASLoginHelper πνπ substr($server->option, 4) ην πεξηερόκελν από ην πεδίν option ηνπ πίλαθα jos_externallogin_servers ην νπνίν ην δηαβάζακε κε ηελ ζπλάξηεζε &getServer πνπ θαιέζακε παξαπάλσ. Δλ ζπλερεία θηηάρλνπκε αληηθείκελν γηα λα κπνξέζσ λα θαιέζσ ηελ authenticate πνπ πεξηγξάςακε παξαπάλσ. 72 ηε ζπλέρεηα θαηαζθεπάδσ κηα κεηαβιεηή κε ην username πνπ κνπ επέζηξεςε ε authenticate θαη ην πξόζεκα @, ζέησ σο θσδηθό ην «externallogin» (αλ θαη ν θσδηθόο δελ ζα ρξεηαζηεί από ηνλ ρξήζηε, απιά ηνλ εηζάγνπκε γηαηί ην joomla ζέιεη λα ππάξρεη έλαο) θαη κεηά ην κόλν πνπ κέλεη είλαη λα θάλσ έλα slq query λα δσ αλ ν ρξήζηεο ππάξρεη είδε ζηε βάζε ζηνλ πίλαθα jos_users. Αλ ν ρξήζηεο ππάξρεη ηόηε ηνπ δίλσ πξόζβαζε JAUTHENTICATE_STATUS_SUCCESS Αλ δελ ππάξρεη πξέπεη λα απνθαζίζσ ηη ζα ηνλ θάλσ. Απηό ζα γίλεη εμεηάδνληαο ηελ κεηαβιεηή Unknown User 73 Αλ ε κεηαβιεηή unknown_user ηνπ πίλαθα jos_externallogin_servers είλαη ίζε κε ηελ ηηκή 2 ηόηε ζεκαίλεη όηη πξέπεη λα δεκηνπξγήζνπκε ηνλ ρξήζηε θαη λα ηνλ ελεξγνπνηήζνπκε. Γεκηνπξγνύκε ην ρξήζηε θαιώληαο ηελ ζπλάξηεζε createUser() ε νπνία βξίζθεηαη ζην helper.php αξρείν ηνπ ελζέκαηνο δηαρείξηζεο com_externallogin. ηε ζπλέρεηα ηνπ δίδσ πξόζβαζε. JAUTHENTICATE_STATUS_SUCCESS Δκθαλίδνληαο ην παξαθάησ κήλπκα User has been created, and enabled Αλ ε ηηκή ηνπ unknown_user είλαη ίζε κε 1, ηόηε δεκηνπξγώ ην ρξήζηε αιιά δελ ηνπ δίδσ πξόζβαζε θαη ηνλ θαηεπζύλσ ζηελ αξρηθή ζειίδα index.php εκθαλίδνληαο ην παξαθάησ κήλπκα YOU HAVE NO PERMISION FOR LOGIN - ASK ADMINISTRATOR TO GIVE YOU ONE Γηα λα κπινθάξσ ηνλ ρξήζηε ην θάλσ κέζσ ηεο createUser ζέηνληαο ηελ ηξίηε παξάκεηξν ίζε κε true Σέινο αλ ε ηηκή ηνπ unknown_user είλαη ίζε κε 0 (πνπ ζεκαίλεη κελ θάλεηο ηίπνηα), ηόηε ηνλ θαηεπζύλσ ζηελ αξρηθή ζειίδα εκθαλίδνληαο ην παξαθάησ κήλπκα. YOU ARE NOT ALLOWED TO LOGIN - ADMINISTRATOR RULES 74 Ζ ζπλάξηεζε onAuthenticate() νινθιεξσκέλε. Τέλορ 7ος Κευαλαίος. Δηο ην θεθάιαην 7ν κειεηήζακε θαη αλαιύζακε εηο βάζνο ηηο ζπλαξηήζεηο νη νπνίεο ρξεηάδνληαη θπξίσο γηα ηελ απζεληηθνπνηεζε ελόο ρξήζηε. 75 πκπεξάζκαηα - Δπίινγνο Ζ επέθηαζε Authentication Manager, όπσο είδακε κπνξεί λα θαλεί ηδηαηηέξσο ρξήζηκε γηα θάπνηνλ πνπ δελ ζέιεη λα ρξεζηκνπνηήζεη ηελ θιαζζηθή κέζνδν εγγξαθήο – εηζόδνπ ρξήζηε ζηελ joomla ηζηνζειίδα. Σν κνλαδηθό κεηνλέθηεκα πνπ ζα κπνξνύζακε λα πνύκε όηη έρεη, είλαη όηη απαηηεί κηα άιθα εμνηθείσζε θπξίσο κε ηελ ρξήζε ησλ δηεπαθώλ εηζαγσγήο εμππεξεηεηώλ θαη πεξηνξηζκώλ, αιιά απηό θπζηθά έρεη λα θάλεη κε ηνλ δηαρεηξηζηή, πεξηζζόηεξν δε κε ηηο ηθαλόηεηέο ηνπ ζηελ δηαρείξηζε ελζεκάησλ δηαρείξηζεο θαη γεληθά επεθηάζεσλ. Θα πξέπεη λα αλαθέξνπκε όηη ε αλάπηπμε ηεο επέθηαζεο ζπλερίδεηαη. Καηά ηελ δηάξθεηα ζπγγξαθήο ηεο πηπρηαθήο ην Authentication Manager βξίζθεηαη ζηελ έθδνζε 1.0.4. ηελ ηζηνζειίδα ηνπ project http://joomlacode.org/gf/project/auth_manager/ κπνξείηε λα παξαθνινπζήζεηε ηελ εμέιημή ηνπ, λα αλαθέξεηαη ηπρώλ πξνβιήκαηα πνπ ίζσο ζπλαληήζεηε θαηά ηελ δηάξθεηα ρξήζεο ηεο επέθηαζεο θαη θπζηθά λα ζπκκεηέρεηε ζηελ αλάπηπμή ηεο. ην ζεκείν απηό, ηειεηώλνληαο ηελ ζπγγξαθή ηεο πηπρηαθήο, ζα ήζεια λα επραξηζηήζσ ην Ανώηαηο Σεσνολογικό Δκπαιδεςηικό Ίδπςμα Κπήηηρ θαη πξνζσπηθά ηνλ θύξην Παπαδοςπάκη Γεώπγιο θαζεγεηή ηνπ ηκήκαηνο θαη εηζεγεηή ηεο πηπρηαθήο, νη νπνίνη κνπ έδσζαλ ηελ δπλαηόηεηα, ηα εθόδηα θαη όξεμε γηα δνπιεηά. Γελ πξέπεη λα μεράζσ λα επραξηζηήζσ θαη ηνλ θαζεγεηή Christophe Demko (θαζεγεηή ηνπ παλεπηζηεκίνπ La Rochelle ηεο Γαιιίαο) ρσξίο ηελ βνήζεηα, ππνκνλή θαη θαηαλόεζε ηνπ νπνίνπ, δελ ζα γηλόηαλ ε όιε απηή δνπιεηά. Δπίζεο ζα ήζεια λα επραξηζηώ όινπο ηνπο ζπκθνηηεηέο θαη θίινπο κνπ γηα ηελ ζπλερή ππνζηήξημε θαη θαηαλόεζε πνπ κνπ παξείραλ, θαζώο επίζεο θαη ηελ νηθνγέλεηα κνπ, δηά ηηο αμίεο θαη ηα ηδαληθά πνπ κε δίδαμαλ. Αἰὲλ ἀξηζηεύεηλ θαὶ ὑπείξνρνλ ἔκκελαη ἄιισλ, κεδὲ γέλνο παηέξσλ αἰζρπλέκελ. 76 Βηβιηνγξαθία-Πεγέο Βηβιηνγξαθία: Μάζεηε ην Joomla 1.5 εύθνια θαη γξήγνξα, Μαλώιεο Μαξθαηζέιαο, εθδόζεηο smartdesign Mastering Joomla! 1.5. Extension and Framework Development: The Professional Guide to Programming Joomla!, James Kennard Learning Joomla! Extension Development, Joseph LeBlanc Πεγέο: http://www.php.net/ http://www.w3schools.com/ http://joomla.org/ http://extensions.joomla.org/ http://joomlacode.org/ 77