diff --git a/src/app/controllers/Admin/SetAdmin.php b/src/app/controllers/Admin/SetAdmin.php
new file mode 100644
index 0000000000000000000000000000000000000000..76ff11c2cad71c5ebb5b142f61b9c3a17019a6e2
--- /dev/null
+++ b/src/app/controllers/Admin/SetAdmin.php
@@ -0,0 +1,38 @@
+<?php
+
+require_once SRC_ROOT_PATH . "/app/baseclasses/BaseController.php";
+require_once SRC_ROOT_PATH . "/app/models/AdminModel.php";
+
+class SetAdminController extends BaseController{
+    protected static $instance;
+    public static function getInstance(){
+        if(!isset(self::$instance)){
+            self::$instance = new static(AdminModel::getInstance());
+        }
+        return self::$instance;
+    }
+    public function post($urlParams){
+        $user_id = $_POST['id'];
+        $hasil = $this->srv->setAdmin($user_id);
+        if($hasil==true){
+            $hasiljson = array(
+                'status' => 'sukses',
+                'message' => 'User berhasil di set admin'
+            );
+            header('Content-Type: application/json');
+            return json_encode($hasiljson);
+        }
+        else{
+            $hasiljson = array(
+                'status' => 'error',
+                'message' => 'User gagal di set admin'
+            );
+            header('Content-Type: application/json');
+            return json_encode($hasiljson);
+            
+        }
+    }
+        
+}
+
+?>
\ No newline at end of file
diff --git a/src/app/models/AdminModel.php b/src/app/models/AdminModel.php
index a1f01301d6971adf69f4da9b5e40190d0bf58c59..574f03b0fa57e227149c1a2e96c0e482804e3f99 100644
--- a/src/app/models/AdminModel.php
+++ b/src/app/models/AdminModel.php
@@ -47,6 +47,22 @@ class AdminModel
         }
     }
 
+    public function setAdmin($user_id){
+        try{
+            $db = Database::getInstance()->getPDO();
+            $sql = "UPDATE users SET role = 'admin' WHERE id = '$user_id'";
+            $result = $db->query($sql);
+            if($result){
+                return true;
+            }
+            else{
+                return false;
+            }
+        }catch(Exception $e){
+            return false;
+        }
+    }
+
 }
 
 ?>
diff --git a/src/index.php b/src/index.php
index 2ee6a2e913dfd7190c71b969099b5386cdae8fbd..47bb4bcc053b35014df5152dd292e95fff91e15c 100644
--- a/src/index.php
+++ b/src/index.php
@@ -13,6 +13,7 @@ require_once CONTROLLER_PATH . "/User/RegisterController.php";
 require_once CONTROLLER_PATH . "/Admin/AdminController.php";
 require_once CONTROLLER_PATH . "/Admin/BanController.php";
 require_once CONTROLLER_PATH . "/Admin/UnbanController.php";
+require_once CONTROLLER_PATH . "/Admin/SetAdmin.php";
 
 require_once CONTROLLER_PATH . "/Page/LoginPage.php";
 require_once CONTROLLER_PATH . "/Page/ComposePage.php";
@@ -28,6 +29,7 @@ $router->addHandler("/api/register", RegisterController::getInstance(), []);
 $router->addHandler("/api/admin", AdminController::getInstance(), []);
 $router->addHandler("/api/ban", BanController::getInstance(), []);
 $router->addHandler("/api/unban", UnbanController::getInstance(), []);
+$router->addHandler("/api/setadmin", SetAdminController::getInstance(), []);
 
 $router->addHandler("/login", LoginPage::getInstance(), []);
 $router->addHandler("/compose/kicau", ComposePage::getInstance(), []);