summaryrefslogtreecommitdiff
path: root/demos/blog-tutorial/protected/pages/Day3/id/Auth.page
diff options
context:
space:
mode:
Diffstat (limited to 'demos/blog-tutorial/protected/pages/Day3/id/Auth.page')
-rw-r--r--demos/blog-tutorial/protected/pages/Day3/id/Auth.page102
1 files changed, 102 insertions, 0 deletions
diff --git a/demos/blog-tutorial/protected/pages/Day3/id/Auth.page b/demos/blog-tutorial/protected/pages/Day3/id/Auth.page
new file mode 100644
index 00000000..c4728cdf
--- /dev/null
+++ b/demos/blog-tutorial/protected/pages/Day3/id/Auth.page
@@ -0,0 +1,102 @@
+<com:TContent ID="Main">
+
+<h1>Otentikasi dan Otorisasi</h1>
+
+<p>
+Sebelum kita siap mengimplementasikan halaman pengguna, kita perlu melakukan beberapa pekerjaan guna menghidupkan <a href="http://www.pradosoft.com/demos/quickstart/index.php?page=Advanced.Auth">otentikasi dan otorisasi</a>.
+</p>
+
+<p>
+Kita menambah dua modul ke konfigurasi aplikasi seperti berikut:
+</p>
+
+<com:TTextHighlighter CssClass="source" Language="xml">
+<modules>
+ ...TDataSourceConfig and TActiveRecordConfig modules...
+
+ <module id="auth"
+ class="System.Security.TAuthManager"
+ UserManager="users"
+ LoginPage="users.LoginUser" />
+
+ <module id="users"
+ class="System.Security.TDbUserManager"
+ UserClass="Application.BlogUser" />
+</modules>
+</com:TTextHighlighter>
+
+<p>
+Modul <a href="http://www.pradosoft.com/docs/classdoc/TAuthManager">TAuthManager</a> mengatur seluruh alur kerja otentikasi dan otorisasi. Ia menggunakan modul <tt>users</tt> sebagai manajer penggunanya (lihat di bawah). Dengan menetapkan properti <tt>LoginPage</tt>, kita menginformasikan manajer otentikasi untuk mengalihkan browser pengguna ke halaman <tt>LoginUser</tt> saat otorisasi gagal. Kami akan menjelaskan bagaimana untuk membuat <tt>LoginUser</tt> dalam subbagian berikutnya.
+</p>
+
+<p>
+Modul <tt>user</tt> adalah kelas <a href="http://www.pradosoft.com/docs/classdoc/TDbUserManager">TDbUserManager</a> yang bertanggung jawab untuk memverifikasi keabsahan pengguna dan memelihara data dasar dalam sesi PHP. Properti <tt>UserClass</tt> diinisialisasi sebagai <tt>Application.BlogUser</tt>, yang menunjukan bahwa manajer pengguna akan melihar kelas <tt>BlogUser</tt> di bawah direktori <tt>protected</tt> (ingat alias <tt>Application</tt> merujuk ke direktori <tt>protected</tt>) dan menggunakannya untuk memelihara data sesi pengguna.
+</p>
+
+<p>
+Seperti yang akan kita lihat dalam bagian nanti, dalam kontrol dan halaman, kita dapat menggunakan <tt>$this->User</tt> untuk memperoleh obyek <tt>BlogUser</tt> yang berisi informasi pengguna yang saat ini mengakses siistem.
+</p>
+
+<p>
+Di bawah ini adalah rincian implementasi dari <tt>BlogUser</tt>. Perhatikan, <a href="http://www.pradosoft.com/demos/quickstart/index.php?page=Database.ActiveRecord">Rekaman Aktif</a> digunakan untuk melakukan query DB. Sebagai contoh, kita menggunakan <tt>UserRecord::finder()->findByPk($username)</tt> untuk mencari kunci primer yang ditetapkan oleh <tt>$username</tt> dalam tabel <tt>users</tt>.
+</p>
+
+<com:TTextHighlighter CssClass="source" Language="php">
+// Sertakan file TDbUserManager.php yang mendefinisikan TDbUser
+Prado::using('System.Security.TDbUserManager');
+
+/**
+ * BlogUser Class.
+ * BlogUser mewakili data pengguna yang perlu dijaga dalam sesi.
+ * Implementasi standar memelihara informasi aturan dan pengguna.
+ */
+class BlogUser extends TDbUser
+{
+ /**
+ * Membuat obyek BlogUser berdasarkan username yang ditetapkan.
+ * Metode ini diperlukan oleh TDbUser. Ia memeriksa database
+ * untuk melihat apakah username yang ditetapkan ada di sana. Jika ada,
+ * obyek BlogUser dibuat dan diinisialisasi.
+ * @param string username yang ditetapkan
+ * @return BlogUser obyek pengguna, null jika username tidak benar.
+ */
+ public function createUser($username)
+ {
+ // gunakan Rekaman Aktif UserRecord untuk mencari username yang ditetapkan
+ $userRecord=UserRecord::finder()->findByPk($username);
+ if($userRecord instanceof UserRecord) // jika ditemukan
+ {
+ $user=new BlogUser($this->Manager);
+ $user->Name=$username; // setel nama pengguna
+ $user->Roles=($userRecord->role==1?'admin':'user'); // setel aturan
+ $user->IsGuest=false; // pengguna bukan seorang tamu
+ return $user;
+ }
+ else
+ return null;
+ }
+
+ /**
+ * Memeriksa apakah (username, password) yang ditetapkan sudah benar.
+ * Metode ini diperlukan oleh TDbUser.
+ * @param string username
+ * @param string password
+ * @return boolean apakah username dan password sudah benar.
+ */
+ public function validateUser($username,$password)
+ {
+ // pakai Rekaman Aktif UserRecord untuk mencari pasangan (username, password).
+ return UserRecord::finder()->findBy_username_AND_password($username,$password)!==null;
+ }
+
+ /**
+ * @return boolean apakah pengguna ini adalah seorang administrator.
+ */
+ public function getIsAdmin()
+ {
+ return $this->isInRole('admin');
+ }
+}
+</com:TTextHighlighter>
+
+</com:TContent> \ No newline at end of file