allex_hotelservice
Version:
49 lines (37 loc) • 1.79 kB
Markdown
# HotelService
AllexJS Service that is a specialization of `allex_servicecollectionservice`.
It creates an instance of an appropriate User class (in accordance to
`propertyhash.usermodule.namespace` and `propertyhash.usermodule.basename`)
per each User logged in - hence its name.
In order to perform its task, it:
1. Intercepts the incoming userhash after successful authentication - in the
overriden `Service`'s `preProcessUserHash` method.
2. _If the incoming role is `user`_, in the userhash it inserts the predefined
filter that will filter out just the User's personalized Service.
3. `spawn`s the child Service - mapped to the name of the logged-in User.
4. On both the successful and unsuccessful `spawn` the User will be `destroy`ed.
## Choosing the appropriate User class
`propertyhash` has to have the `usermodule` hash like
```javascript
{...
usermodule: {
username: 'someusername_or_blankstring',
namespace: 'somenamespace_or_blankstring',
basename: 'somebasename_of_blankstring'
}
}
```
When a remote user approaches the HotelService, the `preProcessUserHash` will
- check for existence of the `profile` key in the provided `userhash`
- if no `profile` is found, the user will be blocked by setting its `name` and
`role` to null
- if `profile` is found, the `role` key within will dictate the process of
constructing the User class name
### if `username` does not exist
`'allex'` will be used as the default username
### if `namespace` exists
`username__namespace_basenameroleservice`
### if `namespace` does not exist
`username_basenameroleservice`
Mind the `namespace`, `basename` and `role` in the above strings. These are
placeholders for the real values of `namespace`, `basename` and `role`.