Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| projects:member_portal:home [2025/10/07 22:59] – samp20 | projects:member_portal:home [2025/10/24 00:15] (current) – samp20 | ||
|---|---|---|---|
| Line 7: | Line 7: | ||
| ===== Architecture ===== | ===== Architecture ===== | ||
| - | The current proposed architecture | + | The system |
| - | ===== Tasks ===== | + | Below is a diagram showing the system dependencies: |
| - | ^ Description ^ Depends on ^ Assigned to ^ | + | {{drawio> |
| - | | Copy across skeleton from storage project | | samp20 | | + | |
| - | | Implement [[projects: | + | ===== Left to do ===== |
| - | | Initial [[projects:member_portal:oauth|]] implementation | Session management | - | | + | |
| - | | [[projects:member_portal: | + | Required for initial demo: |
| + | |||
| + | * Portal homepage | ||
| + | * Hardcode OAuth permissions for demo | ||
| + | * Logout | ||
| + | * Host demo under Hackspace beta domain | ||
| + | * Sample OpenID compatible application (suggestions welcome) | ||
| + | |||
| + | Shortly after: | ||
| + | * Rate limiter | ||
| + | * By attempted email address | ||
| + | * By IP address | ||
| + | * Object cleanup system | ||
| + | |||
| + | Future work: | ||
| + | * Permissions system | ||
| + | * PKCE | ||
| + | * View/edit personal details | ||
| + | * View/delete active sessions | ||
| + | * External logins (keyfob) | ||
| + | * Admin pages | ||
| + | * Clients | ||
| + | * Roles | ||
| + | * Members | ||
| ===== Project layout ===== | ===== Project layout ===== | ||
| Line 25: | Line 48: | ||
| * '' | * '' | ||
| * '' | * '' | ||
| - | * '' | + | * '' |
| * '' | * '' | ||
| * '' | * '' | ||
| Line 59: | Line 82: | ||
| </ | </ | ||
| + | ===== Testing ===== | ||
| + | |||
| + | We will use pytest for our testing. We should aim to test each system in isolation. | ||
| + | |||
| + | Some code will require an active request to test. We can create test endpoints to satisfy these instead of using the fully templated ones. | ||
| + | |||
| + | For now we can probably use an in-memory SQLite database for testing. We may need to switch to a proper PostgreSQL database if we start to depend on DB specific features, at which point we'll need to clean the database before every test run. | ||
| + | |||
| + | ===== Models ===== | ||
| + | |||
| + | {{drawio> | ||
| + | |||
| + | ===== Tokens ===== | ||
| + | |||
| + | A common pattern that's required is to store an external reference to a table row in a secure way. The pattern we use is to store an '' | ||