diff --git a/libs/api-admentum/lib/apiAdmentum.ts b/libs/api-admentum/lib/apiAdmentum.ts index 36f30092..1104cc33 100644 --- a/libs/api-admentum/lib/apiAdmentum.ts +++ b/libs/api-admentum/lib/apiAdmentum.ts @@ -316,6 +316,17 @@ export class ApiAdmentum extends EventEmitter implements Api { ) // https://login.grandid.com/?sessionid=234324 // => 234324 + console.log('url', url) + + // Logged in: https://skola.admentum.se/overview + if (url.includes('overview')) { + console.log('already logged in to admentum') + this.isLoggedIn = true + this.personalNumber = personalNumber + this.emit('login') + return new DummyStatusChecker() + } + const sessionId = url.split('=').pop() console.log('sessionId', sessionId) console.log('adentum session id', sessionId) @@ -339,12 +350,12 @@ export class ApiAdmentum extends EventEmitter implements Api { const locomotiveUrl = redirectLocomotive(sessionId) - const response = await this.fetch('follow-locomotive', locomotiveUrl, { + console.log('calling locomotive url: ', locomotiveUrl); + /*const response = await this.fetch('follow-locomotive', locomotiveUrl, { method: 'GET', redirect: 'follow', - }); - console.log('locomotive response', response) - console.log('locomotive url', locomotiveUrl); + });*/ + //console.log('locomotive response', response) const callbackResponse = await this.followRedirects(locomotiveUrl); console.log('final response:', callbackResponse); //const testChildren = await this.getChildren() @@ -369,8 +380,9 @@ export class ApiAdmentum extends EventEmitter implements Api { method: 'GET', redirect: 'manual', // Disable automatic redirects }); - + console.log('follow-redirect response', response); if (response.status >= 300 && response.status < 400) { + console.log('response status:', response.status); const newLocation = response.headers.get('location'); if (!newLocation) { throw new Error('Redirect response missing location header'); @@ -378,6 +390,7 @@ export class ApiAdmentum extends EventEmitter implements Api { currentUrl = newLocation; redirectCount++; } else { + console.log('response status, not reidrect:', response.status); // The response is not a redirect, return it return response; } diff --git a/libs/api-admentum/lib/loginStatus.ts b/libs/api-admentum/lib/loginStatus.ts index 440aa347..6d8e465a 100644 --- a/libs/api-admentum/lib/loginStatus.ts +++ b/libs/api-admentum/lib/loginStatus.ts @@ -1,6 +1,6 @@ import { Fetcher, LoginStatusChecker } from '@skolplattformen/api' import { EventEmitter } from 'events' -import { bankIdCheckUrl } from './routes' +import { bankIdCheckUrl, redirectLocomotive } from './routes' export class GrandidChecker extends EventEmitter implements LoginStatusChecker { private fetcher: Fetcher @@ -28,6 +28,7 @@ export class GrandidChecker extends EventEmitter implements LoginStatusChecker { 'x-requested-with': 'XMLHttpRequest', }, }).then((res) => { + console.log('bankid full result', res) return res.json() }) console.log('bankid result', result) @@ -35,6 +36,28 @@ export class GrandidChecker extends EventEmitter implements LoginStatusChecker { const isError = result.response?.status === 'error' // https://mNN-mg-local.idp.funktionstjanster.se/mg-local/auth/ccp11/grp/pollstatus if (ok) { + //=== + /*const parts = this.basePollingUrl.split('?'); + let locoUrl = ''; + if (parts.length === 2) { + const queryString = parts[1]; + const queryParams = queryString.split('&'); + for (const param of queryParams) { + const [key, value] = param.split('='); + if (key === 'sessionid') { + locoUrl = redirectLocomotive(value); + } + } + } else { + console.log("Invalid URL format."); + } + + console.log('calling fff locomotive url: ', locoUrl) + const response = await this.fetcher('follow-locomotive', locoUrl, { + method: 'GET', + redirect: 'manual', + }); + console.log('locomotive response', response)*/ this.emit('OK') } else if (isError) { console.log('polling error') @@ -45,7 +68,7 @@ export class GrandidChecker extends EventEmitter implements LoginStatusChecker { setTimeout(() => this.check(), 3000) } } catch (err) { - console.log('Error validating login to HjÀrntorget', err) + console.log('Error validating login to Admentum', err) this.emit('ERROR') } } diff --git a/libs/api-admentum/run.js b/libs/api-admentum/run.js index 70d122b3..1889c196 100644 --- a/libs/api-admentum/run.js +++ b/libs/api-admentum/run.js @@ -9,6 +9,15 @@ const admentum = new Admentum(fetch, {}) const run = async () => { const sessionId = await admentum.login('7612040233') + + admentum.on('login', async () => { + console.log('login YEAYEAY', ) + + // ITerate and log all cookies + cookieJar.getCookies('https://www.admentum.se').forEach((cookie) => { + console.log(cookie.toString()) + }) + }) } run()