Commit Graph

695 Commits

Author SHA1 Message Date
Raymond Feng fb88d98870 Remove trailing spaces 2015-02-18 09:13:47 -08:00
crandmck ea35a2f48d Fix API docs per #1041 2015-02-10 15:18:34 -08:00
crandmck 538e9f0c62 Fix API docs to add proper callback doc per #1041 2015-02-10 15:13:55 -08:00
Ritchie Martori 4b6dcd6271 Document user settings 2015-02-04 14:09:01 -08:00
Raymond Feng 4bf5970f9c Map not found to 404 for hasOne 2015-02-03 11:13:15 -08:00
Raymond Feng bbba49d99c Enable remoting for hasOne relations 2015-01-29 22:33:34 -08:00
Miroslav Bajtoš e4adbf8366 Merge pull request #1038 from strongloop/fix/remove-usage-of-deprecated-req.param
Remove usages of deprecated `req.param()`
2015-01-27 09:42:43 +01:00
Rand McKinney 68c0f1e15a Document options for persistedmodel.save() 2015-01-23 09:54:14 -08:00
crandmck fc31f37a83 Fix JSdocs per #888 2015-01-22 17:01:31 -08:00
Miroslav Bajtoš a77b3bbac7 Remove usages of deprecated `req.param()`
Express has recently deprecated `req.param()` to force developers
to be explicit about the source of the value. To avoid deprecation
warnings, this commit replaces all calls of `req.param()` with a
simplified inline version.
2015-01-21 19:27:53 +01:00
Ron Edgecomb a028d9d198 Add error code property to known error responses.
Enhance the error objects with a `code` property containing
a machine-readable string code describing the error, for example
INVALID_TOKEN or USER_NOT_FOUND.

Also improve 404 error messages to include the model name.
2015-01-21 19:04:47 +01:00
bitmage c28698c1ba don't send queries to the DB when no changes are detected 2015-01-10 11:28:55 -07:00
Raymond Feng 16210e0f79 Allow accessType per remote method 2015-01-07 14:40:09 -08:00
Clark Wang 94b2a45a6c fix nestRemoting is nesting hooks from other relations
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2015-01-01 15:26:58 +08:00
Miroslav Bajtoš 4744aa6920 server-app: make _sortLayersByPhase stable
Fix the phase-sorting algorithm to use a stable sorting algorithm,
since the built-in `Array.prototype.sort` is not stable.
2014-12-15 08:14:26 +01:00
Miroslav Bajtoš 84af4194fb Rework phased middleware, fix several bugs
Bugs fixed:

 - express helpers like `req.get` are now available in middleware
   handlers registered via `app.middleware`

 - `req.url` does not include the mountpath prefix now, this is
   consistent with the behaviour of `app.use`

The implementation of phased middleware was completely rewritten.
 - We no longer use Phase and PhaseList objects from loopback-phase.
 - Handler functions are registered via the `Layer` mechanism used by
   express router.
 - The app keeps the layers sorted according to phases.
2014-12-12 13:25:35 +01:00
Clark Wang 9c147f1b25 fix jshint errors
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-12-10 19:43:55 +08:00
Clark Wang 7a3e254403 test if cb exists
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-12-10 19:03:48 +08:00
Clark Wang b204367aa6 fix nested remoting function throwing error will crash app
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-12-10 12:04:56 +08:00
Ryan Graham 7c0b2e83eb Remove unused underscore dependency 2014-12-02 21:53:30 -08:00
Clark Wang a12c2ece28 Prepend slash for nested remoting paths
Fix remoting paths of relation methods to correctly show
in API Explorer.
2014-11-27 09:56:44 +01:00
Raymond Feng a9b4df1f2d Expose more loopback middleware for require 2014-11-19 11:32:22 -08:00
Miroslav Bajtoš 2baa4b03a3 Scope app middleware to a list of paths
Add a new argument to `app.middleware` allowing developers
to restrict the middleware to a list of paths or regular expresions.

Modify `app.middlewareFromConfig` to pass `config.paths` as the second
arg of `app.middleware`.

Examples:

    // A string path (interpreted via path-to-regexp)
    app.middleware('auth', '/admin', ldapAuth);

    // A regular expression
    app.middleware('initial', /^\/~(admin|root)/, rejectWith404);

    // A list of scopes
    app.middleware('routes', ['/api', /^\/assets/.*\.json$/], foo);

    // From config
    app.middlewareFromConfig(
      handlerFactory,
      {
        phase: 'initial',
        paths: ['/scope', /^\/(a|b)/]
      });
2014-11-19 15:42:54 +01:00
Raymond Feng bd12335542 Merge pull request #814 from strongloop/feature/fix-issue-811
Fix the model name for hasMany/through relation
2014-11-18 10:26:54 -08:00
Miroslav Bajtoš 7581ccf260 Merge pull request #796 from strongloop/feature/cleanup-middleware-config-opts
Cleanup middleware config opts
2014-11-18 19:10:07 +01:00
Raymond Feng 4c7c8901ff Fix the model name for hasMany/through relation 2014-11-17 09:44:20 -08:00
Alex Voitau 6f1b5f61ed Minor: update jsdoc for PersistedModel.updateAll 2014-11-14 20:06:08 -08:00
Miroslav Bajtoš 330292c7f2 server-app: improve jsdoc comments 2014-11-14 09:52:59 +01:00
Miroslav Bajtoš 7647339675 server-app: middleware API improvements
- Rename `config.config` to `config.params`
 - Modify methods to return `this` (fluent API)
2014-11-14 09:52:26 +01:00
Miroslav Bajtoš 22827b6538 Merge pull request #790 from strongloop/feature/merge-phases
Simplify `app.defineMiddlewarePhases`
2014-11-13 09:09:28 +01:00
Miroslav Bajtoš 7fc66a182e Move middleware sources to `server/middleware`
The new location allows developer to use the following identifiers
when loading the middleware using the new declarative style:

    app.middlewareFromConfig(
      require('loopback/server/middleware/rest'),
      { phase: 'routes' });

    app.middlewareFromConfig(
      require('loopback/server/middleware/url-not-found'),
      { phase: 'final' });
2014-11-12 12:44:34 +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 747da886c9 Merge pull request #745 from strongloop/feature/allow-acls-settings-config
Allows ACLs/settings in model config
2014-11-07 11:15:08 -08:00
Raymond Feng 586ea35071 Allows ACLs/settings in model config 2014-11-07 11:14:40 -08:00
crandmck 3cdbd274d2 Add API doc for context middleware - see #337 2014-11-06 14:07:34 -08:00
Rand McKinney 21b28446bf Update persisted-model.js
Note the PersistedMode.create() can take an array of instances, per #710.
2014-11-06 10:56:37 -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
Rand McKinney 0e35c1877c Changes to JSdoc comments
Moved faviconFile to class properties.
2014-11-04 10:59:38 -08:00
Miroslav Bajtoš 48d4ed28d3 Coding style cleanup (Gruntfile, lib)
- Gruntfile: add `jshint` and `jscs` as deps of `grunt test`
 - Gruntfile: temporarily disable checks of `test` scripts
 - .jscsrc: relax jsdoc validation
 - .jshintrc: relax the rule for property access via dot notation
 - lib: fix remaining style issues
2014-11-04 08:25:35 +01:00
Rob Halff 33096dafa7 Enable jscs for `lib`, fix style violations 2014-11-04 08:25:33 +01:00
Rand McKinney 3d201028e1 Remove doc for debug function 2014-11-03 16:26:33 -08:00
Rand McKinney c388696d3f Update registry.js
Add missing quotes to examples in JSdoc.
2014-11-03 16:02:48 -08:00
Miroslav Bajtoš f8c5fc8f6a Merge pull request #726 from strongloop/feature/apidocs-for-loopback.static
Add API docs for `loopback.static`.
2014-11-03 18:33:41 +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š 1c083f1030 Add API docs for `loopback.static`. 2014-11-03 09:20:54 +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 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
Rob Halff b54c70c348 Use === to compare with 0 2014-10-22 18:47:53 +02:00
Rob Halff 84b4fea666 use singlequotes 2014-10-22 18:47:53 +02:00
Rob Halff 4ebf10ae0d add missing semicolons 2014-10-22 18:47:52 +02: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
Rand McKinney f511bd38c9 Fix findById callback signature 2014-10-15 13:45:15 -07:00
Rand McKinney e4118c367d JSdoc fixes
Ad:
 -  update is alias for updateAll.
 -  Make callback optional for save method
2014-10-15 13:40:14 -07:00
Miroslav Bajtoš 20026a9d04 Fix places using undefined variables
Also enable jshint option "undefined" in order to catch these kind
of errors in the future.
2014-10-15 16:44:00 +02:00
crandmck 2f4a54d93c Clean up jsdoc comments
Add class properties, expose some methods that should have
been documented, etc.
2014-10-15 09:42:24 +02:00
Miroslav Bajtoš 0906a6f5b3 models: move Change LDL def into a json file 2014-10-14 09:04:43 +02:00
Miroslav Bajtoš 6cbc231fba models: move Checkpoint LDL def into a json file 2014-10-14 09:04:43 +02:00
Miroslav Bajtoš 461ae92c1c models: move Role LDL def into a json file 2014-10-14 09:04:43 +02:00
Miroslav Bajtoš e9c86163aa models: move RoleMapping def into its own files 2014-10-14 09:04:43 +02:00
Miroslav Bajtoš 7c01d59d80 models: move ACL LDL def into a json file 2014-10-14 09:04:43 +02:00
Miroslav Bajtoš ef890d5f26 models: move Scope def into its own files 2014-10-14 08:58:17 +02:00
Miroslav Bajtoš 5f20652241 models: move AccessToken LDL def into a json file 2014-10-14 08:58:17 +02:00
Miroslav Bajtoš 1e6beabbd2 models: move Application LDL def into a json file
Move some of the comments describing properties into jsdoc.
2014-10-14 08:58:17 +02:00
Miroslav Bajtoš 551d109a20 models: move Email LDL def into `email.json` 2014-10-14 08:58:17 +02:00
Miroslav Bajtoš 920d3be6a3 models: move User LDL def into `user.json` 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
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š 3a0f793c9b Register built-in models in a standalone file
Move the code registering built-in models to a new file
`lib/builtin-models.js`.
2014-10-13 12:09:19 +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
Rand McKinney 223fa7a442 Added class properties jsdoc. 2014-10-08 17:26:45 -07:00
Rand McKinney 7aca64a660 Fixed up JS Doc 2014-10-08 15:07:03 -07:00
Rand McKinney 6de9645f45 Added class properties jsdoc. 2014-10-06 10:15:26 -07:00
Rand McKinney 8af1b96a47 Document ACL class properties 2014-10-01 17:21:22 -07:00
Rand McKinney abdaa4a1b9 Add properties JSdoc. 2014-10-01 16:25:03 -07:00
Krishna Raman b5516757ae Move looback remote connector to npm module 2014-10-01 14:48:34 -07:00
Ritchie Martori 0e8c019534 Merge pull request #601 from strongloop/doc/user-props
Document user class properties
2014-10-01 13:38:55 -07:00
Ritchie Martori 8c452b9ded Document user class properties 2014-10-01 10:33:36 -07:00
Ritchie Martori 712478a50c Add Model.disableRemoteMethod() 2014-09-29 13:05:31 -07: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
zxvv 4fdee0aa6d Fix last commit, which misplaced an ACL.
Move the ACL inside "acls".
Signed-off-by: Carey Richard Murphey <rich@murphey.org>
2014-09-07 11:26:10 -05:00
zxvv 5255120a22 Add an ACL to User, to allow everyone to execute User.passwordReset().
This is intended to permit users who have forgotten their
password, and are thus unauthenticated, to request a reset.

Credit goes to John Murphy who proposed the ACL in Google Groups here:
https://groups.google.com/forum/#!searchin/loopbackjs/passwordReset$20ACL/loopbackjs/UPyhg7KS-9k/_M_9-YpUKmIJ

Signed-off-by: Carey Richard Murphey <rich@murphey.org>
2014-09-06 19:05:32 -05: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
Raymond Feng 9fb60174f9 Merge pull request #519 from fabien/fix/error-response
Fix embedsMany/findById to return proper 404 response
2014-09-02 22:42:40 -07:00
Rand McKinney 1af1ec2c43 Update model.js
Correct event docs per https://groups.google.com/forum/#!topic/loopbackjs/61qd--Xkowo:
 - `deleted` event takes instance arg, not id.
 - Add docs for `set` event
2014-09-02 11:11:36 -07:00
Clark Wang 4387957a45 Restrict: only hasManyThrough relation can have additional properties
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-01 13:55:53 +08:00
Clark Wang 0e6bba4ded Restrict that only hasManyThrough can have additional properties
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-01 13:52:14 +08:00
Clark Wang beea028d5f Support data field as body for link operation
Signed-off-by: Clark Wang <clark.wangs@gmail.com>
2014-09-01 08:52:24 +08: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
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
Fabien Franzen 6ccc5a62bf Account for undefined before/afterListeners 2014-08-22 22:18:24 +02:00
Raymond Feng c3a33df0ce Make sure AccessToken extends from PersistedModel 2014-08-18 21:44:38 -07:00
Raymond Feng e35bc9ed5f Merge pull request #463 from offlinehacker/master
add count to relations and scopes
2014-08-15 13:18:51 -07:00
britztopher ba48d042b8 added test and fixed changing passed in object within ctor 2014-08-14 15:44:36 -04:00
britztopher d4bd2bca28 adding the ability to use single or multiple email transports in datasources.json file 2014-08-14 12:07:44 -04:00
britztopher 56fe548a46 added the ability to use an array of transports or just a single trnasport 2014-08-13 15:57:28 -04:00
Jaka Hudoklin 066e87300d add count to relations and scopes
Signed-off-by: Jaka Hudoklin <jakahudoklin@gmail.com>
2014-08-12 15:03:15 +02:00
Miroslav Bajtoš d93b6127c4 Remove `req.resume` from `app.enableAuth`
Remove `req.pause` and `req.resume` from `app.enableAuth`
 - they are no longer needed, the request starts paused and there is
   no other middleware that would resume it before us.
 - when we resume the request after authentication, we force all
   other async operations (like sharedCtor) to call pause & resume too,
   otherwise data are lost
2014-08-12 13:57:45 +02:00
Ritchie Martori 1ed4e2b9d7 Fix accessToken property docs 2014-08-11 10:55:23 -07: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 0e8a69015a Fix reference to app
See https://github.com/strongloop/loopback/issues/452
2014-08-07 21:45:18 -07:00
Raymond Feng b07aac7377 Merge pull request #449 from fabien/fix/polymorphic-belongs-to
Don't assume relation.modelTo in case of polymorphic belongsTo
2014-08-07 13:54:15 -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 ce88ce7733 Fix doc for the EXECUTE 2014-08-07 10:33:36 -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 1af95272fe Don't assume relation.modelTo in case of polymorphic belongsTo 2014-08-07 15:39:07 +02:00
Steve Grosbois 7b94f7a139 Fix "callbacl" by "callback" in doc 2014-08-05 15:17:11 +02: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 cc0d376cc3 filterMethod can also be a direct callback 2014-08-04 19:08:43 +02:00
Fabien Franzen 097daf1deb filterMethod option (fn) to filter nested remote methods 2014-08-04 19:02:30 +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 1fd562ecbd Return data source for app.dataSource() 2014-07-30 21:57:08 -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
Raymond Feng 7fe68a6ee1 Merge pull request #415 from strongloop/feature/add-remoting-for-exists
Map exists to HEAD for REST
2014-07-30 10:22:16 -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
Rand McKinney 85c68651bc Fix jsdoc for remoteMethod() 2014-07-29 11:54:26 -07:00
Raymond Feng e5b0e8cd70 Map exists to HEAD for REST 2014-07-28 09:37:50 -07:00
Raymond Feng 71f9dbd4b0 Merge pull request #412 from strongloop/feature/fix-issue-408
Build the email verification url from app context
2014-07-28 08:23:02 -07:00
Raymond Feng d638b29f55 Fix https://github.com/strongloop/loopback/issues/413 2014-07-27 00:41:43 -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 5aee3b7f61 Merge pull request #402 from strongloop/feature/emit-model-remoted-event
Emit a 'modelRemoted' event by app.model()
2014-07-25 09:06:46 -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 ab8d82d7f9 Fix remoting types for related models 2014-07-24 10:26:49 -07:00
Raymond Feng ac1428eff5 Fix for email transports 2014-07-23 22:09:24 -07:00
Raymond Feng 58da6277e3 Merge pull request #390 from strongloop/feature/refactor-relation-remoting
Move remoting metadata from juggler to loopback
2014-07-22 11:12:53 -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 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
Miroslav Bajtoš 070f3d9583 Merge pull request #392 from strongloop/feature/drop-swagger
Remove `app.docs()`
2014-07-22 19:41:42 +02:00
Raymond Feng 643293cc25 Set up the base model based on the connector types 2014-07-22 10:38:14 -07:00
Miroslav Bajtoš bba58a73d5 express-middleware: improve error message
Include the flag `--save` in the npm instructions, so that the missing
module is both installed and saved in package dependencies.
2014-07-22 15:40:36 +02:00
Miroslav Bajtoš c7bca9da78 Remove `app.docs()`
The swagger integration was moved to loopback-explorer.
2014-07-22 15:08:23 +02: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 4f7a9869e0 Add descriptions for custom methods on user model 2014-07-18 22:48:07 -07:00
Raymond Feng 30c35ca5ef Move remoting metadata from juggler to loopback 2014-07-16 16:35:43 -07:00
Raymond Feng e5b64c6143 Upgrade to nodemailer 1.0.1 2014-07-16 12:40:15 -07:00
Raymond Feng 4e1d8c9a4e Merge branch '1.x' into 2.0 2014-07-16 11:06:24 -07:00
Raymond Feng a28e5b5897 Enhance the error message 2014-07-16 11:04:23 -07:00
Raymond Feng 79f504a3c7 Merge branch 'master' into 2.0 2014-07-16 09:09:07 -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
Miroslav Bajtoš da9b724222 lib/application: publish Change models to REST API
When a public model is added to an application and the model has change
tracking enabled, its Change model is added to the public models.

Before this change, conflict resolution in the browser was not working,
because it was not possible to fetch the remote change.
2014-07-15 09:31:16 +02:00
Miroslav Bajtoš 087c602669 models/change: fix typo 2014-07-15 09:14:54 +02:00
Raymond Feng 22e929e439 Fix credentials/challenges types
Associated identities and credentials are now captured by models in
loopback-component-passport. These two properties will be removed in
2.x.
2014-07-14 14:22:21 -07:00
crandmck b5c47dc7a5 Split out aliases for deleteById and destroyAll functions for jsdoc. 2014-07-11 15:41:14 -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 de831dbd33 Fix the typo 2014-07-08 08:54:13 -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 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
Aleksandr Tsertkov 476dd8214d Fix misleading token middleware documentation
Signed-off-by: Aleksandr Tsertkov <tsertkov@gmail.com>
2014-07-01 16:59:49 +02: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
Miroslav Bajtoš dfa8d7f49f app: update `url` on `listening` event
Most applications report the URL when started (at least the apps we
are scaffolding using loopback-workspace). Constructing the URL in the
loopback core allows us to simplify the templates and reduce the amount
of repeated code.
2014-07-01 14:27:02 +02:00
Miroslav Bajtoš 10d29c7d86 Merge branch 'master' into 2.0
Conflicts:
	package.json
2014-06-27 10:36:06 +02:00
Miroslav Bajtoš 45d026e7de Merge pull request #335 from karlmikko/bug/invalid-token-unhandled
Ignore unhanded error - simulate token missing
2014-06-27 09:56:17 +02:00
Guilherme Cirne 3fba6c50f0 Fix "ReferenceError: loopback is not defined" in registry.memory().
Signed-off-by: Guilherme Cirne <gcirne@gmail.com>
2014-06-26 10:40:28 -03:00
Miroslav Bajtoš 50816ebbe3 Fix loopback in PhantomJS, fix karma tests
- Move configuration of Karma unit-tests from `Gruntfile.js` to a
  standalone file (`test/karma.conf.js`).

- Add a new Grunt task `karma:unit-ci` to run Karma unit-tests in
  PhantomJS and produce karma-xunit.xml file that can be consumed
  by the CI server.

- Add grunt-mocha-test, configure it to run unit-tests.

- Add `grunt test` task that runs both karma and mocha tests,
  detects Jenkins to produce XML output on CI server.

- Modify the `test` script in `package.json` to run
  `grunt mocha-and-karma` (an alias for `grunt test`).
  The alias is required to trick `sl-ci-run` to run `npm test`
  instead of calling directly `mocha`.

- Add `es5-shim` module to karma unit-tests in order to provide
  ES5-methods required by LoopBack.

- Fix `mixin(source)` in lib/loopback.js to work in PhantomJS.
  `Object.getOwnPropertyDescriptor()` provided by `es5-shim` does not
  work in the same way as in Node.
2014-06-26 13:30:09 +02:00
Karl Mikkelsen 46af483bdd Invalid Access Token return 401
Clean up logic to be easier to read.
Signed-off-by: Karl Mikkelsen <karl@karlmikko.com>
2014-06-26 08:50:41 +10:00
Raymond Feng 70c1cb5ce0 Update debug setting 2014-06-25 09:09:04 -07:00
Miroslav Bajtoš c896c78db0 Remove `app.boot`
Modify `app.boot` to throw an exception, pointing users to the new
module `loopback-boot`.
2014-06-25 14:09:06 +02:00
Miroslav Bajtoš 70615696cd Mark `app.boot` as deprecated. 2014-06-25 13:44:07 +02:00
Raymond Feng 9eab7d62d3 Merge branch 'master' into 2.0 2014-06-20 23:48:46 -07:00
Raymond Feng b44dac3c62 Merge branch 'master' into 2.0 2014-06-20 23:08:35 -07:00
Samuel Reed afd8de0c31 Fix a slowdown caused by mutation of an incoming accessToken option. 2014-06-20 16:39:28 -05:00
Raymond Feng d5ed57e60d Merge pull request #254 from strongloop/feature/role-id
Set the role id to be generated
2014-06-17 10:37:06 -07:00
Miroslav Bajtoš 7316048afc lib/registry: `getModel` throws, add `findModel`
Rename `loopback.getModel` to `loopback.findModel`.

Implement `loopback.getModel` as a wrapper around `findModel` that
throws an error when the model as not found.
2014-06-16 16:13:24 +02:00
Miroslav Bajtoš 56c7a6b3c5 Merge branch 'master' into 2.0
Conflicts:
	test/access-token.test.js
2014-06-16 10:20:22 +02:00
Miroslav Bajtoš 843e09342c lib/application: Remove forgotten `loopback` ref
Use `registry.Model` instead of `loopback.Model`.
2014-06-16 09:52:11 +02:00
Miroslav Bajtoš 8826b6396a Merge pull request #306 from karlmikko/master
Ability to return 401 and 403 response codes #301
2014-06-14 09:44:22 +02:00
Miroslav Bajtoš d2517d8236 Merge branch 'master' into 2.0 2014-06-14 09:40:57 +02:00