Commit Graph
100 Commits
Author SHA1 Message Date
Stevan Freeborn 0cac8cd5fb feat: add frontend with aspire integration 2026-02-17 06:18:18 -06:00
Stevan Freeborn d77e5d45f6 feat: aspirify the solution 2026-02-15 08:16:47 -06:00
Stevan Freeborn 2cca5c15a0 chore: run dotnet format 2026-02-15 08:16:47 -06:00
Stevan Freeborn ab88656c1e feat(api): implement endpoint for creating link tokens 2026-02-15 07:02:01 -06:00
Stevan Freeborn 6b2b19cb5b feat(infra): add create link token to plaid service 2026-02-15 07:02:01 -06:00
Stevan Freeborn 9c0f642f90 feat(api): support passing and persistenting currency code for balances 2026-02-14 06:46:05 -06:00
Stevan Freeborn 701b89d704 feat(infra): added modeling and migrations for currency code prop 2026-02-14 06:46:05 -06:00
Stevan Freeborn 49e4288eba feat(core): extend balance model to store currency code 2026-02-14 06:46:05 -06:00
Stevan Freeborn 497dedf6ac feat(api): return balance info to frontend 2026-02-14 06:46:05 -06:00
Stevan Freeborn 29d8758ede feat(infra): add extensions members for plaid accounts 2026-02-14 06:46:05 -06:00
Stevan Freeborn 6190470fe2 feat(api): initialize account with starting balance 2026-02-14 06:46:05 -06:00
Stevan Freeborn ed7e25961c feat(infra): add modeling to dbcontext for balance model with migrations 2026-02-14 06:46:05 -06:00
Stevan Freeborn e331030bb0 feat(core): add balance model 2026-02-14 06:46:05 -06:00
Stevan Freeborn 3b7830b1bc refactor(api): introduce DTOs for institutional account discovery
- Replace raw Plaid entity response with a dedicated Response wrapper
- Map Plaid accounts to AccountDto to decouple API from external SDK
models
- Update integration tests to assert against the new response structure
- Add JsonConstructors to DTO records for reliable deserialization
2026-02-14 06:46:05 -06:00
Stevan Freeborn dad2ceb450 feat(api,core,infra): refactor endpoint routing and add institution account discovery
- Move login and refresh endpoints under a unified /auth route group
- Relocate institution connection logic from /accounts to /institutions
- Implement GET /institutions/{id}/available to fetch real-time Plaid
accounts
- Introduce HttpRequestBuilder utility to streamline integration testing
- Enhance PlaidService with GetAccountsAsync to support account fetching
- Clean up global usings and project structure for better domain
isolation
2026-02-14 06:46:05 -06:00
Stevan Freeborn 32cf48bf36 refactor(infra,api.tests): fix my null lies 2026-02-13 12:38:18 -06:00
Stevan Freeborn 502f6f61c1 feat(api): validate account institution is connected and allow adding new account 2026-02-13 12:38:18 -06:00
Stevan Freeborn 6ca90ed25a refactor(api.tests): rename variable 2026-02-13 12:38:18 -06:00
Stevan Freeborn 5192c06627 refactor(api): use convenience methods 2026-02-13 12:38:18 -06:00
Stevan Freeborn 2fd55a55cd fix(infra): update db model to address property name correction 2026-02-13 12:38:18 -06:00
Stevan Freeborn a2e9fc3f30 fix(core): fix incorrectly named property 2026-02-13 12:38:18 -06:00
Stevan Freeborn a83dbbcc54 feat(api): add validation to prevent duplicate accounts from being added 2026-02-13 12:38:18 -06:00
Stevan Freeborn a07fd24ee9 feat(infra): added plaid specific metadata and updated context to model account 2026-02-13 12:38:18 -06:00
Stevan Freeborn 2fdb849142 feat(core): add models for account 2026-02-13 12:38:18 -06:00
Stevan Freeborn 1a41c3c0b6 feat(api): implement storing connected insitution in db 2026-02-13 04:37:47 -06:00
Stevan Freeborn c4a8aada6b feat(infra): implement plaid service 2026-02-13 04:37:47 -06:00
Stevan Freeborn dd08eee5a3 refactor(infra): remove unneeded qualifiers 2026-02-13 04:37:47 -06:00
Stevan Freeborn 7cdf87b860 tests(api.tests): pass cancellation token through delegate 2026-02-13 04:37:47 -06:00
Stevan Freeborn 8663daabae chore(api.tests): add example test settings file 2026-02-13 04:37:47 -06:00
Stevan Freeborn 0b7c33a024 fix(core): pass name of null param 2026-02-13 04:37:47 -06:00
Stevan Freeborn 823ba4dc5a chore: update example appsettings file 2026-02-13 04:37:47 -06:00
Stevan Freeborn 1d661ac409 feat(api): prevent user from connecting to same institution twice 2026-02-13 04:37:47 -06:00
Stevan Freeborn 069d019d80 feat(infra): update db context with modeling for institution and relationships 2026-02-13 04:37:47 -06:00
Stevan Freeborn 3f62a246ee feat(core): add models for institution 2026-02-13 04:37:47 -06:00
Stevan Freeborn 5da1f1decf refactor(api.tests): check for correct status code first in assertion 2026-02-13 04:37:47 -06:00
Stevan Freeborn 1f5e4a319a fix(api.tests): use a serializable dictionary for xunit test case data 2026-02-13 04:37:47 -06:00
Stevan Freeborn 683ca3fac4 feat(api): add validation for connect account request 2026-02-13 04:37:47 -06:00
Stevan Freeborn e88adfd2a7 refactor(api): derive field name from property being validated 2026-02-13 04:37:47 -06:00
Stevan Freeborn 6fc8bd0366 refactor(api): rename type 2026-02-13 04:37:47 -06:00
Stevan Freeborn ab23593359 refactor(api): remove whitespace 2026-02-13 04:37:47 -06:00
Stevan Freeborn 87a68669cf feat(api): add protected connect account endpoint 2026-02-13 04:37:47 -06:00
Stevan Freeborn b4744076b7 tests: update test ring implementation 2026-02-06 06:53:20 -06:00
Stevan Freeborn 5b1a5f003e tests: add mucho tests 2026-02-06 06:53:20 -06:00
Stevan Freeborn b2086d8185 feat(admincli): add generate key command 2026-02-06 06:53:20 -06:00
Stevan Freeborn 9b4f0c6b9e refactor(api): clean up usings 2026-02-06 06:53:20 -06:00
Stevan Freeborn 259daf1e5b chore: update example settings file 2026-02-06 06:53:20 -06:00
Stevan Freeborn e02a18df00 chore: added filesystem abstraction package 2026-02-06 06:53:20 -06:00
Stevan Freeborn c1932246f3 feat(infra): create initial encryption implementations 2026-02-06 06:53:20 -06:00
Stevan Freeborn 4eb833d2c8 chore: add services registrations 2026-02-06 06:53:20 -06:00
Stevan Freeborn af29df5d19 refactor(infra): move database path logic into app context 2026-02-06 06:53:20 -06:00
Stevan Freeborn 04e0a31b27 chore: remove unnecessary using 2026-02-06 06:53:20 -06:00
Stevan Freeborn 97c7847a89 chore: removed unnecessary usings 2026-02-06 06:53:20 -06:00
Stevan Freeborn f34fb5ce41 feat(core): define primary models and services for encryption 2026-02-06 06:53:20 -06:00
Stevan Freeborn 38c311bdd1 feat(core): extend user model with encryption related properties 2026-02-06 06:53:20 -06:00
Stevan Freeborn e9b1bd11bb feat(infra): added migrations for adding properties to user model 2026-02-06 06:53:20 -06:00
Stevan Freeborn bbe3779a53 tests: add remaining register integration tests 2026-02-03 21:04:25 -06:00
Stevan Freeborn 47692fc946 tests: add test for calling refresh with no access token 2026-02-03 21:04:25 -06:00
Stevan Freeborn 453aa3264d tests: check for proper cookie being set in response 2026-02-03 21:04:25 -06:00
Stevan Freeborn 21d23be2ef fix: remove unnecessary using 2026-02-03 21:04:25 -06:00
Stevan Freeborn 73598111b2 feat: enable problem details responses 2026-02-03 21:04:25 -06:00
Stevan Freeborn 1b89056258 tests: add jwt token builder for testing protected endpoints 2026-02-03 21:04:25 -06:00
Stevan Freeborn f12788fa37 fix: use key property 2026-02-03 21:04:25 -06:00
Stevan Freeborn 57c7a3a701 chore: configure auth schemes and add refresh token revocation migration 2026-02-03 21:04:25 -06:00
Stevan Freeborn 92b3c8e9c4 feat(api): add refresh endpoint and update global usings 2026-02-03 21:04:25 -06:00
Stevan Freeborn e12fa0111a feat(api): refactor login logic to use domain methods and cookie helpers 2026-02-03 21:04:25 -06:00
Stevan Freeborn ce5fd1fd45 refactor(core): enhance User and RefreshToken domain models 2026-02-03 21:04:25 -06:00
Stevan Freeborn 3fbd9402c3 chore: remove OpenApi and configure JWT authentication schemes 2026-02-03 21:04:25 -06:00
Stevan Freeborn a3264bd72d fix: add user id prop to refresh token 2026-02-03 21:04:25 -06:00
Stevan Freeborn e9f133bf43 fix: don't new up user for user prop 2026-02-03 21:04:25 -06:00
Stevan Freeborn 18bd510e75 chore: run dotnet format 2026-02-03 04:38:40 -06:00
Stevan Freeborn d9f0585c4c feat(infra): add indexes with uniqueness 2026-02-03 04:38:40 -06:00
Stevan Freeborn fcc1356d69 feat(admincli): add command for creating a user 2026-02-03 04:38:40 -06:00
Stevan Freeborn 0ce97cdec8 tests(api): add integration test for happy path when logging in 2026-02-03 04:38:40 -06:00
Stevan Freeborn 98de115259 feat(core): add password hashing and token generation interfaces 2026-02-03 04:38:40 -06:00
Stevan Freeborn 2a1a03ef6c test: update infra tests for new authentication namespaces 2026-02-03 04:38:40 -06:00
Stevan Freeborn a7eafa4966 test: add moq and code coverage support to test suite 2026-02-03 04:38:40 -06:00
Stevan Freeborn b05cc06dff feat(api): integrate abstracted token generation and update login endpoint 2026-02-03 04:38:40 -06:00
Stevan Freeborn a1b993bd62 feat(infra): move authentication implementations and add ITokenGenerator 2026-02-03 04:38:40 -06:00
Stevan Freeborn c4d0bf78ab refactor(core): encapsulate user and refresh token creation with factory methods 2026-02-03 04:38:40 -06:00
Stevan Freeborn e03cc0403a chore: add todo with psuedo code 2026-02-03 04:38:40 -06:00
Stevan Freeborn 1335f62ec3 feat(infra): update refresh token model 2026-02-03 04:38:40 -06:00
Stevan Freeborn eb2d9fb2d0 chore: add example jwt options in example settings file 2026-02-03 04:38:40 -06:00
Stevan Freeborn 36b293aa15 feat: implement token generation and issuing on successful login 2026-02-03 04:38:40 -06:00
Stevan Freeborn 38a03f56ca tests: refactor test suite to match new project structure 2026-02-03 04:38:40 -06:00
Stevan Freeborn c2b681d267 feat(api): integrate infra and implement password verification on login 2026-02-03 04:38:40 -06:00
Stevan Freeborn 91662f5629 feat: add timestamp interceptor and infrastructure service registration 2026-02-03 04:38:40 -06:00
Stevan Freeborn c79136fb26 refactor(infra): migrate data access and identity impelementations to infrastructure 2026-02-03 04:38:40 -06:00
Stevan Freeborn 7e67e02a68 refactor(core): move identity models from API to Core 2026-02-03 04:38:40 -06:00
Stevan Freeborn e66911810f feat(core): add base entity and password hashing abstractions 2026-02-03 04:38:40 -06:00
Stevan Freeborn 12ae1dc33a feat: initialize core, infra, and admin cli projects 2026-02-03 04:38:40 -06:00
Stevan Freeborn 647b185d40 feat: implement password hasher 2026-02-03 04:38:40 -06:00
Stevan Freeborn 00d7c977e7 chore: move editorconfig to correct location 2026-02-03 04:38:40 -06:00
Stevan Freeborn ccda58be07 tests: fix integration test setup 2026-02-03 04:38:40 -06:00
Stevan Freeborn 083b587493 fix: remove fake auth check 2026-02-03 04:38:40 -06:00
Stevan Freeborn c037b895f0 feat: wip on testing login flows 2026-02-03 04:38:40 -06:00
Stevan Freeborn 28e4692ca1 feat: setup db context with initial models 2026-02-03 04:38:40 -06:00
Stevan Freeborn 1f84f47f31 feat: add simple check for username and password 2026-02-03 04:38:40 -06:00
Stevan Freeborn 80b4e775d6 chore: add example appsettings file 2026-02-03 04:38:40 -06:00
Stevan Freeborn 463ff05831 refactor: use ivalidatableobject api 2026-02-03 04:38:40 -06:00
Stevan Freeborn c5a429683c chore: update editorconfig settings 2026-02-03 04:38:40 -06:00