Compare commits

...

3 Commits

Author SHA1 Message Date
Jared He a7d3a4e989 Make term parameter easier to use 1 year ago
Jared He 615aa3f95f Return members 1 year ago
Jared He 597f1961c4 Test ldap libraries 1 year ago
  1. 50
      lib/ldap.ts
  2. 8
      lib/test.ts
  3. 9350
      package-lock.json
  4. 4
      package.json

@ -0,0 +1,50 @@
import { Client } from "ldapts";
interface MemberItem {
name: string;
id: string;
program: string;
}
export async function getMembers(
year: string,
term: string
): Promise<MemberItem[]> {
if (term !== "winter" && term !== "spring" && term !== "fall") {
throw new Error(`[getMembers] Not a valid term: "${term}"`);
}
let members: MemberItem[] = [];
const url = "ldap://ldap1.csclub.uwaterloo.ca";
const searchDN = "ou=People,dc=csclub,dc=uwaterloo,dc=ca";
const client = new Client({
url,
});
try {
await client.bind("", "");
const { searchEntries } = await client.search(searchDN, {
scope: "sub",
filter: `(&(objectClass=member)(term=${term.slice(0, 1)}${year}))`,
});
members = searchEntries
.map((item) => {
return {
name: item.cn as string,
id: item.uid as string,
program: item.program === undefined ? "" : (item.program as string),
};
})
.sort((item1: MemberItem, item2: MemberItem) =>
item1.id.localeCompare(item2.id)
);
} finally {
// catch (ex) {
// throw ex;
// }
await client.unbind();
}
return members;
}

@ -0,0 +1,8 @@
import { getMembers } from "./ldap";
const main = async () => {
const members = await getMembers("2020", "winter");
console.log(members);
};
void main();

9350
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -15,12 +15,14 @@
"lint:fix": "eslint \"{pages,components,lib,hooks,scripts}/**/*.{js,ts,tsx,jsx}\" --quiet --fix",
"generate:calendar": "ts-node ./scripts/generate-calendar",
"check-lockfile": "ts-node ./scripts/check-lockfile"
},
},
"dependencies": {
"@mdx-js/loader": "^1.6.22",
"@mdx-js/react": "^1.6.22",
"@next/mdx": "11.0.1",
"@types/ldapjs": "^2.2.1",
"date-fns": "^2.11.1",
"ldapts": "^3.1.0",
"next": "11.0.1",
"next-mdx-remote": "3.0.4",
"prettier": "^2.3.0",

Loading…
Cancel
Save