From 848eb5d1d1f9882e1183edbf43273d2ff1a3c3b8 Mon Sep 17 00:00:00 2001 From: Arthur Lu Date: Fri, 5 Apr 2024 22:33:56 +0000 Subject: [PATCH] implement full interface for paasldap backend --- src/backends/paasldap.js | 40 ++++++++++++++++++++++++++++++++++++++-- src/routes/auth.js | 8 ++++---- 2 files changed, 42 insertions(+), 6 deletions(-) diff --git a/src/backends/paasldap.js b/src/backends/paasldap.js index 9a9a1d2..a0cc714 100644 --- a/src/backends/paasldap.js +++ b/src/backends/paasldap.js @@ -69,7 +69,43 @@ export default class PAASLDAP extends AUTH_BACKEND { } } - async setUser (userid, attributes, ticket) { - return await this.#request(`/users/${userid}`, "POST", ticket, attributes); + async addUser (user, attributes, params = null) { + return await this.#request(`/users/${user.id}`, "POST", params, attributes); + } + + async getUser (user, params = null) { + return await this.#request(`/users/${user.id}`, "GET", params); + } + + async setUser (user, attributes, params = null) { + return await this.#request(`/users/${user.id}`, "POST", params, attributes); + } + + async delUser (user, params = null) { + return await this.#request(`/users/${user.id}`, "DELETE", params); + } + + async addGroup (group, attributes, params = null) { + return await this.#request(`/groups/${group.id}`, "POST", params); + } + + async getGroup (group, params = null) { + return await this.#request(`/groups/${group.id}`, "GET", params); + } + + async setGroup (group, attributes, params = null) { + // not implemented, LDAP groups do not have any attributes to change + } + + async delGroup (group, params = null) { + return await this.#request(`/groups/${group.id}`, "DELETE", params); + } + + async addUserToGroup (user, group, params = null) { + return await this.#request(`/groups/${group.id}/members/${user.id}`, "POST", params); + } + + async delUserFromGroup (user, group, params = null) { + return await this.#request(`/groups/${group.id}/members/${user.id}`, "DELETE", params); } } diff --git a/src/routes/auth.js b/src/routes/auth.js index 323947a..54e20c1 100644 --- a/src/routes/auth.js +++ b/src/routes/auth.js @@ -33,7 +33,7 @@ class CookieFetcher { this.#cookies = this.#cookies.concat(response.cookies); this.#fetchedBackends.push(backend); } - else { // assume that a repeat backends should not be requested + else { // assume that repeat backends should not be requested continue; } } @@ -116,14 +116,14 @@ router.post("/password", async (req, res) => { const userRealm = params.username.split("@").at(-1); const authHandlers = global.config.handlers.auth; - + const userID = params.username.replace(`@${userRealm}`, ""); + const userObj = { id: userID, realm: userRealm }; if (userRealm in authHandlers) { const handler = authHandlers[userRealm]; - const userID = params.username.replace(`@${userRealm}`, ""); const newAttributes = { userpassword: params.password }; - const response = await handler.setUser(userID, newAttributes, req.cookies); + const response = await handler.setUser(userObj, newAttributes, req.cookies); if (response.ok) { res.status(response.status).send(response.data); }