summaryrefslogtreecommitdiff
path: root/school/node_modules/pronote-api/src/server/auth.js
diff options
context:
space:
mode:
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 };