link student working
This commit is contained in:
parent
512a69319c
commit
5540ac6d81
4 changed files with 84 additions and 73 deletions
57
directory.js
57
directory.js
|
|
@ -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
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue