summaryrefslogtreecommitdiff
path: root/alarm/node_modules/pronote-api/src/server/auth.js
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2022-10-18 08:59:09 +0200
committerMinteck <contact@minteck.org>2022-10-18 08:59:09 +0200
commit2c4ae43e688a9873e86211ea0e7aeb9ba770dd77 (patch)
tree17848d95522dab25d3cdeb9c4a6450e2a234861f /alarm/node_modules/pronote-api/src/server/auth.js
parent108525534c28013cfe1897c30e4565f9893f3766 (diff)
downloadpluralconnect-2c4ae43e688a9873e86211ea0e7aeb9ba770dd77.tar.gz
pluralconnect-2c4ae43e688a9873e86211ea0e7aeb9ba770dd77.tar.bz2
pluralconnect-2c4ae43e688a9873e86211ea0e7aeb9ba770dd77.zip
Update
Diffstat (limited to 'alarm/node_modules/pronote-api/src/server/auth.js')
-rw-r--r--alarm/node_modules/pronote-api/src/server/auth.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/alarm/node_modules/pronote-api/src/server/auth.js b/alarm/node_modules/pronote-api/src/server/auth.js
new file mode 100644
index 0000000..54962a2
--- /dev/null
+++ b/alarm/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 };