| | |
| | | /* Lib for interacting with customized ILIAS php */ |
| | | |
| | | module.exports = { |
| | | importIliasUser, |
| | | |
| | | deleteUser, |
| | | deleteAllUsers, |
| | | deleteTeilnahme, |
| | | } |
| | | |
| | | ///////////////////////////////////////////////////////////////////////// |
| | | |
| | | const settings = require("../settings") |
| | | const {url} = settings.ilias |
| | | const {getObjIdFromRefId} = require("./db") |
| | | const db = require("./db") |
| | | const {url, iliastoken} = settings.ilias |
| | | |
| | | ///////////////////////////////////////////////////////////////////////// |
| | | |
| | | /////// USER IMPORT //////////////////////////////////////////////////////////////// |
| | | |
| | | /** |
| | | * Format in POPCORN für SOAP; ausprobieren ob das hier auch funktioniert, v.a. die user-defined-fields |
| | | * { |
| | | * Action: "Insert", |
| | | * login: formatSapNr(dbMa.sapNr), |
| | | * password: passGen(12), |
| | | * firstname: dbMa.vorname, |
| | | * lastname: dbMa.nachname, |
| | | * email: email, |
| | | * gender: mapSex[dbMa.geschlecht], |
| | | * // GS-1894: Azubis wird der Ausbildungsberuf auch als Abteilung angezeigt |
| | | * department: getDepartment(dbMa), |
| | | * institution: dbMa.markt.markt, |
| | | * roleIdGlobal: 4, |
| | | * userDefinedField: [ |
| | | * { |
| | | * name: "Markt", |
| | | * value: dbMa.markt.markt, |
| | | * }, |
| | | * { |
| | | * name: "Marktnummer", |
| | | * value: dbMa.markt.nr, |
| | | * }, |
| | | * { |
| | | * name: "Personalnummer", |
| | | * value: formatSapNr(dbMa.sapNr), |
| | | * }, |
| | | * ], |
| | | * } |
| | | * @param user |
| | | * @returns {Promise<any>} |
| | | */ |
| | | async function importIliasUser (user) { |
| | | const sp = new URLSearchParams({ |
| | | command: "importUser", |
| | | token: iliastoken, |
| | | }) |
| | | let url2 = `${url}?${sp.toString()}` |
| | | console.log(url2) |
| | | const res = await fetch(url2, { |
| | | method: "POST", |
| | | body: JSON.stringify(user) |
| | | }) |
| | | |
| | | const data = await res.json() |
| | | return data |
| | | |
| | | const text = await res.text() |
| | | try { |
| | | const json = JSON.parse(text) |
| | | return json |
| | | } catch (ex) { |
| | | console.error(ex.message) |
| | | console.log(text) |
| | | throw ex |
| | | } |
| | | try { |
| | | return data |
| | | } catch (ex) { |
| | | const text = await res.text() |
| | | console.error(text) |
| | | return false |
| | | } |
| | | } |
| | | |
| | | /////// USER DELETE //////////////////////////////////////////////////////////////// |
| | | |
| | | async function deleteUser (obj_id, dry = false) { |
| | | const sp = new URLSearchParams({ |
| | | command: "deleteUser", |
| | | obj_id, |
| | | dry : dry ? "1" : "0", |
| | | // dry: "1", |
| | | dry: dry ? "1" : "0", |
| | | token: iliastoken, |
| | | }) |
| | | let url2 = `${url}?${sp.toString()}` |
| | | console.log("libIlias.deleteUser >>>", url2) |
| | | const res = await fetch(url2, {method: "DELETE"}) |
| | | // console.log(res) |
| | | const data = await res.json() |
| | | return data |
| | | // TODO update search index |
| | | return data // |
| | | } |
| | | |
| | | async function deleteAllUsers () { |
| | | const {data: users} = await db.getUsers(0, 100000) |
| | | const res = { |
| | | command: "deleteAllUsers", |
| | | start: new Date(), |
| | | end: new Date(), |
| | | duration: null, |
| | | count: 0, |
| | | userIds: [], |
| | | } |
| | | for (const user of users) { |
| | | await deleteUser(user.usr_id) |
| | | res.count += 1 |
| | | res.userIds.push(user.usr_id) |
| | | } |
| | | res.end = new Date() |
| | | res.duration = res.end - res.start |
| | | // TODO update search index |
| | | return res |
| | | } |
| | | |
| | | async function deleteTeilnahme (ref_id, usr_id, dry = false) { |
| | | const {obj_id} = await getObjIdFromRefId(ref_id) |
| | | const sp = new URLSearchParams({ |
| | | command: "deleteTeilnahme", |
| | | obj_id, |
| | | usr_id, |
| | | dry: dry ? "1" : "0", |
| | | token: iliastoken, |
| | | }) |
| | | let url2 = `${url}?${sp.toString()}` |
| | | console.log("libIlias.deleteTeilnahme >>>", url2) |
| | | let res |
| | | try { |
| | | res = await fetch(url2, {method: "DELETE"}) |
| | | return await res.json() |
| | | } catch (ex) { |
| | | console.error(ex) |
| | | throw ex |
| | | } |
| | | } |
| | | |