Miroslav Bajtoš
aa92412db3
app.middleware: verify serial exec of handlers
...
Add a test verifying that middleware handlers are executed serially.
2014-11-12 10:09:20 +01:00
Miroslav Bajtoš
ae7d99682b
Simplify `app.defineMiddlewarePhases`
...
Refactor the implementation to use the new method `phaseList.zipMerge`.
This is commit is changing the behaviour in the case when
the first new phase does not exist in the current list.
Before the change, all new phases were added just before the "routes"
phase.
After this change, new phases are added to the head of the list,
until an existing phase is encountered, at which point the regular
merge algorithm kicks in.
Example:
app.defineMiddlewarePhases(['first', 'routes', 'subapps']);
Before the change: code throws an error - 'routes' already exists.
After the change: phases are merged with the following result:
'first', 'initial', ..., 'routes', 'subapps', ...
2014-11-12 08:59:56 +01:00
Miroslav Bajtoš
4474f8b029
Merge pull request #786 from strongloop/feature/define-middleware-phases
...
Implement `app.defineMiddlewarePhases`
2014-11-12 08:16:49 +01:00
Raymond Feng
f803ecec55
Make sure loopback has all properties from express
2014-11-11 11:27:39 -08:00
Miroslav Bajtoš
98d439050a
Implement `app.defineMiddlewarePhases`
...
Implement method for registering (new) middleware phases.
- If all names are new, then the phases are added just before
the "routes" phase.
- Otherwise the provided list of names is merged with the existing
phases in such way that the order of phases is preserved.
Example
// built-in phases:
// initial, session, auth, parse, routes, files, final
app.defineMiddlewarePhases('custom');
// new list of phases
// initial, session, auth, parse,
// custom,
// routes, files, final
app.defineMiddlewarePhases([
'initial', 'postinit', 'preauth', 'routes', 'subapps'
]);
// new list of phases
// initial,
// postinit, preauth,
// session, auth, parse, custom,
// routes,
// subapps,
// files, final
2014-11-11 19:45:37 +01:00
Miroslav Bajtoš
beb55ee9f4
Merge pull request #787 from strongloop/feature/app-middleware-v2
...
Implement app.middlewareFromConfig
2014-11-11 19:41:46 +01:00
Miroslav Bajtoš
5578d59631
Implement app.middlewareFromConfig
...
Implement a function registering a middleware using a factory function
and a JSON config.
Example:
app.middlewareFromConfig(compression, {
enabled: true,
phase: 'initial',
config: {
threshold: 128
}
});
2014-11-11 18:00:19 +01:00
Miroslav Bajtoš
038c6a454e
middleware/token: store the token in current ctx
2014-11-11 11:04:41 +01:00
Miroslav Bajtoš
8f5aea3e3b
Fix `loopback.getCurrentContext`
...
- ensure the method is always defined
- return `null` when the context is not active
(we are not inside a request-handling chain)
2014-11-11 11:04:41 +01:00
Miroslav Bajtoš
4e1433b519
Middleware phases - initial implementation
...
Modify the app and router implementation, so that the middleware is
executed in order defined by phases.
Predefined phases:
'initial', 'session', 'auth', 'parse', 'routes', 'files', 'final'
Methods defined via `app.use`, `app.route` and friends are executed
as the first thing in 'routes' phase.
API usage:
app.middleware('initial', compression());
app.middleware('initial:before', serveFavicon());
app.middleware('files:after', loopback.urlNotFound());
app.middleware('final:after', errorHandler());
Middleware flavours:
// regular handler
function handler(req, res, next) {
// do stuff
next();
}
// error handler
function errorHandler(err, req, res, next) {
// handle error and/or call next
next(err);
}
2014-11-10 19:50:58 +01:00
Raymond Feng
586ea35071
Allows ACLs/settings in model config
2014-11-07 11:14:40 -08:00
Miroslav Bajtoš
4fdcbd16af
rest middleware: clean up context config
...
Modify `loopback.rest()` to read the configuration for
`loopback.context` from `app.get('remoting')`, which is the approach
used for all other configuration options related to the REST transport.
2014-11-05 09:13:45 +01:00
Raymond Feng
885f4e047d
Enable the context middleware from loopback.rest
2014-11-05 09:13:45 +01:00
Raymond Feng
246f38c05d
Add context propagation middleware
...
- Implement the middleware `loopback.context`
- Inject context into juggler and strong-remoting
- Make http context optional and default to false
- Optionally mount context middleware from `loopback.rest`
2014-11-05 09:13:44 +01:00
Miroslav Bajtoš
e1b5d1edae
Merge pull request #717 from strongloop/feature/add-test-for-supported-content-types
...
Add test for `remoting.rest.supportedTypes`
2014-11-03 18:49:34 +01:00
Miroslav Bajtoš
edd464aca5
Expose path to the built-in favicon file
...
The path is available via `loopback.faviconFile`.
2014-11-03 10:00:24 +01:00
Miroslav Bajtoš
ead9d706e6
Add test for `remoting.rest.supportedTypes`
2014-10-31 10:39:13 +01:00
Miroslav Bajtoš
292c7ad497
Revert "rest handler options"
2014-10-31 10:06:57 +01:00
Guilherme Cirne
ba6bf3f41b
REST handler options.
2014-10-30 16:58:30 -02:00
Raymond Feng
67f8b37562
The elapsed time in milliseconds can be 0 (less than 1 ms)
2014-10-27 15:22:17 -07:00
Miroslav Bajtoš
fec8234c4c
Merge pull request #616 from jpizarrom/master
...
added email custom headers in user verify
2014-10-24 19:51:10 +02:00
Juan Pizarro
4098bec2c6
User: custom email headers in verify
2014-10-24 14:42:49 -03:00
Raymond Feng
b98ada282f
Merge pull request #660 from strongloop/feature/add-realm-support
...
Add realm support
2014-10-24 08:27:28 -07:00
Raymond Feng
46d1430023
Add realm support
2014-10-23 11:10:39 -07:00
Raymond Feng
94033312e6
Merge pull request #681 from strongloop/feature/fix-issue-679
...
Make sure GET /:id/exists returns 200 {exists: true|false}
2014-10-23 07:40:52 -07:00
Miroslav Bajtoš
b57cd3e409
User: fix `confirm` permissions
...
Enable authentication for all User unit-tests to check that the ACLs are
correctly configured.
Fix the rule for `confirm` - the correct permission is `ALLOW`, not
`ACL.ALLOW`.
2014-10-23 13:19:43 +02:00
Raymond Feng
e0ed755ed3
Make sure GET /:id/exists returns 200 {exists: true|false}
...
https://github.com/strongloop/loopback/issues/679
2014-10-22 14:39:39 -07:00
Fabien Franzen
568c8662b4
Support per-model and per-handler remoting options
...
Allow the developer to pass custom `remoting` options via Model
settings, e.g.
PersistedModel.extend(
'MyModel',
{ name: String },
{
remoting: { normalizeHttpPath: true }
});
Also add `options` arg to `app.handler`, this object is passed directly
to strong-remoting handler.
2014-10-22 09:54:15 +02:00
Miroslav Bajtoš
80020eb273
lib/application: improve URL building algo
...
When running on Unix and no hostname is specified, use `0.0.0.0`
as the hostname instead of `localhost`.
When running on Windows and the hostname is either not specified or
it is `0.0.0.0` or `::`, use `localhost` in the URL. The reason is
that Windows cannot open URLs using `0.0.0.0` as a hostname.
2014-10-20 13:47:24 +02:00
Miroslav Bajtoš
01d17e636a
test: run more tests in the browser
...
Add two more test files to `test/karma.conf.js`:
- test/loopback.test.js
- test/model.application.test.js
2014-10-14 08:58:17 +02:00
Miroslav Bajtoš
b1e0edb22b
test: verify exported models
2014-10-14 08:58:17 +02:00
Miroslav Bajtoš
b8e877c5e5
test: remove infinite timeout
...
The infinite timeout was useful when debugging, which is not a good
reason for keeping it around when not debugging.
2014-10-14 08:58:17 +02:00
Miroslav Bajtoš
df9fe90d35
Auto-load and register built-in `Checkpoint` model
2014-10-14 08:58:16 +02:00
Raymond Feng
242b44ed2b
Skip static ACL entries that don't match the property
2014-10-13 16:45:36 -07:00
Miroslav Bajtoš
1fe0110849
Dismantle `lib/models`.
...
- Move core models `Model` and `PersistedModel` to `lib/`.
- Move `AccessContext` class to `lib/`, since it is not a model.
- Move all other built-in models to `common/models`.
This is a preparation for extracting model definitions to JSON files.
By splitting the change into multiple commits, git is able to keep track
of file moves (renames).
2014-10-13 12:09:27 +02:00
Miroslav Bajtoš
846a0b0074
models/change: fix `id` property definition
...
Remove the flag `generated:true`, as it does not work together with
a custom `setter.id` function.
2014-10-10 19:10:42 +02:00
Miroslav Bajtoš
aac230679f
Merge pull request #555 from strongloop/feature/include-remote-method-aliases
...
PersistedModel: add remote method aliases
2014-09-12 11:42:20 +02:00
Raymond Feng
28754519d4
Merge pull request #522 from clarkorz/feature/link-with-data
...
Support data field as body for link operation
2014-09-11 16:59:27 -07:00
Raymond Feng
1e41064a87
Merge pull request #529 from Coobaha/fix/user_include
...
user#login include server crash fix
2014-09-11 16:57:58 -07:00
Miroslav Bajtoš
06b65ccf7e
PersistedModel: add remote method aliases
...
Ensure all loopback 1.x method names are available in loopback 2.x too.
2014-09-10 17:35:02 +01:00
Fabien Franzen
033e771528
Fix require
2014-09-06 10:55:16 +02:00
Ritchie Martori
6a604de157
Merge pull request #510 from strongloop/fix/remoting-type-conversion
...
Fix coercion for remoting on vanilla models
2014-09-03 11:55:04 -07:00
Ritchie Martori
58e36514d6
Fix coercion for remoting on vanilla models
2014-09-03 11:33:20 -07:00
Raymond Feng
43dbfa288e
Merge pull request #469 from britztopher/mailconnector-transports-issue460
...
Mailconnector transports issue460
2014-09-03 08:50:03 -07:00
Alexander Ryzhikov
58538f02b7
user#login include server crash fix
...
Signed-off-by: Alexander Ryzhikov <coobaha@gmail.com>
2014-09-03 09:58:49 +04:00
Clark Wang
2452dd1092
Add tests for hasManyThrough link with data
...
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-01 09:28:13 +08:00
Fabien Franzen
1067c94bf6
Tiny fix: correct url format
2014-08-30 17:00:36 +02:00
Fabien Franzen
33f3ba4549
Fix embedsMany/findById to return proper 404 response
2014-08-30 16:54:14 +02:00
Raymond Feng
9b97014b52
Merge pull request #504 from fabien/feature/embeds-one-remoting
...
Enable remoting for embedsOne relation
2014-08-29 09:30:49 -07:00
Raymond Feng
e856f81d09
Merge pull request #503 from fabien/feature/scope-where
...
Allow 'where' argument for scoped count API
2014-08-29 09:30:38 -07:00
Miroslav Bajtoš
26b67ba757
registry: warn when dataSource is not specified
...
Modify `registry.configureModel()` to log a warning when `dataSource`
optiont is not specified at all.
Users should provide `dataSource: null` when the model is intentionally
not attached to any data-source.
2014-08-26 18:04:06 +02:00
Ritchie Martori
7dde6466e5
Only validate dataSource when defined ( Fixes #482 )
2014-08-26 17:49:15 +02:00
Fabien Franzen
6cfd1bb523
Fix tests
2014-08-26 15:25:45 +02:00
Jaka Hudoklin
19155242c1
Enable remoting for embedsOne relation
...
Signed-off-by: Jaka Hudoklin <jakahudoklin@gmail.com>
2014-08-26 15:25:45 +02:00
Fabien Franzen
fc0c96bdc2
Allow 'where' argument for scoped count API
...
Note that the return value will be non-rooted, which is actually what
the
non-scoped /count method returns as well - fixes inconsistency.
2014-08-26 14:41:36 +02:00
britztopher
ba48d042b8
added test and fixed changing passed in object within ctor
2014-08-14 15:44:36 -04:00
Raymond Feng
1c61cedee7
Make sure scoped methods are remoted
...
See https://github.com/strongloop/loopback/issues/454 . It's regression in 2.x.
2014-08-08 15:55:47 -07:00
Raymond Feng
9fb0977433
Pass in remotingContext for ACL
...
See https://github.com/strongloop/loopback/issues/451
2014-08-07 22:19:27 -07:00
Raymond Feng
a9e77e0e23
Merge pull request #435 from fabien/feature/deep-remoting
...
Implement Model.nestRemoting
2014-08-07 10:38:09 -07:00
Raymond Feng
0affc65c67
Merge pull request #427 from fabien/feature/relation-paths
...
Allow custom relation path (http) - enable hasOne remoting access
2014-08-07 10:32:13 -07:00
Fabien Franzen
539702ab3d
Inherit hooks when nesting
...
Note that for now, the hook ctx.instance will be the root/entry object.
Added `mounted` event - should be useful in other ways too.
2014-08-05 12:14:39 +02:00
Fabien Franzen
18c647a9bb
Changed options.path to options.http.path
2014-08-05 09:10:43 +02:00
Fabien Franzen
42f938ed72
Fix test to be more specific
2014-08-04 18:47:15 +02:00
Fabien Franzen
9be8d11431
Implement Model.nestRemoting
...
Explicitly enable another level of nesting/accessing relations; limited
to a depth of 2 levels.
2014-08-04 18:27:50 +02:00
Raymond Feng
b66a36fd3c
Merge pull request #423 from strongloop/feature/add-remoting-for-exists
...
Feature/add remoting for exists
2014-08-04 08:44:16 -07:00
Fabien Franzen
66fe60e6ca
Allow custom relation path (http) - enable hasOne remoting access
2014-08-01 11:25:28 +02:00
Raymond Feng
ad43d03ebb
Expose Model.exists over HTTP HEAD
2014-07-30 21:57:45 -07:00
Raymond Feng
0590eaf278
Merge pull request #419 from fabien/feature/new-relations
...
Integration of the new juggler relations: embedsMany, referencesMany
2014-07-30 16:32:33 -07:00
Fabien Franzen
b9f27d71a8
Integration test: referencesMany
2014-07-30 15:01:22 +02:00
Fabien Franzen
514db0bc66
Integration test: embedsMany
2014-07-30 13:24:40 +02:00
Raymond Feng
e5b0e8cd70
Map exists to HEAD for REST
2014-07-28 09:37:50 -07:00
Raymond Feng
567e2530d7
Build the email verification url from app context
...
https://github.com/strongloop/loopback/issues/408
2014-07-26 22:39:42 -07:00
Raymond Feng
5bb4cde593
Update test case to remove usage of deprecated express apis
2014-07-26 14:37:13 -07:00
Raymond Feng
af26e09845
Emit a 'modelRemoted' event by app.model()
...
This event will be listened by loopback-explorer so that models remoted
after the explorer is initiated will be added to the api specs
2014-07-24 17:00:27 -07:00
Raymond Feng
ac1428eff5
Fix for email transports
2014-07-23 22:09:24 -07:00
Raymond Feng
13c876c154
Merge pull request #387 from strongloop/feature/fix-base-model
...
Set up the base model based on the connector types
2014-07-22 10:58:33 -07:00
Raymond Feng
7337f0a0de
Enhance the base model assertions
2014-07-22 10:57:42 -07:00
Raymond Feng
335bae4b46
Merge branch 'master' into feature/fix-issue-377
2014-07-22 10:49:20 -07:00
Raymond Feng
21b8609ee2
Report error for User.confirm()
...
See https://github.com/strongloop/loopback/issues/377
2014-07-22 10:42:22 -07:00
Raymond Feng
643293cc25
Set up the base model based on the connector types
2014-07-22 10:38:14 -07:00
Raymond Feng
74e9ff75e3
Merge pull request #385 from offlinehacker/master
...
Validate username uniqueness
2014-07-21 15:26:01 -07:00
Raymond Feng
0dae813d5f
Merge pull request #375 from strongloop/feature/upgrade-to-nodemailer-1.x
...
Upgrade to nodemailer 1.0.1
2014-07-21 11:58:17 -07:00
Miroslav Bajtoš
eb5ef04b6a
Remove `loopback.compat.usePluralNamesForRemoting`
...
The `usePluralNamesForRemoting` was added in January 2014 for users
upgrading from LoopBack 1.5 or older.
2014-07-21 16:56:46 +02:00
Jaka Hudoklin
90094e5e86
Validate username uniqueness
...
Signed-off-by: Jaka Hudoklin <jakahudoklin@gmail.com>
2014-07-19 14:18:21 +02:00
Raymond Feng
e5b64c6143
Upgrade to nodemailer 1.0.1
2014-07-16 12:40:15 -07:00
Raymond Feng
79f504a3c7
Merge branch 'master' into 2.0
2014-07-16 09:09:07 -07:00
Raymond Feng
7b36196561
Merge pull request #362 from strongloop/feature/remoting-add-remove
...
Add a test case for hasMany through add/remove remoting
2014-07-15 16:15:27 -07:00
Raymond Feng
54b13f4feb
Upgrade to loopback-datasource-juggler@1.7.0
2014-07-15 16:15:02 -07:00
Raymond Feng
c5c28aa634
Merge pull request #368 from strongloop/feature/loopback-base-model
...
Refactor modelBuilder to registry and set up default model
2014-07-15 08:38:43 -07:00
Raymond Feng
3c13ce5a8f
Refactor modelBuilder to registry and set up default model
2014-07-15 08:37:59 -07:00
Raymond Feng
76b6dc10d9
Add a test case for credentials/challenges
2014-07-15 08:20:47 -07:00
Miroslav Bajtoš
31ef6394b4
checkpoint: fix `current()`
...
Fix the query in `Checkpoint.current()` to correctly specify sorting
`seq DESC`. Before this change, the first checkpoint was returned as the
current one.
2014-07-11 17:07:22 +02:00
Raymond Feng
74a39f3fc2
Refactor email verification tests into a new group
2014-07-08 08:54:50 -07:00
Raymond Feng
0c67b1e781
Add an option to honor emailVerified
...
See https://github.com/strongloop/loopback/pull/215
2014-07-07 14:09:45 -07:00
Raymond Feng
f649c92bcf
Refine the test cases for relation REST APIs
2014-07-03 11:18:34 -07:00
Miroslav Bajtoš
f0cc5f7534
test: add check of Model remote methods
...
The test ensures that Model has all methods listed in docs:
http://docs.strongloop.com/display/LB/Exposing+models+over+a+REST+API
See also #359 .
2014-07-03 08:19:41 +02:00
Raymond Feng
0525f2c896
Adjust the REST mapping for add/remove
2014-07-02 23:06:11 -07:00
Raymond Feng
b221714b38
Add a test case for hasMany through add/remove remoting
2014-07-02 18:09:05 -07:00
Raymond Feng
217c9fa348
Fix the typo and add Bearer token support
...
See https://github.com/strongloop/loopback/issues/333
2014-07-02 09:02:13 -07:00
Miroslav Bajtoš
8ea11ea955
Merge branch 'master' into 2.0
...
Land the pull request #357
> app: update `url` on `listening` event
2014-07-01 16:18:00 +02:00