aboutsummaryrefslogtreecommitdiff
path: root/users.go
diff options
context:
space:
mode:
authorRunxi Yu <me@runxiyu.org>2025-02-19 20:44:54 +0800
committerRunxi Yu <me@runxiyu.org>2025-02-19 20:44:54 +0800
commit294d06ea4865e4bae88c1dee6a8a841a7f204189 (patch)
tree9d80c02fc509f43626f220874f46d8e906c0b6dc /users.go
parentssh/recv: Rename access -> direct_access (diff)
downloadforge-294d06ea4865e4bae88c1dee6a8a841a7f204189.tar.gz
forge-294d06ea4865e4bae88c1dee6a8a841a7f204189.tar.zst
forge-294d06ea4865e4bae88c1dee6a8a841a7f204189.zip
ssh/recv, users, schema: Create pubkey_only users
Diffstat (limited to '')
-rw-r--r--users.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/users.go b/users.go
new file mode 100644
index 0000000..9ac0798
--- /dev/null
+++ b/users.go
@@ -0,0 +1,26 @@
+package main
+
+import (
+ "context"
+)
+
+func add_user_ssh(ctx context.Context, pubkey string) (user_id int, err error) {
+ tx, err := database.Begin(ctx)
+ if err != nil {
+ return
+ }
+ defer tx.Rollback(ctx)
+
+ err = tx.QueryRow(ctx, `INSERT INTO users (type) VALUES ('pubkey_only') RETURNING id`).Scan(&user_id)
+ if err != nil {
+ return
+ }
+
+ _, err = tx.Exec(ctx, `INSERT INTO ssh_public_keys (key_string, user_id) VALUES ($1, $2)`, pubkey, user_id)
+ if err != nil {
+ return
+ }
+
+ err = tx.Commit(ctx)
+ return
+}