mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-10-30 20:55:42 +00:00 
			
		
		
		
	* Remove django-allauth-2fa
Fixes #6281
* fix req
* fix file again
* remove allauth_2fa flows
* reintroduce otp
* fix rq
* remove old ref
* remove otp things from settings
* reintroduce otp codes
* remove totp section
* bump version
* fix reqs
* add missing model
* ignore TOTP migration if the model is not laoded
* add model deps
* add extra migrations step for easier testing
* add migration testing
* remove old catch
* cover static devies too
* remove more old stuff
* fix import
* mrege migrations
* bump API version
* switch to allauth.usersessions
* add headless
* re-add saml/openid
* user sessions cleanup
* turn off normal allauth urls if CUI is not active
* disable tests that rely on old endpoints - to be replaced
* always track session changes
* remove old allauth templates
* remove old ref
* add missing model
* fix session lookup
* always logout when pwd is changed
* reimplement session ending
* fix merge
* upgrade reqs
* lower cryptography version
* clean allauth_2fa reference
* disable test temporarly
* fix migration check
* disable tests temporarly
* Re-implement auth flow using new APIs; adds MFA to PUI
* re-implement logoff
* stop failure message from appearing when in MFA flow
* remove jwt mention
* fix: email endpoints (to be cleaned TODO@matmair)
* remove unused endpoints
* ignore the now often-used 410 error
* fix auth for email actions in MFA scenarios
* add mfa listing use build-in forms
* add dummy entry for missing frontend urls; see TODO@matmair
* remove unneeded change of confirm url
* add mfa reg endpoint (not fully implemented)
* implement more provider stuff
* simplify calls
* make calls more robust
* switch to browser based sessions
* add todo's
* update api version
* remove x-session, not needed anymore
* remove old urls
* remove ui preference - there is no decision anymore
* fix login redirect logic
* change name to ensure 1p can detect field
* add mfa table
* fix remove sso provider account action; provider (user) admin stuff is done
* reduce templates to the raw basics
* fix tests
* more exclusions
* rewrite url structure
* move buildin token test
* re-enable registration tests
* re-implement registrations
* enable registration for now
* re-implement password change
* adjust tests
* fix asserts
* align names with allauth
* simplify
* refactor and rephrasing
* fix nesting issue
* clean up urls even more
* add mfa add and remove screens
* add type
* revert dep change
* fix api version
* re-add settings
* simplify urls
* Add timeout to login wait for
* fix url assertation
* remove unneded mfa_enabled
* add setting for configuring types
* bump api version
* fix password reset flow
* change settings order
* save auth context
* rename var to remove confusion
* make login/register seperate paths
* make info text better
* adjust urls
* add error message
* disable buttons if no email is set
* add custom adapters for MFA and headless authentication to use upstreamed features
* move auth settings to status
* respect more settings
* update settings
* bump api version
* remove depreceated docs part
* remove dj_rest_auth stuff
* fix api_version bump
* remove temp fix
* fix provider login
* remove unsupported option
* remove hash requirement for now
* simplify customisation
* implement email-verification
* remove auth from api docs
* fix override of get_frontend_url
details in https://codeberg.org/allauth/django-allauth/pulls/4248
* bump api again
* fix req
* Revert "remove hash requirement for now"
This reverts commit 00bb6c5274.
* remove usage of git repo
* fix doc string
* extend schema generation to just patch in allauth
* patch allauth OAI ref names
* reduce types
* refactor code structure
* fix ref patching a bit more
* add param cleanup
* ensure strings, number, bools are handled correctly in cleanup
* move fnc
* shorten names
* bump allauth
* re-add auth doc section
* fix doc structure
* revert playwrigth change
* ckean up browser only path
* clean up parameters that we do not use
* re-add 2fa required middleware
* fix mail sending hook
* fix password set texts
* Add forced mfa setup
* remove type
* adjust api_version
* Remove debug prints
* Add error message for TOTP creation
* Handle failed TOTP login
* fix reqs
* Add error on 409 during login
* fix tested url
* fix api_version
* fix allauth version
* minimize req diff
* further minimize diff
---------
Co-authored-by: Oliver Walters <oliver.henry.walters@gmail.com>
		
	
		
			
				
	
	
		
			94 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			94 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import * as crypto from 'node:crypto';
 | |
| import * as fs from 'node:fs';
 | |
| import os from 'node:os';
 | |
| import * as path from 'node:path';
 | |
| import { test as baseTest } from '@playwright/test';
 | |
| 
 | |
| const istanbulCLIOutput = path.join(process.cwd(), '.nyc_output');
 | |
| const platform = os.platform();
 | |
| let systemKeyVar: string;
 | |
| if (platform === 'darwin') {
 | |
|   systemKeyVar = 'Meta';
 | |
| } else {
 | |
|   systemKeyVar = 'Control';
 | |
| }
 | |
| /* metaKey is the local action key (used for spotlight for example) */
 | |
| export const systemKey = systemKeyVar;
 | |
| 
 | |
| export function generateUUID(): string {
 | |
|   return crypto.randomBytes(16).toString('hex');
 | |
| }
 | |
| 
 | |
| export const test = baseTest.extend({
 | |
|   context: async ({ context }, use) => {
 | |
|     await context.addInitScript(() =>
 | |
|       window.addEventListener('beforeunload', () =>
 | |
|         (window as any).collectIstanbulCoverage(
 | |
|           JSON.stringify((window as any).__coverage__)
 | |
|         )
 | |
|       )
 | |
|     );
 | |
|     await fs.promises.mkdir(istanbulCLIOutput, { recursive: true });
 | |
|     await context.exposeFunction(
 | |
|       'collectIstanbulCoverage',
 | |
|       (coverageJSON: string) => {
 | |
|         if (coverageJSON)
 | |
|           fs.writeFileSync(
 | |
|             path.join(
 | |
|               istanbulCLIOutput,
 | |
|               `playwright_coverage_${generateUUID()}.json`
 | |
|             ),
 | |
|             coverageJSON
 | |
|           );
 | |
|       }
 | |
|     );
 | |
|     await use(context);
 | |
|     for (const page of context.pages()) {
 | |
|       await page.evaluate(() =>
 | |
|         (window as any).collectIstanbulCoverage(
 | |
|           JSON.stringify((window as any).__coverage__)
 | |
|         )
 | |
|       );
 | |
|     }
 | |
|   },
 | |
|   // Ensure no errors are thrown in the console
 | |
|   page: async ({ baseURL, page }, use) => {
 | |
|     const messages = [];
 | |
|     page.on('console', (msg) => {
 | |
|       const url = msg.location().url;
 | |
|       if (
 | |
|         msg.type() === 'error' &&
 | |
|         !msg.text().startsWith('ERR: ') &&
 | |
|         msg.text().indexOf('downloadable font: download failed') < 0 &&
 | |
|         msg
 | |
|           .text()
 | |
|           .indexOf(
 | |
|             'Support for defaultProps will be removed from function components in a future major release'
 | |
|           ) < 0 &&
 | |
|         msg.text() !=
 | |
|           'Failed to load resource: the server responded with a status of 400 (Bad Request)' &&
 | |
|         !msg.text().includes('http://localhost:8000/this/does/not/exist.js') &&
 | |
|         url != 'http://localhost:8000/this/does/not/exist.js' &&
 | |
|         url != 'http://localhost:8000/api/user/me/' &&
 | |
|         url != 'http://localhost:8000/api/user/token/' &&
 | |
|         url != 'http://localhost:8000/api/auth/v1/auth/login' &&
 | |
|         url != 'http://localhost:8000/api/auth/v1/auth/session' &&
 | |
|         url != 'http://localhost:8000/api/auth/v1/account/password/change' &&
 | |
|         url != 'http://localhost:8000/api/barcode/' &&
 | |
|         url != 'https://docs.inventree.org/en/versions.json' &&
 | |
|         url != 'http://localhost:5173/favicon.ico' &&
 | |
|         !url.startsWith('https://api.github.com/repos/inventree') &&
 | |
|         !url.startsWith('http://localhost:8000/api/news/') &&
 | |
|         !url.startsWith('http://localhost:8000/api/notifications/') &&
 | |
|         !url.startsWith('chrome://') &&
 | |
|         url.indexOf('99999') < 0
 | |
|       )
 | |
|         messages.push(msg);
 | |
|     });
 | |
|     await use(page);
 | |
|     expect(messages).toEqual([]);
 | |
|   }
 | |
| });
 | |
| 
 | |
| export const expect = test.expect;
 |