Commit Graph

398 Commits

Author SHA1 Message Date
Alice Gaudon 42da8a68bb Validation: respond with http 400 instead of 401 2020-11-15 14:12:45 +01:00
Alice Gaudon b28e2b75b7 Authentication: Improve registration tests and fix register/login overlap 2020-11-15 12:20:57 +01:00
Alice Gaudon f8c4906a51 PasswordAuthMethod: fix findUserByIdentifier() 2020-11-14 18:16:05 +01:00
Alice Gaudon b75b227ca1 Add required username to magic link authentication and fix many errors 2020-11-14 17:24:57 +01:00
Alice Gaudon acc5233185 Error handling: transform single validation errors into a validation bag 2020-11-14 16:25:18 +01:00
Alice Gaudon 9d50c5cc5f Rename project to swaf 2020-11-12 16:11:16 +01:00
Alice Gaudon efdd81b650 Auth: refactor to support multiple auth factors and add password factor 2020-11-11 19:30:30 +01:00
Alice Gaudon 1fce157104 logging: prevent full logging of errors for silent logs 2020-11-11 19:29:23 +01:00
Alice Gaudon 24d83c73ad Add basic development environment for testing purposes 2020-11-11 19:29:23 +01:00
Alice Gaudon b8905ea02b Move Controller.validate to static Validator.validate 2020-11-11 19:29:23 +01:00
Alice Gaudon bb8b44b5a3 ModelFactory: add hasComponent method 2020-11-11 19:29:23 +01:00
Alice Gaudon ead3c8ce1e Controller: wrap use() middlewares to handle async 2020-11-11 19:29:23 +01:00
Alice Gaudon 79c2f33000 Deprecate legacy migrations
Fix CreateUsersAndUserEmailsTableMigration


sq
2020-11-11 19:29:23 +01:00
Alice Gaudon 03d9826f93 Migration: remove `connection` parameter from query() method
Closes #5
2020-11-11 19:29:23 +01:00
Alice Gaudon f20da06d43 logging: also log ip address 2020-11-11 19:29:23 +01:00
Alice Gaudon a09e92dd96 logging: make silent errors actually silent 2020-11-04 12:52:07 +01:00
Alice Gaudon 570a831172 Mail: remove usage of non-existent config property 2020-11-04 12:11:30 +01:00
Alice Gaudon d741517cb9 AuthGuard: add separate before and after registration callbacks 2020-11-04 11:55:34 +01:00
Alice Gaudon c966536950 NunjucksComponent: fix view loaders using cache when in dev env 2020-11-03 17:46:04 +01:00
Alice Gaudon 7c2572cddc Fix validation errors not being flashed correctly 2020-11-03 11:14:13 +01:00
Alice Gaudon 4d0c714dbd Render emails using NunjucksComponent's environment 2020-11-03 10:29:36 +01:00
Alice Gaudon cfb7bddca6 DropLegacyLogsTable: fix sql syntax 2020-11-02 19:32:56 +01:00
Alice Gaudon 88e5e19730 Replace custom logging system with tslog 2020-11-02 17:50:12 +01:00
Alice Gaudon 93bff1fdca Nunjucks/globals: fix route() context 2020-10-02 12:13:48 +02:00
Alice Gaudon 595a6d4066 ModelQuery: add create() and fix boolean serialization 2020-10-02 12:08:01 +02:00
Alice Gaudon 00c806aa0a Fix log level output 2020-10-02 11:11:01 +02:00
Alice Gaudon e37184e5ee Add user model to RequireAuth middlewares 2020-10-01 13:59:19 +02:00
Alice Gaudon f41a456524 Improve typing precision of CacheProvider.get() 2020-10-01 13:58:50 +02:00
Alice Gaudon 79d704083a Add many eslint rules and fix all linting issues 2020-09-28 14:15:22 +02:00
Alice Gaudon 8210642684 Improve logging configuration structure 2020-09-25 22:19:13 +02:00
Alice Gaudon b736f5f6cb Improve middleware definition and cleanup code 2020-09-25 22:15:57 +02:00
Alice Gaudon 5dc0bd710a Make nunjucks and static file server compatible with pkg 2020-09-24 22:42:55 +02:00
Alice Gaudon 87aae6bb33 Fix some nunjucks globals not properly set and make getCSRFToken dynamic 2020-09-23 16:11:51 +02:00
Alice Gaudon 47e0756930 Add websocketUrl view local 2020-09-23 12:31:19 +02:00
Alice Gaudon 79d3b51f90 Pass a whole Session to WebSocketListeners 2020-09-23 08:55:35 +02:00
Alice Gaudon 2effaf13eb Add AuthComponent.getAuthGuard() 2020-09-23 08:46:37 +02:00
Alice Gaudon 75c2b72f57 Add Application.getComponent() 2020-09-23 08:46:21 +02:00
Alice Gaudon dfee2645e1 Express: add custom bind address setting 2020-09-17 21:15:37 +02:00
Alice Gaudon 3a473dd24e Fix error when saving models in transaction when it needs a full update 2020-09-15 15:40:58 +02:00
Alice Gaudon fec607da20 ModelQuery: add offset parameter to union() 2020-09-11 15:15:15 +02:00
Alice Gaudon fd6e384a12 Logging: improve legibility of sql queries when verbose mode enabled 2020-09-11 15:14:40 +02:00
Alice Gaudon 15678e0381 Fix relation reducing mistakenly using "in" instead of indexOf >= 0 2020-09-10 19:11:32 +02:00
Alice Gaudon b12d104c78 ModelRelations: deduplicate recursive relations on populate() 2020-09-08 19:24:05 +02:00
Alice Gaudon 969ab18b96 ModelRelation: sort recursive relations by tree 2020-09-08 19:11:19 +02:00
Alice Gaudon 892b830dc4 Code formatting and cleanup, dependencies upgrade and version 0.22.0-rc.8 2020-09-07 14:38:30 +02:00
Alice Gaudon 2f822aa61c ModelRelation: simplify foreign model constructor parameter 2020-09-07 14:30:11 +02:00
Alice Gaudon b88f4e1b64 ModelRelation: deduplicate eagerloaded models 2020-09-07 14:02:43 +02:00
Alice Gaudon 0e37014667 ModelQuery: add nested eagerloading 2020-09-07 13:43:02 +02:00
Alice Gaudon e86356ae74 ModelQuery.union(): fix missing subquery variables 2020-09-06 16:02:53 +02:00
Alice Gaudon 17685a44be Improve field disambiguation to allow raw values when starting with ",',` 2020-09-06 15:44:37 +02:00
Alice Gaudon c2abb1c87a Model.select(): allow custom select fields 2020-09-06 15:09:58 +02:00
Alice Gaudon 4c482fb148 ModelQuery: add union() 2020-09-06 15:07:11 +02:00
Alice Gaudon 3a4606b328 ModelQuery: allow specifying raw value for sortBy() 2020-09-06 12:25:53 +02:00
Alice Gaudon b84c2cdff1 Code formatting and cleanup 2020-09-06 10:53:28 +02:00
Alice Gaudon 25f890e082 Remove unnecessary db query to determine whether a model exists in db 2020-09-06 10:45:26 +02:00
Alice Gaudon f07704c6dc Allow Model classes to override primary key fields 2020-09-06 10:23:32 +02:00
Alice Gaudon f6b326f802 Move EMAIL_REGEXP to Validator 2020-09-06 10:21:47 +02:00
Alice Gaudon 27bd7400e2 ModelQuery: fix backticks on ORDER BY and remove extra useless spaces 2020-09-05 16:09:52 +02:00
Alice Gaudon e403dfa863 ModelQuery: fix field disambiguation 2020-09-05 15:51:44 +02:00
Alice Gaudon 9e38b003f9 Model relations: add recursive query and recursive relation 2020-09-05 14:56:19 +02:00
Alice Gaudon 7b739ff056 ModelQueryResult: also return model original data 2020-09-04 22:44:30 +02:00
Alice Gaudon e29b6369af ModelQuery: add groupWhere and test it 2020-09-04 22:16:20 +02:00
Alice Gaudon 823f5d0d26 ModelQuery: fix count() queries 2020-09-04 18:51:41 +02:00
Alice Gaudon 6a4898cbda ModelRelation: add pagination 2020-09-04 18:01:29 +02:00
Alice Gaudon 1dd22f618c ModelQuery: fix passing missing connection parameter 2020-09-04 15:10:11 +02:00
Alice Gaudon 19aafc76bf mysql queries: wrap field names in "`" to avoid conflict with reserved words
also do not add table name to field in select if it is already present
2020-09-04 15:09:30 +02:00
Alice Gaudon bffab3a4dc ModelQuery: actually fix fields conflicts for jointures
ref: 68ff977bcc
2020-09-02 16:29:11 +02:00
Alice Gaudon 5a3acf30f4 OneModelRelation: add set(), clear() methods 2020-09-02 14:08:49 +02:00
Alice Gaudon 4b9b62517b ModelRelation: add count(), has() methods 2020-09-02 14:08:35 +02:00
Alice Gaudon 74ffdf8325 Model: add equals method 2020-09-02 14:07:40 +02:00
Alice Gaudon 68ff977bcc ModelQuery: fix model instantiation field conflict for jointures 2020-09-02 11:56:09 +02:00
Alice Gaudon 9db09f83cb Fix ManyThroughModelRelation eagerloading 2020-08-30 18:56:27 +02:00
Alice Gaudon fae5c68cd0 Auth: always populate req.models.user, thus reducing db requests 2020-08-30 17:31:51 +02:00
Alice Gaudon 28349b791e Fix ModelQuery.count() 2020-08-30 13:31:19 +02:00
Alice Gaudon 649fe41be3 Mysql: set default charset to utf8mb4 on pools 2020-08-30 11:25:26 +02:00
Alice Gaudon 3b94d9beb5 Mysql: set default charset to utf8mb4 2020-08-30 10:36:25 +02:00
Alice Gaudon 3af1f4a4e5 Parse json bodies for application/*+json too 2020-08-28 17:40:04 +02:00
Alice Gaudon 25b1e71784 CSRFProtectionComponent: give more room for excluding requests 2020-08-28 16:52:49 +02:00
Alice Gaudon 813e10c4c7 ModelQuery: fix array of values to string conversion 2020-08-28 15:40:58 +02:00
Alice Gaudon fed54b9483 Fix access level of Model.autoFill() 2020-08-28 15:40:18 +02:00
Alice Gaudon 5bcc63a62c Models: add automatic created_at property value 2020-08-28 14:16:25 +02:00
Alice Gaudon f47f01f147 Models: add autoFill method for asynchronous default value load 2020-08-28 14:16:06 +02:00
Alice Gaudon 4ab615c457 Validator: break on first failed step to avoid further errors 2020-08-26 15:02:24 +02:00
Alice Gaudon 66ec3c0b47 Validator: add more information when exception is thrown in verifyStep 2020-08-26 14:56:34 +02:00
Alice Gaudon b245bec0d0 Lazy load ModelRelation query modifiers 2020-08-26 14:41:40 +02:00
Alice Gaudon 72c4f972a0 Cache model existence to support insert + update in the same transaction 2020-08-26 14:18:02 +02:00
Alice Gaudon 5930a85617 mysql count(): optimize requested fields 2020-08-26 14:05:06 +02:00
Alice Gaudon 38a9c6ad15 user registration: fix late user save for when a user id is needed 2020-08-26 14:03:41 +02:00
Alice Gaudon 84f2f7118a Csrf protection test: migrate to supertest 2020-08-05 12:06:21 +02:00
Alice Gaudon 76811dd0b8 Add more tests for Model 2020-08-05 10:45:13 +02:00
Alice Gaudon cc884f7096 ModelRelation eagerloading: don't make an SQL query when there is nothing to fetch 2020-07-29 16:17:48 +02:00
Alice Gaudon 8ca4c1a791 Security field validation: disclose missing field name 2020-07-29 16:16:42 +02:00
Alice Gaudon bdb7e55b00 Fix user approval backend 2020-07-28 15:03:18 +02:00
Alice Gaudon fb1a09baf8 ModelRelation/getOrFail: don't fail when 0 model where found 2020-07-28 15:02:50 +02:00
Alice Gaudon 37ed42b37d Fix model queries values not matching placeholder count 2020-07-28 15:02:08 +02:00
Alice Gaudon 31f974c0a6 Serve static files extra early to avoid useless middlewares execution 2020-07-28 12:11:41 +02:00
Alice Gaudon 272688da26 Reduce the amount of SQL requests made for authentication 2020-07-28 12:10:29 +02:00
Alice Gaudon 95632f5880 Fix throttler not triggering when maxCount > 1 2020-07-28 11:17:28 +02:00
Alice Gaudon 97b2d3b94c ModelQuery: throw an error when fed with nonexistent relation 2020-07-28 10:33:45 +02:00
Alice Gaudon df651f2661 Make BackendController helper accept external backend links for its view 2020-07-28 10:04:15 +02:00
Alice Gaudon 3a4755ce98 Give the redirectBack function its own Component back 2020-07-28 10:03:25 +02:00
Alice Gaudon 6b85a538c1 ManyModelRelation: fix eagerloading not working 2020-07-27 10:57:19 +02:00
Alice Gaudon 8746ad2ea3 ModelQuery: fix is null / is not null checks 2020-07-27 10:56:43 +02:00
Alice Gaudon 2bbe4db5fe ModelRelation: add post-query filters 2020-07-27 10:56:10 +02:00
Alice Gaudon e046a77aa8 ModelFactory: remove loadRelation method (unused) 2020-07-27 10:54:59 +02:00
Alice Gaudon 51addd947b Model: fix getById 2020-07-27 10:54:08 +02:00
Alice Gaudon 5ca1ddef43 Move responsability of table field from ModelFactory to Model (static) 2020-07-27 10:53:46 +02:00
Alice Gaudon be6e659ca2 ModelFactory: refactor make into create 2020-07-27 10:52:39 +02:00
Alice Gaudon b179afdaf5 nunjucks: override default dump filter to allow circular dependencies 2020-07-26 11:37:36 +02:00
Alice Gaudon 21b7def9e4 Fix some model refactor usages 2020-07-26 11:37:01 +02:00
Alice Gaudon a79e2292d7 Greatly simplify authentication system 2020-07-25 10:33:20 +02:00
Alice Gaudon 40181a973b Fix user schema 2020-07-24 16:13:15 +02:00
Alice Gaudon c0dd48d064 Fix missing fields by default and fix model construction flow 2020-07-24 15:40:40 +02:00
Alice Gaudon 24de732167 Improve approval mode component security, reliability and usage 2020-07-24 13:00:20 +02:00
Alice Gaudon 7a1656ea7f Change public_url config field name to base_url 2020-07-24 12:59:44 +02:00
Alice Gaudon 7f398c1d4e Make models extendable 2020-07-24 12:58:06 +02:00
Alice Gaudon f127abbc74 Finish promoting email views and add backend controller 2020-07-20 17:32:32 +02:00
Alice Gaudon 6618e874e0 mail: switch from deprecated TLS usage to STARTTLS 2020-07-20 11:29:10 +02:00
Alice Gaudon fe772c4e14 WebSocketListener: make cookies+session optional 2020-07-19 17:37:10 +02:00
Alice Gaudon 4291f73a55 WebSocketListener: add app field getter 2020-07-19 12:21:56 +02:00
Alice Gaudon 197b963e4c Add cache interface 2020-07-19 12:01:22 +02:00
Alice Gaudon e9a20c82ed Fix chmod check and relax mail 2020-07-15 15:39:08 +02:00
Alice Gaudon 583a5a92de Fix config file security check access path 2020-07-15 15:22:16 +02:00
Alice Gaudon 249098a587 Enforce config file permissions 2020-07-15 15:13:52 +02:00
Alice Gaudon 9ce345d99d Don't start in production if important security fields are misconfigured 2020-07-15 15:06:29 +02:00
Alice Gaudon 74dac9b314 Trust loopback proxy 2020-07-15 12:35:14 +02:00
Alice Gaudon eb935bf52a Fix auth redirect_uri chain 2020-07-15 12:31:07 +02:00
Alice Gaudon 634edda704 RedirectBackComponent: fix it and integrate it into NunjucksComponent 2020-07-15 10:24:01 +02:00
Alice Gaudon 6885f3da1c Add configurable maxAge for session cookie, defaults to 30 days 2020-07-14 15:06:46 +02:00
Alice Gaudon d6266e4396 Promote auth view to core 2020-07-14 15:06:30 +02:00
Alice Gaudon c2b35b473d Fix magic link buttons url scheme 2020-07-12 11:54:19 +02:00
Alice Gaudon 3561614f96 Promote some views to wms-core 2020-07-12 11:47:47 +02:00
Alice Gaudon 7da68f2715 Fix magic link lobby email display 2020-07-12 10:32:21 +02:00
Alice Gaudon 172b977fcf Improve reliability of RedirectBackComponent 2020-07-11 12:09:05 +02:00
Alice Gaudon 0e96a285ac Properly split routing in 2 steps: init, handle 2020-07-11 11:46:16 +02:00
Alice Gaudon 4b8a3b307d Integrate file upload form middleware into controllers 2020-07-11 11:08:57 +02:00
Alice Gaudon 6cf153c36b Use gzip compression 2020-07-09 14:18:05 +02:00
Alice Gaudon 6bdfc9b4b7 Add CSRF route excluders 2020-07-08 13:28:22 +02:00
Alice Gaudon 5b80c3ac07 Add 401 unauthorized http error 2020-07-08 11:33:13 +02:00
Alice Gaudon 724d59daba Fix core version grabbing 2020-07-08 11:09:27 +02:00
Alice Gaudon afdfadd34e Add CsrfProtectionComponent tests and fix missing promise await 2020-07-08 10:58:57 +02:00
Alice Gaudon 001e24488b Add option to disable command line arguments when instanciating an app 2020-07-08 09:52:16 +02:00
Alice Gaudon e72bb08a66 Add frontend support for custom flashed data keys 2020-07-06 10:42:46 +02:00
Alice Gaudon ca39c3e538 Fix mail settings and add mail from 2020-06-27 18:15:02 +02:00
Alice Gaudon b043513fe8 Bug fixes and app settings 2020-06-27 17:12:50 +02:00
Alice Gaudon 10257b8294 ManyModelRelation: add cloneReduceToOne method 2020-06-27 14:58:39 +02:00
Alice Gaudon ec5b2b9aa0 Revamp model system
- Add model relations
- Get rid of SQL_CALC_FOUND_ROWS (deprecated)
- Eager loading
2020-06-27 14:45:05 +02:00
Alice Gaudon c8157b7bb0 Add optional user approval mode 2020-06-16 15:28:44 +02:00
Alice Gaudon 94286dc833 auto update: add git fetch command 2020-06-15 12:58:27 +02:00
Alice Gaudon 9363873898 Format response for validation errors 2020-06-15 12:58:15 +02:00
Alice Gaudon 9d63564719 Promote ValidationBag error handling to Application wide level 2020-06-14 21:48:50 +02:00
Alice Gaudon fa3e5bdb19 Support route parameter regex in controller route function 2020-06-14 21:48:19 +02:00
Alice Gaudon fa42b8991b Add query customization to model pagination 2020-06-14 21:47:51 +02:00
Alice Gaudon 362343171c Add non-verbose mode for mysql query logging 2020-06-14 21:47:36 +02:00
Alice Gaudon a15d496c53 Use formidable instead of multer 2020-06-14 21:47:18 +02:00
Alice Gaudon adf380c19d Add request parsing middlewares to controllers 2020-06-14 17:33:37 +02:00
Alice Gaudon a2ef0f6a42 Fix http requests logging 2020-06-14 16:04:50 +02:00
Alice Gaudon 98566811c3 Provide extended option to urlencoded middleware 2020-06-14 15:08:56 +02:00
Alice Gaudon 6026037aa8 Add support for authenticating user against custom request-proof matching 2020-06-14 11:59:02 +02:00
Alice Gaudon 8755a152a6 Add PUT and DELETE REST methods to controllers 2020-06-14 11:43:49 +02:00
Alice Gaudon e63b5d21fe Add left join to query builder 2020-06-14 11:43:31 +02:00
Alice Gaudon e965303777 Add logging full http requests cli arg 2020-06-14 11:43:00 +02:00
Alice Gaudon e2cb322001 Fix some models properties 2020-06-14 11:41:44 +02:00
Alice Gaudon 499c66240b Add command line interface and allow rolling back migrations 2020-06-05 14:32:39 +02:00
Alice Gaudon 91b9e51a7d Wrap each migration in a transaction 2020-06-04 17:27:05 +02:00
Alice Gaudon 0970ff3116 Make model primaryKey dynamic (allows for composite primary keys) 2020-06-04 14:59:41 +02:00
Alice Gaudon b85fbe6c21 Log accept header for every request 2020-06-04 10:15:24 +02:00
Alice Gaudon 6a4b44035e Add MailController helper class 2020-06-03 14:14:42 +02:00
Alice Gaudon 8ccf073139 Add MagicLinkAuthController helper class 2020-06-03 13:44:47 +02:00
Alice Gaudon 384bd2fc17 Fix magic_link view data 2020-05-10 00:26:15 +02:00
Alice Gaudon 309344d1c0 Fix missing fields when creating a new MagicLink 2020-05-09 23:38:06 +02:00
Alice Gaudon e574b6e778 Add magic links 2020-05-09 23:23:19 +02:00
Alice Gaudon 26fdc94e9b Add UserEmail.fromUser() 2020-05-05 17:17:29 +02:00
Alice Gaudon 924104f700 Add auto update component 2020-05-05 15:19:23 +02:00
Alice Gaudon 424a86fe53 Validator: add custom value transform function for display
+ Version 0.4.22
2020-05-04 22:06:20 +02:00
Alice Gaudon 0591daf93f Fix route regexps aren't global
+ Version 0.4.21
2020-05-02 11:35:04 +02:00
Alice Gaudon fc5344c629 Fix bad place of use for redis pass 2020-04-25 18:32:00 +02:00
Alice Gaudon 6868411aa7 Add configurable redis pass 2020-04-25 18:26:46 +02:00
Alice Gaudon e1b5e7fdad Add Controller.validate and automatically handle validation errors 2020-04-25 16:09:47 +02:00
Alice Gaudon 49fc92df5c Add UserEmail.getMainFromUser 2020-04-25 16:09:13 +02:00
Alice Gaudon b13d70bfc0 Improve validation messages and add more validation rules 2020-04-25 16:08:53 +02:00
Alice Gaudon 8882df4c0d Improve verbosity of auth error 2020-04-25 16:08:20 +02:00
Alice Gaudon 0207ad5001 Add register callback to optionally save more models 2020-04-25 09:36:20 +02:00
Alice Gaudon faeafbd68d Pass session to auth methods 2020-04-25 09:35:49 +02:00
Alice Gaudon 9b7ec1e516 Nunjucks: distinguish application version from core version 2020-04-25 09:35:25 +02:00
Alice Gaudon d676caa3dc Add validate method to Controller (for forms) 2020-04-25 09:33:33 +02:00
Alice Gaudon b401c9732c Add minLength and maxLength to Validator 2020-04-25 09:33:15 +02:00
Alice Gaudon de777bc844 Make redis prefix configurable 2020-04-25 09:32:59 +02:00
Alice Gaudon ad20894565 Add auth utils parts 2020-04-24 12:34:41 +02:00
Alice Gaudon 7db6c0e0c7 Add retry in indication to TooManyRequests http error 2020-04-24 11:17:58 +02:00
Alice Gaudon 3397fd8216 Fix jail logic 2020-04-24 11:13:29 +02:00
Alice Gaudon 2d22e702ab Fix TooManyRequests http code 2020-04-24 11:11:03 +02:00
Alice Gaudon 7cac813a24 Add throttling utils
See https://gitlab.com/ArisuOngaku/wms/issues/35
2020-04-24 10:54:21 +02:00
Alice Gaudon 3bf4f93b74 Force an application to register migrations 2020-04-23 16:03:54 +02:00
Alice Gaudon 6469de499f Add NunjucksComponent 2020-04-23 11:18:23 +02:00
Alice Gaudon 1c661cee5e Switch to local npm registry publishing and move ts type deps to dev 2020-04-23 11:16:05 +02:00
Alice Gaudon b94e772269 Add missing dependencies and remove useless index.js 2020-04-22 18:06:15 +02:00
Alice Gaudon 662d12df68 Add sources 2020-04-22 17:49:58 +02:00