ANALISIS DAN PERANCANGAN SISTEM
3.4 Perancangan Sistem
3.4.5 Perancangan Tampilan
3.4.5.5 Rancangan Halaman Reservas
Halaman ini bertujuan agar pengunjung dapat melakukan pemesanan tempat untuk suatu acara tertentu, dan di hari tertentu. Adapun ilustrasi halaman reservasi dapat dilihat seperti gambar 3.13 di bawah ini :
Gambar 3.13 Rancangan Tampilan Halaman Reservasi
1
2
3 4
5
Keterangan :
1. Canvas yang memuat logo dari aplikasi web dengan link - link halaman 2. Canvas yang memuat dari slogan web
3. Image dan keterangan dari hidangan spesial 4. List daftar harga menu
5. Form Reservasi untuk melakukan pemesanan tempat
6. Bagian footer berisi tentang hak cipta dan tahun aplikasi dilaunchingkan
3.4.6 Pseudocode
Pseudocode adalah deskripsi dari algoritma program komputer yang menggunakan struktur sederhana dari beberapa bahasa pemrograman, tetapi bahasa tersebut hanya ditujukan agar dapat dipahami manusia. Tujuan penggunaan utama dari pseudocode adalah untuk memudahkan manusia dalam memahami prinsip-prinsip dari suatu algoritma ataupun metode. Dari aplikasi sistem yang dibangun, pseudocode mengenai teknologi otentikasi OAuth 2 akan di jabarkan seperti pada tabel 3.8 di bawah ini.
Tabel 3.8 Kode Program Untuk Membuat Kode OAuth 2
No Kode 1 define("PDO_DSN", "mysql:dbname=heaven- oauth;host=localhost"); define("PDO_USER", "root"); define("PDO_PASS", "root"); 2 include "oauth.php";
3 class PDOOAuth2 extends OAuth2 { private $db;
public function __construct() { parent::__construct(); try {
$this->db = new PDO(PDO_DSN, PDO_USER, PDO_PASS);
} catch (PDOException $e) {
die('Connection failed: ' . $e- >getMessage()); } } function __destruct() { $this->db = null; }
private function handle_exception($e) {
echo "Database error: " . $e->getMessage(); exit;
}
4 public function add_client($client_id, $client_secret, $redirect_uri) {
try {
$sql = "insert into clients (client_id, client_secret, redirect_uri) values (:client_id, :client_secret, :redirect_uri)"; $stmt = $this->db->prepare($sql); $stmt->bindParam(":client_id", $client_id, PDO::PARAM_STR); $stmt->bindParam(":client_secret", $client_secret, PDO::PARAM_STR); $stmt->bindParam(":redirect_uri", $redirect_uri, PDO::PARAM_STR); $stmt->execute();
} catch (PDOException $e) { $this->handle_exception($e); }
}
5 protected function auth_client_credentials($client_id, $client_secret = null) {
try {
$sql = "select client_secret from clients where client_id = :client_id";
$stmt = $this->db->prepare($sql); $stmt->bindParam(":client_id", $client_id, PDO::PARAM_STR); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); if ($client_secret === null)
return $result !== false; return $result["client_secret"] == $client_secret;
} catch (PDOException $e) { $this->handle_exception($e); }
}
6 protected function get_redirect_uri($client_id) { try {
$sql = "select redirect_uri from clients where client_id = :client_id";
$stmt = $this->db->prepare($sql); $stmt->bindParam(":client_id", $client_id, PDO::PARAM_STR); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); if ($result === false) return false;
return isset($result["redirect_uri"]) && $result["redirect_uri"] ? $result["redirect_uri"] : null;
} catch (PDOException $e) { $this->handle_exception($e); }
}
7 protected function get_access_token($oauth_token) { try {
$sql = "select client_id, expires, scope from tokens where oauth_token = :oauth_token";
$stmt = $this->db->prepare($sql); $stmt->bindParam(":oauth_token", $oauth_token, PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetch(PDO::FETCH_ASSOC); return $result !== false ? $result : null; } catch (PDOException $e) {
$this->handle_exception($e); }
}
8 protected function store_access_token($oauth_token, $client_id, $expires, $scope = null) {
try {
$sql = "insert into tokens (oauth_token, client_id, expires, scope) values (:oauth_token, :client_id, :expires, :scope)";
$stmt = $this->db->prepare($sql); $stmt->bindParam(":oauth_token", $oauth_token, PDO::PARAM_STR);
$stmt->bindParam(":client_id", $client_id, PDO::PARAM_STR); $stmt->bindParam(":expires", $expires, PDO::PARAM_INT); $stmt->bindParam(":scope", $scope, PDO::PARAM_STR); $stmt->execute();
} catch (PDOException $e) { $this->handle_exception($e); }
}
9 protected function get_supported_grant_types() { return array(AUTH_CODE_GRANT_TYPE); }
protected function get_stored_auth_code($code) { try {
$sql = "select code, client_id,
redirect_uri, expires, scope from auth_codes where code = :code"; $stmt = $this->db->prepare($sql); $stmt->bindParam(":code", $code, PDO::PARAM_STR); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); return $result !== false ? $result : null; } catch (PDOException $e) {
$this->handle_exception($e); }
}
10 protected function store_auth_code($code, $client_id, $redirect_uri, $expires, $scope) {
try {
$sql = "insert into auth_codes (code,
client_id, redirect_uri, expires, scope) values (:code, :client_id, :redirect_uri, :expires, :scope)";
$stmt = $this->db->prepare($sql); $stmt->bindParam(":code", $code, PDO::PARAM_STR); $stmt->bindParam(":client_id", $client_id, PDO::PARAM_STR); $stmt->bindParam(":redirect_uri", $redirect_uri, PDO::PARAM_STR); $stmt->bindParam(":expires", $expires, PDO::PARAM_INT); $stmt->bindParam(":scope", $scope,
PDO::PARAM_STR);
$stmt->execute();
} catch (PDOException $e) { $this->handle_exception($e); }
} }
Keterangan :
1. Menetapkan koneksi PDO (PHP Data Object) ke database MySQL. 2. Menyertakan dan memanggil fungsi file yang berada pada oauth.php. 3. Melakukan pencocokan koneksi PDO dengan database, jika tidak sesuai
akan mendapatkan pesan error.
4. Penambahan data client ke dalam tabel clients yang terdiri atas kolom client id, client secret, dan redirect uri.
5. Mengembalikan nilai array berdasarkan kolom tabel untuk ditampilkan sesuai dengan pengaturan pada penseleksian.
6. Menampilkan redirect uri yang berasal dari tabel clients, pengaturan berdasarkan kolom client_id.
7. Menampilkan data client id, expires, dan scope yang berasal dari tabel oauth_token berdasarkan kolom tabel tokens.
8. Melakukan penyisipan data pada tabel token yang terdiri atas kolom oauth_token, client_id, expires, scope.
9. Menampilkan code, client_id, redirect_uri, expires, scope yang berasal dari basis data auth_codes berdasarkan code.
BAB 4
IMPLEMENTASI DAN PENGUJIAN