summaryrefslogtreecommitdiff
path: root/school/node_modules/pronote-api/src/server/auth.js
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2023-01-10 14:54:04 +0100
committerMinteck <contact@minteck.org>2023-01-10 14:54:04 +0100
commit99c1d9af689e5325f3cf535c4007b3aeb8325229 (patch)
treee663b3c2ebdbd67c818ac0c5147f0ce1d2463cda /school/node_modules/pronote-api/src/server/auth.js
parent9871b03912fc28ad38b4037ebf26a78aa937baba (diff)
downloadpluralconnect-99c1d9af689e5325f3cf535c4007b3aeb8325229.tar.gz
pluralconnect-99c1d9af689e5325f3cf535c4007b3aeb8325229.tar.bz2
pluralconnect-99c1d9af689e5325f3cf535c4007b3aeb8325229.zip
Update - This is an automated commit
Diffstat (limited to 'school/node_modules/pronote-api/src/server/auth.js')
-rw-r--r--school/node_modules/pronote-api/src/server/auth.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/school/node_modules/pronote-api/src/server/auth.js b/school/node_modules/pronote-api/src/server/auth.js
new file mode 100644
index 0000000..54962a2
--- /dev/null
+++ b/school/node_modules/pronote-api/src/server/auth.js
@@ -0,0 +1,49 @@
+const { v4: uuid } = require('uuid');
+
+const { loginStudent, loginParent } = require('../auth');
+
+const sessions = {};
+
+async function login({ url, username, password, cas, account = 'student' })
+{
+ if (!url || !username || !password) {
+ throw {
+ http: 400,
+ message: 'Missing \'url\', or \'username\', or \'password\', or header \'Content-Type: application/json\''
+ };
+ }
+
+ let func;
+ switch (account) {
+ case 'student':
+ func = loginStudent;
+ break;
+ case 'parent':
+ func = loginParent;
+ break;
+ default:
+ throw {
+ http: 400,
+ message: `Unknown account type '${account}'`
+ };
+ }
+
+ const token = uuid();
+ sessions[token] = await func(url, username, password, cas);
+
+ return { token };
+}
+
+// eslint-disable-next-line no-unused-vars
+async function logout(_, token)
+{
+ delete sessions[token];
+ return { success: true };
+}
+
+function getSession(token)
+{
+ return sessions[token];
+}
+
+module.exports = { login, logout, getSession };