Commit Graph

640 Commits

Author SHA1 Message Date
Miroslav Bajtoš 362cceb70a Merge createModelFromConfig with createModel
Merge the two methods `loopback.createModel` and
`loopback.createModelFromConfig` into a single method `createModel`.
2014-06-12 10:41:45 +02:00
Miroslav Bajtoš 7cd6e09790 lib/registry fix jsdoc comments
Add missing names.
2014-06-12 10:41:44 +02:00
Miroslav Bajtoš 7d674779e1 refactor: extract runtime and registry
Move isBrowser and isServer from lib/loopback to a new file lib/runtime.

Move all Model and DataSource related methods like `createModel` and
`createDataSource` to lib/registry.

Remove the circular dependency between lib/application and lib/loopback,
by loading lib/registry and/or lib/runtime instead of lib/loopback
where appropriate

This commit is only moving the code around, the functionality should
not be changed at all.
2014-06-12 10:41:44 +02:00
Miroslav Bajtoš 19425b8fd9 Remove assertIsModel and isDataSource
Use `instanceof` operator instead:

  ModelCtor.prototype instanceof loopback.Model
  dataSource instanceof loopback.DataSource
2014-06-12 10:41:44 +02:00
Miroslav Bajtoš fc0fad4a9f Add createModelFromConfig and configureModel()
Add new API allowing developers to split the model definition and
configuration into two steps:

 1. Build models from JSON config, export them for re-use:

  ```js
  var Customer = loopback.createModelFromConfig({
    name: 'Customer',
    base: 'User',
    properties: {
      address: 'string'
    }
  });
  ```

 2. Attach existing models to a dataSource and a loopback app,
    modify certain model aspects like relations:

  ```js
  loopback.configureModel(Customer, {
    dataSource: db,
    relations: { /* ... */ }
  });
  ```

Rework `app.model` to use `loopback.configureModel` under the hood.
Here is the new usage:

```js
var Customer = require('./models').Customer;

app.model(Customer, {
  dataSource: 'db',
  relations: { /* ... */ }
});
```

In order to preserve backwards compatibility,
`app.model(name, config)` calls both `createModelFromConfig`
and `configureModel`.
2014-06-12 10:41:44 +02:00
Miroslav Bajtoš 4259a3862a Make app.get/app.set available in browser
Implement settings object and methods in browser-express.
2014-06-12 10:40:36 +02:00
crandmck ad347e517c JSDoc fixes 2014-06-11 14:55:47 -07:00
Raymond Feng 6490447fac Set the role id to be generated
See https://github.com/strongloop/loopback-connector-postgresql/issues/5
2014-06-10 16:38:37 -07:00
Miroslav Bajtoš b576639d90 Add loopback.version back
Add `loopback.version` that was accidentaly removed by #308.
2014-06-10 11:19:36 +02:00
Raymond Feng 7769174d58 Tidy up app.model() to remove duplicate & recusrive call 2014-06-09 23:53:01 -07:00
Raymond Feng 815ad53aa4 Register existing model to app.models during app.model() 2014-06-09 16:31:33 -07:00
crandmck 6af69e322a JSDoc cleanup 2014-06-09 15:50:04 -07:00
crandmck cea2d30928 Merge branch 'master' of github.com:strongloop/loopback 2014-06-09 15:42:07 -07:00
crandmck 1694ee2d83 JSDoc cleanup 2014-06-09 15:36:08 -07:00
Raymond Feng 854402acba Merge pull request #314 from strongloop/feature/allow-custom-token-creation
Allow the creation of access token to be overriden
2014-06-09 15:01:15 -07:00
Raymond Feng a6ff4b0cad Use constructor to reference the model class 2014-06-09 15:00:15 -07:00
Raymond Feng 6b4ebdf609 Allow the creation of access token to be overriden 2014-06-09 14:53:55 -07:00
Miroslav Bajtoš a90e24c013 registry: export DataSource class
Expose the juggler's DataSource constructor as `loopback.DataSource`.

The DataSource constructor is most useful to check
for `instanceof DataSource`, but it also makes the loopback API more
consistent, since the API is already exposing all pre-built Models.
2014-06-09 16:25:35 +02:00
Miroslav Bajtoš 09cc57c061 registry: fix non-unique default dataSources
Fix the problem where `registry.defaultDataSources` has two instances:

 - `require('loopback').defaultDataSources` used by
   `loopback.autoAttach()`

 - `require('./registry').defaultDataSources` used by
   `app.dataSource`.

I am intentionally leaving out unit-tests as the whole `autoAttach`
feature is going to be deleted before 2.0 is released.
2014-06-09 16:15:56 +02:00
Miroslav Bajtoš 56aab8dbdd Merge createModelFromConfig with createModel
Merge the two methods `loopback.createModel` and
`loopback.createModelFromConfig` into a single method `createModel`.
2014-06-09 11:18:52 +02:00
Miroslav Bajtoš 63843b41fc lib/registry fix jsdoc comments
Add missing names.
2014-06-09 07:46:32 +02:00
crandmck 1316676946 Fixup JSDocs; note: updateOrCreate function alias pulled out on separate line for docs 2014-06-06 17:17:37 -07:00
Miroslav Bajtoš eac231df99 refactor: extract runtime and registry
Move isBrowser and isServer from lib/loopback to a new file lib/runtime.

Move all Model and DataSource related methods like `createModel` and
`createDataSource` to lib/registry.

Remove the circular dependency between lib/application and lib/loopback,
by loading lib/registry and/or lib/runtime instead of lib/loopback
where appropriate

This commit is only moving the code around, the functionality should
not be changed at all.
2014-06-06 11:53:23 +02:00
Miroslav Bajtoš 1b11060991 Remove assertIsModel and isDataSource
Use `instanceof` operator instead:

  ModelCtor.prototype instanceof loopback.Model
  dataSource instanceof loopback.DataSource
2014-06-06 10:30:03 +02:00
Miroslav Bajtoš 51e977de9b lib/loopback: fix jsdoc comments
Use
     @property {Object} [properties]
instead of
     @property {Object=} properties
for optional properties.

Use `**example**` instead of `@example`, since strong-docs don't support
the latter.
2014-06-06 10:28:21 +02:00
Miroslav Bajtoš 5f1c3a86eb Merge pull request #304 from strongloop/feature/createModelFromConfig
[2.0] Add createModelFromConfig and configureModel()
2014-06-06 10:27:03 +02:00
Miroslav Bajtoš f844459311 Add createModelFromConfig and configureModel()
Add new API allowing developers to split the model definition and
configuration into two steps:

 1. Build models from JSON config, export them for re-use:

  ```js
  var Customer = loopback.createModelFromConfig({
    name: 'Customer',
    base: 'User',
    properties: {
      address: 'string'
    }
  });
  ```

 2. Attach existing models to a dataSource and a loopback app,
    modify certain model aspects like relations:

  ```js
  loopback.configureModel(Customer, {
    dataSource: db,
    relations: { /* ... */ }
  });
  ```

Rework `app.model` to use `loopback.configureModel` under the hood.
Here is the new usage:

```js
var Customer = require('./models').Customer;

app.model(Customer, {
  dataSource: 'db',
  relations: { /* ... */ }
});
```

In order to preserve backwards compatibility with loopback 1.x,
`app.model(name, config)` calls both `createModelFromConfig`
and `configureModel`.
2014-06-05 17:47:28 +02:00
Miroslav Bajtoš ea5b9d16fc Rename DataModel to PersistedModel 2014-06-05 09:56:00 +02:00
crandmck d8c6f9d962 Update JSDoc 2014-06-04 17:42:18 -07:00
Miroslav Bajtoš 26874fc715 Make app.get/app.set available in browser
Implement settings object and methods in browser-express.

Add test/app.test.js to unit-tests run by karma.
2014-06-03 21:32:27 +02:00
Miroslav Bajtoš 88a4bb462e Exclude express-middleware from browser bundle
Fix lib/loopback to include express-middleware only on the server.

Bump up strong-remoting dependency to use the version working in
browsers.
2014-06-03 21:32:27 +02:00
Ritchie Martori fea1cee1c4 !fixup only set ctx.accessType when sharedMethod is available 2014-06-02 14:41:08 -07:00
Ritchie Martori a2f931ed3f Refactor ACL to allow for `methodNames` / aliases 2014-06-02 14:41:08 -07:00
Raymond Feng bb0ddb26ec Rename express-wrapper to express-middleware 2014-05-29 10:18:58 -07:00
Raymond Feng 49380e490f Upgrade to Express 4.x 2014-05-29 08:44:05 -07:00
Miroslav Bajtoš 566757ba1d Deprecate app.boot, remove app.installMiddleware
The bootloader has its own project `loopback-boot` now.
2014-05-29 08:38:39 +02:00
Miroslav Bajtoš 18fd61a546 Merge branch 'master' into 2.0 2014-05-28 18:41:36 +02:00
Miroslav Bajtoš acf7af0c4e Merge pull request #287 from strongloop/feature/connector-registry
app: implement `connector()` and `connectors`
2014-05-28 17:01:24 +02:00
Miroslav Bajtoš 94ec5c294a app: implement `connector()` and `connectors`
Allow browserified applications to explicitly register connectors
to use in data-sources via `app.connector(name, exportsFromRequire)`.

Include built-in connectors like `Memory` and `Remote` in the registry.

Modify `dataSourcesFromConfig()` to resolve the connector via
`app.connectors` first and only then fall back to auto-require
the connector module.
2014-05-28 15:11:43 +02:00
Miroslav Bajtoš d0c87d3420 Merge pull request #285 from STRML/fixRestApiRootTypo
Fix a typo in `app.boot` caused by the change from restBasePath to restApiRoot.
2014-05-28 14:56:46 +02:00
Samuel Reed e625028486 Fix a typo in `app.boot`.
This typo was caused by the change from restBasePath to restApiRoot.

Signed-off-by: Samuel Reed <sam@tixelated.com>
2014-05-28 17:25:41 +08:00
Miroslav Bajtoš 7cfe450161 Make app.datasources unique per app instance
This removes a source of confusion in unit-tests.
2014-05-27 14:33:42 +02:00
Miroslav Bajtoš 227c2d05cd app: flatten model config
Support flat structure of model config objects, where model options
are set as top-level properties.

Before:

    Customer: {
      dataSource: 'db',
      options: {
        base: 'User'
      }
    }

Now:

    Customer: {
      dataSource: 'db',
      base: 'User'
    }
2014-05-27 08:10:20 +02:00
Miroslav Bajtoš bfb154d445 Modify `loopback.rest` to include `loopback.token`
Make `loopback.rest` self-contained, so that authentication works
out of the box.

    var app = loopback();
    app.enableAuth();
    app.use(loopback.rest());

Note that cookie parsing middleware is not added, users have to
explicitly configure that if they want to store access tokens
in cookies.

Modify `loopback.token` to skip token lookup when the request already
contains `accessToken` property. This is in line with other
connect-based middleware like `cookieParser` or `json`.
2014-05-21 15:22:36 +02:00
Ritchie Martori d237ae5ddb Merge latest from master 2014-05-20 14:31:09 -07:00
Ritchie Martori 1a8ba602cc !fixup Mark DAO methods as delegate
Allow juggler to mix in these methods.
2014-05-20 13:45:47 -07:00
Ritchie Martori 77bd77e625 Ensure changes are created in sync 2014-05-20 12:46:43 -07:00
Ritchie Martori 52eb72d94f Remove un-rectify-able changes 2014-05-20 12:14:51 -07:00
Ritchie Martori 2de33d4da5 Rework change conflict detection 2014-05-19 19:54:55 -07:00
Ritchie Martori eec7bdd5f4 - Use the RemoteObjects class to find remote objects instead of
creating a cache
 - Use the SharedClass class to build the remote connector
 - Change default base model from Model to DataModel
 - Fix DataModel errors not logging correct method names
 - Use the strong-remoting 1.4 resolver API to resolve dynamic remote
methods (relation api)
 - Remove use of fn object for storing remoting meta data
2014-05-19 15:56:26 -07:00
Ritchie Martori 558ea60da0 In progress: rework remoting meta-data 2014-05-16 12:32:54 -07:00
Adam Schwartz 7c00119292 Fix typo "Unkown" => "Unknown" 2014-05-15 23:32:12 -04:00
Ritchie Martori 2f21f4ec1e Rework replication test 2014-05-15 17:30:58 -07:00
Ritchie Martori 1e2ad9fba9 Change#getModel(), Doc cleanup, Conflict event 2014-05-14 09:20:04 -07:00
Ritchie Martori 4bab42478f Add error logging for missing data 2014-05-12 10:36:10 -07:00
haio 978bc57421 Fix bug in User#resetPassword 2014-05-10 15:43:01 +08:00
Ritchie Martori 908221416e Fix issues when using MongoDB for replication 2014-05-09 17:19:32 -07:00
Ritchie Martori a3a6828709 Move replication implementation to DataModel 2014-05-06 13:31:23 -07:00
Ritchie Martori f8b5fa11ec All tests passing 2014-05-02 21:19:14 -07:00
haio 429052a0db Ensure roleId and principalId to be string in Role#isInRole 2014-05-03 11:43:03 +08:00
Ritchie Martori 012f880078 !fixup RemoteConnector tests 2014-05-02 20:04:06 -07:00
Ritchie Martori 918596f035 Refactor DataModel remoting
- Move DataModel remoting setup into setup phase
 - Add a remoting type converter for DataModels
 - Move model tests into re-usable test utilities
 - Move other test utilities into new test utilities folder
2014-05-02 18:12:24 -07:00
Ritchie Martori 69cd6a836b !fixup .replicate() argument handling 2014-04-29 20:40:00 -07:00
Ritchie Martori e35309ba27 Fixes for e2e replication / remote connector tests 2014-04-29 17:17:49 -07:00
haio eae86b64f4 typo 2014-04-29 20:10:44 +08:00
haio f44d737e7e Add more check on principalId 2014-04-29 09:34:48 +08:00
haio aa63d7bf4b Convert principalId to String 2014-04-28 21:36:44 +08:00
Raymond Feng b57c998ce2 Merge pull request #242 from strongloop/feature/fix-issue-239
Rename the method so that it won't conflict with Model.checkAccess
2014-04-24 10:27:18 -07:00
crandmck 1676ac6e58 Fix constructor JSDoc 2014-04-23 15:20:18 -07:00
Raymond Feng 921e35954d Rename the method so that it won't conflict with Model.checkAccess
See https://github.com/strongloop/loopback/issues/239
2014-04-21 11:13:03 -07:00
Ritchie Martori 83e74ab414 Merge 2014-04-16 07:39:13 -07:00
Ritchie Martori b660f8a59e Add replication e2e tests 2014-04-16 07:33:17 -07:00
Ritchie Martori e86a00de69 Merge branch master 2014-04-15 12:53:00 -07:00
Ritchie Martori 13b18065e2 Documentation cleanup 2014-04-14 14:49:29 -07:00
Ritchie Martori 940e11125d Fix save implementation for remoting connector 2014-04-14 14:17:56 -07:00
Ritchie Martori 7c0a470d64 Add basic Remote connector e2e test 2014-04-14 12:25:41 -07:00
Ritchie Martori 5298834c68 Merge branch 'master' into feature/remoting-connector 2014-04-14 11:01:20 -07:00
Ritchie Martori 63ad8f69ae Add test for remoting nested hidden properties 2014-04-11 11:43:37 -07:00
Alex Pica 1c1364636d Fix #229 (Whitespaces removed 2014-04-10 06:01:58 +03:00
Miroslav Bajtoš e8971fde41 Merge pull request #223 from strongloop/feature/improve-sharedctor-description
Describe the "id" parameter of model's sharedCtor
2014-04-04 07:36:03 -07:00
crandmck dff182ed27 Clean up JSDoc comments. Remove doc for deprecated installMiddleware function 2014-04-03 11:29:00 -07:00
Miroslav Bajtoš 4c246c7f2c Describe the "id" parameter of model's sharedCtor
Extend remoting metadata to describe the "id" parameter accepted
by the sharedCtor of all models.
2014-04-03 10:39:42 +02:00
crandmck 006aca6b9c Update and cleanup JSDoc 2014-04-02 15:46:39 -07:00
crandmck a265d67007 Cleanup and update of jsdoc 2014-04-02 15:15:21 -07:00
Ritchie Martori 5f81fad921 Merge pull request #217 from strongloop/feature/hidden-properties
Feature/hidden properties
2014-03-31 12:04:49 -07:00
Ritchie Martori 51d3ff892a Merge pull request #219 from dougtoppin/fix-verify-confirm
Fix verify confirm
2014-03-31 12:02:48 -07:00
Doug Toppin 8b71c3022d Update user.js
Corrected spacing on confirm ACL, removed extraneous comment on using hex rather than base64
2014-03-30 08:02:19 -04:00
Ritchie Martori a08b047fab Add hidden property documentation 2014-03-27 15:25:37 -07:00
Ritchie Martori 4c185e5453 Support host / port in Remote connector 2014-03-27 14:47:30 -07:00
Ritchie Martori ac2206d257 Throw useful errors in DataModel stub methods 2014-03-27 14:47:29 -07:00
Ritchie Martori 64b374907a Move proxy creation from remote connector into base model class 2014-03-27 14:47:29 -07:00
Ritchie Martori 0632f52411 Remove reload method body 2014-03-27 14:47:29 -07:00
Ritchie Martori dcdbef861e Add Remote connector 2014-03-27 14:47:29 -07:00
Ritchie Martori ef7b724375 Initial client-server example 2014-03-27 14:47:29 -07:00
Doug Toppin e52dbe2fb5 fix to enable ACL for confirm link sent by email 2014-03-23 21:06:22 -04:00
Ritchie Martori 5b50a99eb3 Add hidden property support to models 2014-03-21 12:53:04 -07:00
Ritchie Martori c521b3c386 Allow app.model() to accept a DataSource instance 2014-03-21 12:18:00 -07:00
Ritchie Martori de5d0b8949 Make verifications url safe 2014-03-21 12:02:11 -07:00
Raymond Feng aaaa28d569 Add more comments 2014-03-19 16:24:50 -07:00
Raymond Feng 328a72ac91 Improve the ACL matching algorithm
See https://github.com/strongloop/loopback-example-access-control/issues/8
2014-03-19 15:09:20 -07:00
Raymond Feng 32a9131004 Pause the req before checking access
See https://github.com/strongloop/loopback-storage-service/issues/7
2014-03-17 14:40:05 -07:00
Raymond Feng f031e79392 Remove the generated flag as the id is set by the before hook 2014-03-17 10:01:29 -07:00
crandmck c80b334130 Improvements to JSDoc comments 2014-03-14 10:28:31 -07:00
crandmck 9fb3f3313a Fixes to JSDoc for API docs 2014-03-13 17:25:21 -07:00
Raymond Feng 533daf4040 Remove oauth2 models as they will be packaged in a separate module 2014-03-11 22:37:54 -07:00
Ritchie Martori 57ff242308 Minor doc fix 2014-03-10 18:05:44 -07:00
Raymond Feng 89aa3595f5 Set the correct status code for User.login
See https://github.com/strongloop/loopback/issues/118
2014-02-28 13:19:52 -08:00
Doug Toppin 42c9777de3 using base64 caused an occasional token string to contain '+' which resulted in a space being embedded in the token. 'hex' should always produce a url safe string for the token. 2014-02-25 22:14:32 -05:00
Doug Toppin 2f301e315a Sending email was missing the from field 2014-02-23 21:08:13 -05:00
Ritchie Martori 4e437586ed Merge pull request #192 from strongloop/fix/port-zero
Remove coercion from port check
2014-02-21 10:08:27 -08:00
Raymond Feng 37646fa008 Allows options to be passed to strong-remoting 2014-02-19 15:14:31 -08:00
Ryan Graham 088c2e2296 Merge fixup 2014-02-19 14:11:16 -08:00
Ritchie Martori 138821cf8b Merge package.json and lib/loopback.js 2014-02-19 11:44:44 -08:00
Ritchie Martori 500703e1fb Remove coercion from port check 2014-02-18 16:54:40 -08:00
Guilherme Cirne b466bb96c8 The simplest possible solution for clearing the handler cache when registering a model. 2014-02-18 17:40:35 -03:00
Raymond Feng 46b579dc4a Make sure User/AccessToken relations are set up by default
User.login assumes the relation User.accessTokens exists
2014-02-14 10:31:30 -08:00
Ritchie Martori e7f64a3abf Add karma for running browser tests 2014-02-12 10:17:02 -08:00
Aurelien Chivot c216ba03c1 Documentation (generated) fix 2014-02-11 19:14:04 +01:00
Raymond Feng 618b563c6e Use hex encoding for application ids/keys
base64 encoded ids/keys are not friendly for urls
2014-02-07 11:14:01 -08:00
Ritchie Martori 867e3ca996 fixup! Assert model exists 2014-02-05 15:32:38 -08:00
Ritchie Martori 0bf7af104d fixup! rename Change.track => rectifyModelChanges 2014-02-05 15:27:58 -08:00
Miroslav Bajtoš 38f4748021 Add app.isAuthEnabled.
The flag is set by `app.enableAuth` and can be used to detect
whether the access control is enabled.
2014-02-05 18:46:22 +01:00
Miroslav Bajtoš b13ff35697 Make app.models unique per app instance
Remove a source of confusion in unit-tests.
2014-02-04 20:28:19 +01:00
Raymond Feng 592f3f9278 Make sure the configured ACL submodel is used 2014-02-03 16:00:01 -08:00
Ritchie Martori 13f67385d0 Add model tests 2014-01-30 14:20:34 -08:00
Ritchie Martori ab8d1ae109 Add replication example 2014-01-30 14:20:34 -08:00
Ritchie Martori e3d80058dc Add Checkpoint model and Model replication methods 2014-01-30 14:20:34 -08:00
Ritchie Martori cc49d675ce Add Change model 2014-01-30 14:20:33 -08:00
Miroslav Bajtoš c36e20587e Merge pull request #163 from strongloop/feature/include-user-in-login-result
Include user in login result
2014-01-30 10:24:14 -08:00
Raymond Feng c711b99b8a Merge pull request #154 from strongloop/feature/debug-login-error
Add debug information for user.login
2014-01-30 10:13:26 -08:00
Miroslav Bajtoš d6f0b5f5a6 Add `include=user` param to `User.login`
Allow LB clients to get details of the currently logged-in user
as part of the login response.

Improve method's `description` to mention this new option.
2014-01-30 18:09:54 +01:00
Miroslav Bajtoš 03cb2f0556 Describe `access_token` param of `User.logout`
Add an explicit note that clients are not supposed to send the
`access_token` parameter, since it is extracted from request
headers.
2014-01-30 18:09:54 +01:00
Raymond Feng 57796a41cd Remove the generated flag for access token id
The generated flag is used to indicate if the id is automatically generated
by the backend store. If it's set, the data type will be updated when the
model is attached to a datasource.

The AccessToken model defines a string id, which is set in the beforeCreate
hook. So it's client provided id.
2014-01-30 09:02:12 -08:00
Ritchie Martori a0e595dce8 Add model tests 2014-01-28 14:46:16 -08:00
Ritchie Martori 2582c3fc65 Add replication example 2014-01-28 12:54:41 -08:00
Raymond Feng 938cafeb77 Remove message prefix as debug will print it 2014-01-27 14:47:48 -08:00
Raymond Feng c35f762d4e Add debug information for user.login 2014-01-27 14:31:38 -08:00
Miroslav Bajtoš 20766e251a Add loopback.compat to simplify upgrade to 1.6
Add a compatibility layer that allows applications based on LB pre-v1.6
to work with 1.6 versions with a minimum amount of changes required.

New flag(s):
  compat.usePluralNamesForRemoting
2014-01-27 10:29:57 +01:00
Miroslav Bajtoš 8bb8861ba1 Register exported models using singular names
Remove the inconsistency between model names used by LoopBack app and
datasource-juggler (modelName, e.g. User) and the name used by
strong-remoting (pluralModelName, e.g. Users).

This way the class name in the strong-remoting metadata can be used
by client-code generators. Before this change, the generators would
produce method names like `Users.login`.
2014-01-27 10:29:57 +01:00
Miroslav Bajtoš 54bff35fef User: use User.http.path
Use the new property introduced by a recent change in
loopback-datasource-juggler instead of building the URL
manually from pluralModelName.
2014-01-27 10:29:57 +01:00
Ritchie Martori 1a13a8d95e Add Checkpoint model and Model replication methods 2014-01-26 14:02:56 -08:00
Ritchie Martori 4be3395298 Add Change model 2014-01-26 13:20:19 -08:00
Raymond Feng 5586c54c49 Fix the Role ref to RoleMapping 2014-01-23 15:04:48 -08:00
Raymond Feng 224b500c3a Fix the Scope reference to models 2014-01-23 14:46:02 -08:00
Raymond Feng bb389ce209 Lookup the email model 2014-01-23 14:40:27 -08:00
Raymond Feng bcc7e68e0e Add lookback.getModelByType() and use it resolve model deps 2014-01-23 14:39:27 -08:00
Ritchie Martori a43d6004c1 Fix race condition where MyEmail model was not attached to the correct dataSource in tests 2014-01-23 14:25:54 -08:00
Raymond Feng d6a4230aed Fix the method args 2014-01-21 16:41:48 -08:00
Raymond Feng a5242a3b77 Fix the typo for the method name 2014-01-21 16:35:28 -08:00
Raymond Feng 8a114c635f Prevent autoAttach from overriding existing data source 2014-01-20 14:32:47 -08:00
Raymond Feng 5a6155e08e Clean up loopback.js doc and add it to docs.json 2014-01-17 10:40:41 -08:00
Raymond Feng 32bdce53ee Fix the jsdoc for loopback.getModel() 2014-01-17 10:23:59 -08:00
Raymond Feng a6ff22c9c1 Make sure defaultPermission is checked 2014-01-16 15:05:10 -08:00
Raymond Feng 7212ebe805 Remove the dangling require 2014-01-16 09:12:52 -08:00
Raymond Feng d8647bb3c1 Make ACL model subclassing friendly 2014-01-16 08:50:50 -08:00
Miroslav Bajtoš e6cdeb5cd4 Improve jsdox documentation of app object
Remove docs/api-app.md and docs/api.md, as they are no longer referenced
from docs.json.

Add few missing bits from docs/api-app.md to lib/application.js
comments.
2014-01-15 08:44:49 +01:00
Raymond Feng c8eb5d9170 Make sure methods are called in the context of the calling class 2014-01-14 15:34:44 -08:00
Ritchie Martori 9fc8e197ee Start to move md to jsdoc 2014-01-14 10:03:47 -08:00
Miroslav Bajtoš 8573d01c16 Replace `on` with `once` in middleware examples
Fix the jsdox for `app.installMiddleware` to use `app.once` for
listening on 'middleware:*' events.

The previous doc version using `on` was a sort of preliminary
pessimisation, becase the event handlers would stay in the heap
for the whole life-time of the app, even though they won't be called
more than once.
2014-01-14 08:07:47 +01:00
Miroslav Bajtoš 57813cef56 Merge pull request #133 from strongloop/feature/app-install-middleware
Implement app.installMiddleware
2014-01-13 21:58:11 -08:00
Ritchie Martori 9668692406 Merge pull request #136 from strongloop/fix/mail-transports
Fix incorrect transports
2014-01-13 20:03:25 -08:00
Ritchie Martori 92eaa383f3 Fix incorrect transports 2014-01-13 19:04:21 -08:00
Ritchie Martori 45e5641055 Merge pull request #130 from strongloop/fix/mail-transports
Fix/mail transports
2014-01-13 18:36:42 -08:00
Miroslav Bajtoš ed81bdb6b8 Implement app.installMiddleware
The implementation is mostly a copy of
    loopback-workspace/templates/app.js
2014-01-13 17:26:24 +01:00
Miroslav Bajtoš 914ac2dcc9 Implement `app.listen`
The method starts a http server on the host & port configured
in the app config.
2014-01-13 09:12:54 +01:00
Ritchie Martori 80b4482c31 Provide sane default for email connector transports 2014-01-10 10:45:26 -08:00
Ritchie Martori 7e1810a1ad Add an empty transportsIndex to the mail connector by default 2014-01-10 10:18:21 -08:00
Ritchie Martori 6bb0ba2d95 Add missing assert in user model 2014-01-10 10:07:39 -08:00
Miroslav Bajtoš 92896a441c Add app.restApiRoot setting
Allow loopback users to configure API root via config file, instead of
editing app.js generated by loopback-workspace.

Allow loopback plugins to discover the path where the REST adapter is
mounted.
2014-01-07 16:05:48 +01:00
Ritchie fcc4bba82d Add reference documentation using sdocs 2013-12-19 17:49:47 -08:00
Raymond Feng a47317de0d Update README for application model 2013-12-19 13:42:12 -08:00
Ritchie Martori 981bdd4c81 app.boot() now loads the "boot" directory 2013-12-18 21:41:41 -08:00
Ritchie Martori 16b790a93a Merge pull request #102 from strongloop/fix/user
Various Fixes and Behavioral Changes to the User Model
2013-12-18 21:34:30 -08:00
Raymond Feng ac2f4de9d3 Remove the default values for gateway/port 2013-12-18 12:28:48 -08:00
Raymond Feng 598b1e6b61 Reformat the code using 2 space identation 2013-12-18 11:49:09 -08:00
Raymond Feng 95ad3e8c04 Allow cert/key data to be shared by push/feedback 2013-12-18 10:58:34 -08:00
Ritchie Martori 98ed38302a Logout now automatically pulls the accessToken from the request 2013-12-17 21:22:05 -08:00
Ritchie Martori 939df463fe Fix tests depending on old behavior of default User ACLs 2013-12-17 21:10:05 -08:00
Ritchie Martori 3152960336 Add default user ACLs 2013-12-17 20:42:28 -08:00
Miroslav Bajtoš d09e3225cd Define schema for GCM push-notification settings
Remove unused property PushNotificationSettingSchema.platform.

Flatten GCM settings schema. There is no need to distinquish between
pushOptions and feedback, as there is only single HTTP channel shared
by both.
2013-12-17 18:44:13 +01:00
Ritchie Martori 0794f141c1 Improve debug statements for access control 2013-12-16 18:12:13 -08:00
Ritchie Martori 5a154072a1 Merge pull request #96 from strongloop/feature/config
Make all app config values available from `app.get()`
2013-12-12 16:01:43 -08:00
Ritchie Martori 591ed86444 Merge pull request #97 from strongloop/bug/check-access
Dont attempt access checking on models without a check access method
2013-12-12 16:01:33 -08:00
Ritchie Martori 4619a143f5 Dont attempt access checking on models without a check access method 2013-12-11 19:46:56 -08:00
Ritchie Martori ea7c9216d7 App config settings are now available from app.get() 2013-12-11 19:31:16 -08:00
Ritchie Martori b62b8fa47d Fix user not allowed to delete itself if user
**Note: the only code required for the fix is in role.js:203**. The
other changes are to help organize debug output.
2013-12-11 19:15:19 -08:00
Ritchie Martori ad58a8ec13 Only look at cookies if they are available 2013-12-11 16:43:23 -08:00
Raymond Feng 0f86f69880 Remove the empty comment and set default token 2013-12-11 16:21:37 -08:00
Raymond Feng 97dc0aa441 Refactor to the code use wrapper classes
Add AccessContext, Principal, and AccessRequest
Add debug information
2013-12-11 16:03:48 -08:00
Raymond Feng 178674ec9a Enhance getRoles() to support smart roles 2013-12-11 09:06:21 -08:00
Raymond Feng 82eeaeee6b Fix the algorithm for Role.isInRole and ACL.checkAccess 2013-12-10 23:33:57 -08:00
Ritchie Martori 4560ec0964 Various ACL fixes 2013-12-10 21:49:18 -08:00
Ritchie Martori b0f51e20f7 Add user default ACLs 2013-12-10 19:43:59 -08:00
Ritchie Martori dfcb43e613 Allow requests without auth tokens 2013-12-10 15:57:55 -08:00
Ritchie Martori e7cc30ee03 Fix base class not being actual base class 2013-12-09 17:11:01 -08:00
Raymond Feng 7f51c28539 Fix the ACL resolution against rules by matching score 2013-12-09 15:26:53 -08:00
Ritchie Martori af2b8dd4ff Merge feature/password-reset 2013-12-06 17:35:14 -08:00
Ritchie Martori 216fee3015 Add access type checking 2013-12-06 17:04:47 -08:00
Ritchie Martori bc27f07472 Add Model.requireToken for disabling token requirement 2013-12-06 12:09:52 -08:00
Ritchie Martori 4c69af5ae2 Add Model.requireToken, default swagger to false 2013-12-06 12:00:18 -08:00
Ritchie 68ef03e944 SLA-725 support PORT and HOST environment for PaaS support 2013-12-05 20:00:09 -08:00
Ritchie Martori 0987adfd5f Merge pull request #64 from strongloop/auth
Initial auth implementation
2013-12-02 17:20:42 -08:00
Ritchie Martori 5cd71cee6b Use loopback.AccessToken as default 2013-12-02 17:16:43 -08:00
Ritchie Martori 2c36935404 Fix missing assert 2013-12-02 16:37:42 -08:00
Ritchie Martori 2f9403016c Initial auth implementation 2013-11-22 12:26:59 -08:00
Raymond Feng 52b1588152 Merge pull request #74 from strongloop/acl
More ACL features
2013-11-20 14:30:40 -08:00
Ritchie Martori e92c46a4e4 Add password reset 2013-11-20 14:20:47 -08:00
Ritchie Martori aaa8423257 Fix minor autoWiring bugs 2013-11-20 14:18:54 -08:00
Raymond Feng 344c74297c Add unauthenticated role 2013-11-20 13:43:02 -08:00
Raymond Feng bee8a3b022 Add checkAccess for subject and token 2013-11-20 13:43:01 -08:00
Raymond Feng 2c7c5fc7ec Start to support smart roles such as owner 2013-11-20 13:43:01 -08:00
Ritchie Martori 3753c15b71 Merge pull request #71 from strongloop/feature/status-middleware
Add status middleware
2013-11-19 13:15:57 -08:00
Ritchie Martori e5a55846e8 Merge pull request #69 from strongloop/datasource-auto-wiring
Initial auto wiring for model dataSources
2013-11-19 13:11:54 -08:00
Ritchie Martori fd7dd7e4a2 Add status middleware 2013-11-19 12:54:30 -08:00
Ritchie Martori 9db8a7a25f Auto attach all models created 2013-11-19 12:23:02 -08:00
Miroslav Bajtos 7d60b2dea6 Add loopback.urlNotFound() middleware.
The middleware should be used as the last 3-parameter middleware (regular
request handles) before any 4-parameter middleware (error handlers).

This way a request to an URL not handled by any middleware is converted to
a 404 error that can be handled by whatever error handling strategy is
configured in the application.

See senchalabs/connect#954 for more details.
2013-11-19 20:27:49 +01:00
Ritchie Martori 178e5dab30 Remove .attachTo() from tests 2013-11-19 11:02:43 -08:00
Ritchie Martori da0545bed6 Initial auto wiring for model dataSources 2013-11-18 16:13:40 -08:00
Ritchie Martori ec58237f8a Add public flag checking 2013-11-18 12:52:00 -08:00
Raymond Feng 9fddbc3834 Switch to modelBuilder 2013-11-15 11:16:20 -08:00
Raymond Feng 44dfe34647 Allow ACLs for methods/relations 2013-11-15 10:08:49 -08:00
Raymond Feng 8381b05da1 Allows LDL level ACLs 2013-11-15 09:41:26 -08:00
Raymond Feng 8e679d0927 Fix the permission resolution 2013-11-14 21:19:57 -08:00
Raymond Feng cc7560b258 Simplify check permission 2013-11-14 21:19:57 -08:00
Raymond Feng 94f12d0fce Fix the permission check 2013-11-14 21:19:57 -08:00
Raymond Feng be3c40c3d3 Add oauth2 related models 2013-11-14 21:19:56 -08:00
Raymond Feng be32341467 Add a stub to register role resolvers 2013-11-14 21:19:56 -08:00
Raymond Feng 660ef89755 Merge ScopeACL into ACL 2013-11-14 21:19:56 -08:00
Raymond Feng 0430cd2ae3 Add tests for isInRole and getRoles 2013-11-14 21:19:56 -08:00
Raymond Feng c3a1a85159 Add constants and more tests 2013-11-14 21:19:56 -08:00
Raymond Feng 48a0242711 Define the models/relations for ACL 2013-11-14 21:19:56 -08:00
Raymond Feng 67b934357b Start to build the ACL models 2013-11-14 21:19:56 -08:00
Raymond Feng 492aca7724 Update acl/role models 2013-11-14 21:19:56 -08:00
Raymond Feng f9849454e9 Update ACL model 2013-11-14 21:19:09 -08:00
Ritchie Martori 1de2a40e88 Update AccessToken and User relationship
- Add created default
 - Default TTLs for user login access tokens
 - Break out User / AccessToken relationship
2013-11-14 19:41:29 -08:00
Ritchie Martori efce5039f6 Added AccessToken created property 2013-11-14 16:47:24 -08:00
Ritchie Martori 1bb95607b9 Update session / token documentation 2013-11-14 15:42:37 -08:00
Ritchie Martori 64d8ff986b Add loopback.token() middleware 2013-11-14 13:01:47 -08:00
Ritchie 77a137eca6 Rename Session => AccessToken 2013-11-14 10:05:13 -08:00
Ritchie Martori 77e842d2a3 Fix bundle model name casing 2013-11-11 13:35:54 -08:00
Raymond Feng a00645dd83 Merge pull request #53 from strongloop/apns
Update Application model for the push notification
2013-11-06 11:50:56 -08:00
Ritchie Martori 04a2de9f35 Merge pull request #58 from strongloop/lb-1.2-project
1.2 app.boot()
2013-11-05 14:08:21 -08:00
Ritchie Martori 30df6cb597 Code review fixes based on feedback from https://github.com/strongloop/loopback/pull/57 2013-11-04 14:07:26 -08:00
Ritchie Martori 1e3bfc6c18 Automatically convert strings to connectors if they are LoopBack connectors 2013-11-01 12:53:30 -07:00
Ritchie 6179476030 Add app.dataSource() method 2013-10-31 10:06:43 -07:00
Ritchie Martori da5cb2c117 Add app.boot() 2013-10-29 14:44:44 -07:00
Raymond Feng 71339e159e Remove the proxy as it is now handled by the juggler 2013-10-24 20:40:33 -07:00
Raymond Feng e5a28b96ac Clean up the model 2013-10-23 13:25:50 -07:00
Ritchie Martori a3f1d8d944 Refactor email model into mail connector 2013-10-14 10:54:55 -07:00
Raymond Feng bfffd839a7 Update Application model for the push notification 2013-10-11 13:56:26 -07:00
Ritchie Martori 137f12977f Fix missing assert module 2013-10-11 13:49:04 -07:00
Raymond Feng 858ec8714d Fix the id and property access 2013-10-04 15:53:02 -07:00
Ritchie 159eb0076c Use a pure JS bcrypt 2013-09-12 12:09:43 -07:00
Raymond Feng 8784eb52cb Update the internal prefix 2013-08-30 16:52:27 -07:00
Raymond Feng 534cc4af2f Use findById to look up the instance by id 2013-08-16 22:11:58 -07:00
Raymond Feng e8ac3a960f Update the list of shared methods 2013-08-16 16:39:13 -07:00
Raymond Feng d94bca9134 Make sure User.setup calls Model.setup to support shared ctor 2013-08-15 16:59:16 -07:00
Raymond Feng 0d405d4292 Rename 'loopback-data' to 'loopback-datasource-juggler' 2013-07-30 14:26:49 -07:00
Ritchie Martori 423b4f2157 Fix login query 2013-07-28 14:33:13 -07:00
Ritchie Martori 7f1e88e816 Implement required and update invlaid id schemas 2013-07-28 13:20:55 -07:00
Ritchie Martori 0f3ad00086 Remove auth middleware and passport until adding in acl and strategies 2013-07-28 10:11:29 -07:00
Ritchie Martori 89f65d792f Clean up log out methods 2013-07-28 10:08:06 -07:00
Ritchie 35cafff877 Swagger integration 2013-07-25 16:24:00 -07:00
Ritchie 755b54f697 Fix hasMany / relational methods. Update docs. 2013-07-25 15:27:18 -07:00
Ritchie 8a7086be5c Add root true to remote methods 2013-07-24 17:21:15 -07:00
Ritchie d3eed3b321 Fix bad connector path 2013-07-24 11:13:30 -07:00
Raymond Feng 484f5270d9 Rename adapter to connector 2013-07-23 12:58:03 -07:00
Raymond Feng da1cd6739b Add more docs and apis to application model 2013-07-22 11:15:02 -07:00
Ritchie Martori 345435e7b2 Rename sl-remoting to strong-remoting 2013-07-19 12:07:04 -07:00
Raymond Feng 836df227c6 Add more functions and tests for Application model 2013-07-18 11:44:25 -07:00
Ritchie f7791fc366 Manually merge application 2013-07-17 14:30:38 -07:00
Ritchie 7c7667151a Manually merge rest adapter 2013-07-17 14:29:43 -07:00
Ritchie a2308cbc1c Merge 0.9 into master 2013-07-17 14:08:14 -07:00
Ritchie Martori d128ed4386 Remove remote option object 2013-07-16 12:51:59 -07:00
Raymond Feng 1970f12988 Rename jugglingdb to loopback-data 2013-07-16 12:03:41 -07:00
Raymond Feng 1cf4338298 Rename jugglingdb to loopback-data 2013-07-16 11:52:21 -07:00
Raymond Feng 1059a7b863 Add renamed files 2013-07-16 11:05:38 -07:00
Raymond Feng 2f773115fe rename asteroid to loopback 2013-07-16 11:02:06 -07:00
Raymond Feng a35d2b7365 rename asteroid to loopback 2013-07-16 10:42:47 -07:00
Ritchie Martori 407a50f493 Fix model remoting issue. 2013-07-16 10:25:02 -07:00
Ritchie Martori 4be6ebceb7 Fix inheritance bug 2013-07-15 20:14:04 -07:00
Ritchie Martori fbf0e35f1d Remove updateAttribute as remote method 2013-07-15 19:45:27 -07:00
Ritchie Martori 49da6f4249 Fix login bug. 2013-07-15 18:22:33 -07:00
Ritchie Martori aa8d1bb853 Added bcrypt for password hashing 2013-07-15 14:07:17 -07:00
Ritchie Martori 3f7e4b693a Refactor Model into class. Make createModel() just sugar. 2013-07-15 11:32:00 -07:00
Ritchie Martori d9b5daba0e Validate uniqueness and format of User email. 2013-07-12 17:03:13 -07:00
Ritchie Martori 16617a3737 Add user.logout() sugar method and update logout docs 2013-07-12 16:10:15 -07:00
Ritchie Martori a09b527000 Create 64 byte session ids 2013-07-12 15:47:58 -07:00
Raymond Feng e810213590 Experiment application model 2013-07-12 13:09:22 -07:00
Ritchie Martori a22cf5f4af Update docs and add asteroid.memory() sugar api
- added asteroid.memory()
 - added default session and email models to user model
2013-07-12 12:40:36 -07:00
Raymond Feng 83ca45e07e Add exports to models 2013-07-09 15:06:42 -07:00
Raymond Feng b4391e6b26 Updating models 2013-07-08 16:59:11 -07:00
Ritchie Martori fc0777de08 Add basic email verification 2013-07-03 13:40:14 -07:00
Ritchie Martori 8387a68b85 Initial users 2013-07-03 13:40:13 -07:00
Ritchie Martori 5f16585270 Add default user properties 2013-07-03 13:40:13 -07:00
Ritchie Martori 1abe583029 Add initial User model 2013-07-03 13:40:13 -07:00
Ritchie Martori 90d990b798 Remove app.modelBuilder() 2013-07-03 13:40:13 -07:00
Raymond Feng 29d1077630 Add schema skeletons for built-in models 2013-07-03 13:40:11 -07:00
Raymond Feng 9fe79dbfca Fix service() & services() 2013-07-02 17:22:51 -07:00
Ritchie Martori 3a420187e9 Add service method 2013-07-02 17:04:20 -07:00
Raymond Feng f45e241f4b Merge pull request #2 from strongloop/refactor/remotes
Get rid of handler creation for each request.
2013-07-02 16:51:28 -07:00
Raymond Feng 72020f8b62 Add more info to the models 2013-07-01 15:53:10 -07:00
Raymond Feng a228ade1b1 Add more information to the logical models 2013-07-01 11:51:40 -07:00
Ritchie Martori a4fb3012bf Only build a sl remoting handler when a model is added to the app. 2013-07-01 10:41:52 -07:00
Raymond Feng 8ec0533eb4 Add schema skeletons for built-in models 2013-06-26 16:25:51 -07:00
Ritchie Martori 9dab0896f0 Add geo point tests 2013-06-24 16:30:09 -07:00
Ritchie Martori d51cf6e23d Rename long to lng 2013-06-24 15:32:22 -07:00
Ritchie Martori 93e749c722 Add geo point 2013-06-24 15:22:25 -07:00
Ritchie Martori e10b2f639e Use the reqs body for constructing models 2013-06-24 12:04:27 -07:00
Ritchie e910a834a6 Merge branch 'master' of github.com:strongloop/asteroid 2013-06-20 10:21:02 -07:00
Ritchie 30247e71ed Doc updates 2013-06-20 10:17:55 -07:00
Ritchie Martori b426caccd3 Throw 404 when a model is not found during remote construction 2013-06-19 17:03:15 -07:00
Ritchie Martori cc51b07596 Fix missing options when creating a model 2013-06-18 11:44:47 -07:00
Ritchie dff810f31c Filter out non js files from middleware loader 2013-06-17 08:23:41 -07:00
Ritchie d358ab674c Remove sl-module-loader dependencies 2013-06-17 08:18:31 -07:00
Ritchie 654a89147c Merge branch 'refactor/api'
Conflicts:
	lib/application.js
2013-06-17 08:01:22 -07:00
Ritchie Martori 6428000fc0 Refactor create model 2013-06-12 21:30:20 -07:00
Ritchie Martori 166451443a Updated docs, updated tests 2013-06-12 15:44:38 -07:00
Ritchie Martori 935cd5cc77 Doc updates, tests 2013-06-11 09:01:44 -07:00
Ritchie Martori 1e1a227f86 Adding new data source 2013-06-07 17:37:30 -07:00
Ritchie Martori bcef4c88cf Remove node modules from ignore, removie configure middleware 2013-06-07 13:12:46 -07:00
Ritchie 79edef6ee6 More documentation updates based on feedback 2013-06-06 13:12:03 -07:00
Ritchie 22a55be841 Documentation updates 2013-06-05 17:11:21 -07:00
Ritchie 583f87a72b Fix sharedCtor 2013-06-05 09:35:41 -07:00
Ritchie Martori 0171969dcb Fix model builder reference 2013-05-28 08:53:40 -07:00
Ritchie Martori d7df71c686 Add hasMany to defined models 2013-05-24 15:09:13 -07:00
Raymond Feng d856ca026d Bring up the oracle integration 2013-05-24 08:57:52 -07:00
Ritchie 22a5db7b53 Add rest middleware 2013-05-24 07:59:59 -07:00
Ritchie 787a6bcf43 Integrate remoting and jugglingdb fork 2013-05-24 07:59:23 -07:00
Ritchie 279ce5b929 remove model-route 2013-05-23 09:53:42 -07:00
Ritchie 5fdc7076b7 Alias define and defineModel 2013-05-22 20:41:56 -07:00
Ritchie Martori bd2bf60467 Change references for module renames 2013-05-17 17:47:23 -07:00
Ritchie 7806495471 Fix missing proto variable 2013-05-07 11:38:52 -07:00
Ritchie Martori 7318acb75e Merge in models and data sources built from config to the app. 2013-05-01 12:34:31 -07:00
Ritchie Martori 6b007fc9e7 Initial model refactor 2013-05-01 12:11:43 -07:00
Ritchie Martori 463c2d8d56 Rename module loader 2013-04-19 17:50:48 -07:00
Ritchie Martori 64520fa67a Add api for building module loaders externally. 2013-04-19 14:10:59 -07:00
Ritchie Martori b9a239db32 Refactor various naming conventions. 2013-04-17 17:43:00 -07:00
Ritchie Martori 7c2e73f53a Initial working store, model, connection, and collection 2013-04-10 10:55:13 -07:00
Ritchie Martori 2a0f68e434 init 2013-04-09 09:02:36 -07:00