diff --git a/README.md b/README.md index 5614db31c485058c8277b93c72a82d02c6d04a21..c20db333d5318677ef4fdd8e52fc8856e5bf9d80 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,35 @@ -## Panduan Pengerjaan -Berikut adalah hal yang harus diperhatikan untuk pengumpulan tugas ini: -1. Buatlah grup pada Gitlab dengan format "IF3110-2023-01-XX", dengan XX adalah nomor kelompok (untuk K1 dan K2) atau kode kelompok (untuk K3). -2. Tambahkan anggota tim pada grup anda. -3. **Fork** pada repository ini dengan organisasi yang telah dibuat. -4. Ubah hak akses repository hasil Fork anda menjadi **private**. -5. Hal-hal yang harus diperhatikan. - * Silakan commit pada repository anda (hasil fork) - * Lakukan beberapa commit dengan pesan yang bermakna, contoh: “add register formâ€, “fix logout bugâ€, jangan seperti “finalâ€, “benerin dikitâ€, “fix bugâ€. - * Disarankan untuk tidak melakukan commit dengan perubahan yang besar karena akan mempengaruhi penilaian (contoh: hanya melakukan satu commit kemudian dikumpulkan). - * Commit dari setiap anggota tim akan mempengaruhi penilaian. - * Jadi, setiap anggota tim harus melakukan commit yang berpengaruh terhadap proses pembuatan aplikasi. - * Sebagai panduan bisa mengikuti [semantic commit](https://gist.github.com/joshbuchea/6f47e86d2510bce28f8e7f42ae84c716). -6. Buatlah file README yang berisi: - * Deskripsi aplikasi web - * Daftar requirement - * Cara instalasi - * Cara menjalankan server - * Screenshot tampilan aplikasi (tidak perlu semua kasus, minimal 1 per halaman), dan - * Penjelasan mengenai pembagian tugas masing-masing anggota (lihat formatnya pada bagian pembagian tugas). +## Tugas Besar 1 IF3110 Pengembangan Aplikasi Berbasis Web + +### Deskripsi Aplikasi Web + +Aplikasi web ini merupakan aplikasi web yang digunakan untuk memudahkan pengguna dalam melakukan sesuatu. Selain itu beberapa aplikasi web juga dapat memberikan berbagai informasi. Web yang kami buat adalah web sosial media yang berisi postingan yang dapat berupa teks, video, gambar, ataupun audio. Dalam web ini pengguna dapat melakukan berbagai hal seperti membuat postingan, menghapus postingan, mengedit postingan, dan lain-lain. Selain itu pengguna juga dapat melihat postingan dari pengguna lain. + +### Daftar Requirement + +1. Pastikan sudah menginstall docker +2. Jika memungkinkan pastikan sudah menginstall WSL + +### Cara Instalasi + +1. Clone repository ini +2. Buka terminal dan arahkan ke folder repository yang telah di clone +3. Jika anda memiliki WSL, pertama anda harus menjalankan "bash scripts/build-image.sh" untuk membangun image docker +4. Jika anda tidak memiliki WSL, anda dapat menjalankan "docker build -t tubes-1:latest ." untuk membangun image docker + +### Cara Menjalankan Server + +1. Jalankan "docker compose up" untuk menjalankan aplikasi tunggu container selesai dibangun +2. Setelah container selesai dibangun, buka browser dan akses "localhost:8008" + +### Screenshot Tampilan Aplikasi + + +### Pembagian Tugas + +| NIM | Nama | Tugas yang dikerjakan | +| ----------- | ----------- | ----------- | +| 13521098 | Fazel Ginanda | Home dan Post (Server-Client Side) | +| 13521138 | Johann Christian Kandani | Profile, Profile Management (Server-Client Side), Base Classes, Config DB, Setup Docker | +| 13521159 | Sulthan Dzaky Alfaro | Login, Registrasi, dan Admin (Server-Client Side) | + + diff --git a/src/app/login/checkloginreg.php b/src/app/login/checkloginreg.php deleted file mode 100644 index 8bb0f8752bc8ed6d115946fc619f60539bcf3377..0000000000000000000000000000000000000000 --- a/src/app/login/checkloginreg.php +++ /dev/null @@ -1,117 +0,0 @@ -<?php -if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { - header('Access-Control-Allow-Origin: *'); - header('Access-Control-Allow-Methods: POST, GET, DELETE, PUT, PATCH, OPTIONS'); - header('Access-Control-Allow-Headers: token, Content-Type'); - header('Access-Control-Max-Age: 1728000'); - header('Content-Length: 0'); - header('Content-Type: text/plain'); - die(); -} - -header('Access-Control-Allow-Origin: *'); -header('Content-Type: application/json'); - -class LoginRegistrasi{ - function connect_db(): PDO{ - $host = "localhost"; - $dbname = "wbd"; - $username = "postgres"; - $password = "postgres"; - $port = "5432"; - - $db = new PDO("pgsql:host=$host;dbname=$dbname", $username, $password); - return $db; - } - function login($db){ - if ($_SERVER['REQUEST_METHOD'] === 'POST') { - $koneksi = $db; - $query = "SELECT * FROM users"; - $result = $koneksi->query($query); - $data_database = $result->fetchAll(); - - $data = json_decode(file_get_contents("php://input")); - $path = $_SERVER['REQUEST_URI']; - if(strpos($path,'/checkloginreg.php/login') !== false){ - if(!empty($data->username) && !empty($data->password)){ - $username = $data->username; - $password = $data->password; - $get = 0; - for($i=0;$i<count($data_database);$i++){ - if($data_database[$i]['username'] === $username && password_verify($password, $data_database[$i]['password_hashed'])){ - $response = array("status" => "sukses", "message" => "Login berhasil", "role" => $data_database[$i]['role']); - $get = 1; - header('Content-Type: application/json'); - echo json_encode($response); - break; - } - } - if($get == 0){ - $response = array("status" => "error", "message" => "Username atau password salah"); - header('Content-Type: application/json'); - echo json_encode($response); - } - }else{ - $response = array("status" => "error", "message" => "Username atau password tidak boleh kosong"); - header('Content-Type: application/json'); - echo json_encode($response); - } - } - } - } - function registrasi($db){ - try{ - if ($_SERVER['REQUEST_METHOD'] === 'POST') { - $koneksi = $db; - $query = "SELECT * FROM users"; - $result = $koneksi->query($query); - $data_database = $result->fetchAll(); - - $data = json_decode(file_get_contents("php://input")); - $path = $_SERVER['REQUEST_URI']; - if(strpos($path,'/checkloginreg.php/register') !== false){ - if(!empty($data->username) && !empty($data->password) && !empty($data->nama)){ - $username = $data->username; - $password = $data->password; - $nama = $data->nama; - $get = 0; - for($i=0;$i<count($data_database);$i++){ - if($data_database[$i]['username'] == $username){ - $response = array("status" => "error", "message" => "Username sudah terdaftar"); - $get = 1; - header('Content-Type: application/json'); - echo json_encode($response); - break; - } - - } - if($get == 0){ - $password = password_hash($password, PASSWORD_DEFAULT); - $query = "INSERT INTO users (username, password_hashed, profile_name, role) VALUES ('$username', '$password', '$nama', 'user')"; - $result = $koneksi->query($query); - $response = array("status" => "sukses", "message" => "Registrasi berhasil"); - header('Content-Type: application/json'); - echo json_encode($response); - } - - }else{ - $response = array("status" => "error", "message" => "Username atau password atau nama tidak boleh kosong"); - header('Content-Type: application/json'); - echo json_encode($response); - } - - } - } - }catch(Exception $e){ - echo $e->getMessage(); - } - } -} - -// $loginregistrasi = new LoginRegistrasi(); -// $db = $loginregistrasi->connect_db(); -// $loginregistrasi->login($db); -// $loginregistrasi->registrasi($db); - - -?> \ No newline at end of file diff --git a/src/app/login/login.html b/src/app/login/login.html deleted file mode 100644 index 512281f2fa96f261603b221b7b2638bfb7e458dd..0000000000000000000000000000000000000000 --- a/src/app/login/login.html +++ /dev/null @@ -1,79 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> -<head> - <meta charset="UTF-8"> - <meta name="viewport" content="width=device-width, initial-scale=1.0"> - <title>Login</title> - <link rel="stylesheet" href="login.css"> -</head> -<body> - - <div class="tepi"> - <div class="isi-box login"> - <h2> - Login - </h2> - <div> - <div class="input-box"> - <span class="icon"> - <ion-icon name="people-outline"></ion-icon> - </span> - <input type="text" required id="username"> - <label >Username</label> - </div> - <div class="input-box"> - <span class="icon"> - <ion-icon name="lock-closed-outline"></ion-icon> - </span> - <input type="password" required id="password"> - <label >Password</label> - </div> - <button type="submit" class="tmbllogin" id="tmblbuatlogin"> - Login - </button> - <div class="register"> - <p>Don't have account?<a href="#" class="register-link">Register</a></p> - </div> - </div> - </div> - <div class="isi-box register"> - <h2> - Register - </h2> - <div> - <div class="input-box"> - <span class="icon"> - <ion-icon name="text-outline"></ion-icon> - </span> - <input type="text" required id="namareg"> - <label >Name</label> - </div> - <div class="input-box"> - <span class="icon"> - <ion-icon name="people-outline"></ion-icon> - </span> - <input type="text" required id="userreg"> - <label >Username</label> - </div> - <div class="input-box"> - <span class="icon"> - <ion-icon name="lock-closed-outline"></ion-icon> - </span> - <input type="password" required id="passreg"> - <label >Password</label> - </div> - <button type="submit" class="tmbllogin" id="tmblreg"> - Register - </button> - <div class="register"> - <p>Already have account?<a href="#" class="login-link">Login</a></p> - </div> - </div> - </div> - - </div> - <script src="login.js"></script> - <script type="module" src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.esm.js"></script> - <script nomodule src="https://unpkg.com/ionicons@7.1.0/dist/ionicons/ionicons.js"></script> -</body> -</html> \ No newline at end of file