From 1a987c9e04109505681b4ae0d6b7700d8b3b6f13 Mon Sep 17 00:00:00 2001
From: RandomChars <random@chars.jp>
Date: Wed, 6 Oct 2021 11:32:23 +0900
Subject: [PATCH] set user privileged through API

---
 api.go         | 3 +++
 api/types.go   | 3 ++-
 client/user.go | 4 ++--
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/api.go b/api.go
index 05d4d74..178c3f0 100644
--- a/api.go
+++ b/api.go
@@ -118,6 +118,9 @@ func registerAPI() {
 			return
 		}
 
+		if info.Privileged {
+			instance.UserPrivileged(flake, payload.Privileged)
+		}
 		instance.UserUsernameUpdate(flake, payload.Username)
 	})
 
diff --git a/api/types.go b/api/types.go
index 5c58f06..a86cfb7 100644
--- a/api/types.go
+++ b/api/types.go
@@ -13,7 +13,8 @@ type UserCreatePayload struct {
 }
 
 type UserUpdatePayload struct {
-	Username string `json:"username"`
+	Username   string `json:"username"`
+	Privileged bool   `json:"privileged,omitempty"`
 }
 
 type UserSecretPayload struct {
diff --git a/client/user.go b/client/user.go
index 97985e6..53c8829 100644
--- a/client/user.go
+++ b/client/user.go
@@ -52,10 +52,10 @@ func (r *Remote) UserAdd(username string, password string, privileged bool) (sto
 }
 
 // UserUpdate updates a user.
-func (r *Remote) UserUpdate(flake, newname string) error {
+func (r *Remote) UserUpdate(flake, newname string, privileged bool) error {
 	return r.requestJSONnoResp(http.MethodPatch,
 		populateField(api.UserField, "flake", flake),
-		api.UserUpdatePayload{Username: newname})
+		api.UserUpdatePayload{Username: newname, Privileged: privileged})
 }
 
 // UserDestroy destroys a user.
-- 
GitLab