link student working

This commit is contained in:
Siwat Sirichai 2024-05-05 17:18:54 +07:00
parent 512a69319c
commit 5540ac6d81
4 changed files with 84 additions and 73 deletions

View file

@ -1,4 +1,5 @@
let satitm_directory = require('./config/ldap.js');
let ldap = require('ldapjs');
// Search for a user in the directory
async function queryUser(upn, attributes) {
return new Promise((resolve, reject) => {
@ -23,12 +24,39 @@ async function queryUser(upn, attributes) {
});
}
function setAttribute(upn, attribute, value, callback) {
// First, get DN of the user from the UPN
let attributes = ['dn'];
async function setPrimaryParent(student_upn, parent_upn) {
try {
// Query the student's LDAP entry
let studentAttributes = ['primaryParent'];
let student = await queryUser(student_upn, studentAttributes);
let primaryParent = student.primaryParent;
// If the primary parent is not set, set it to the parent's UPN
if (!primaryParent) {
let change = new ldap.Change({
operation: 'add',
modification: {
primaryParent: parent_upn
}
});
let dn = student.dn;
satitm_directory.modify(dn, change, function(err) {
if (err) {
console.error(err);
throw err;
}
});
}
// If the primary parent is already set, return an error
else {
throw new Error('Primary parent already set');
}
} catch (err) {
console.error(err);
throw err;
}
}
// 0: Unkown, 1: Student, 2: Parent
const USER_TYPE = {
UNKNOWN: 0,
@ -55,23 +83,22 @@ function getUserType(req, res) {
}
}
async function getPrimaryParent(student_upn, callback) {
return new Promise((resolve, reject) => {
async function getPrimaryParent(student_upn) {
try {
// Query primaryParent attribute in the student's LDAP entry
let attributes = ['primaryParent'];
queryUser(student_upn, attributes, function(err, student) {
if (err) {
reject(err);
} else {
let primaryParent = student.primaryParent;
resolve(primaryParent);
}
});
});
let student = await queryUser(student_upn, attributes);
let primaryParent = student.primaryParent;
return primaryParent;
} catch (err) {
console.error(err);
throw err;
}
}
module.exports = {
queryUser: queryUser,
getUserType: getUserType,
setPrimaryParent: setPrimaryParent,
USER_TYPE: USER_TYPE
};