├── .jshintrc
├── doc
├── api.json
└── CHANGELOG.md
├── .gitignore
├── .npmignore
├── gulpfile.js
├── .editorconfig
├── src
├── resources
│ ├── en-US.js
│ └── bg-BG.js
├── index.js
├── loading-mask
│ ├── loading-mask.js
│ └── loading-mask.css
├── logger.js
├── config.js
├── authorize-steps.js
├── locale.js
├── session.js
└── http.js
├── dist
├── es6
│ ├── resources
│ │ ├── en-US.js
│ │ └── bg-BG.js
│ ├── index.js
│ ├── loading-mask
│ │ ├── loading-mask.js
│ │ └── loading-mask.css
│ ├── logger.js
│ ├── config.js
│ ├── authorize-steps.js
│ ├── locale.js
│ ├── session.js
│ └── http.js
├── commonjs
│ ├── resources
│ │ ├── en-US.js
│ │ └── bg-BG.js
│ ├── index.js
│ ├── loading-mask
│ │ ├── loading-mask.js
│ │ └── loading-mask.css
│ ├── logger.js
│ ├── locale.js
│ ├── config.js
│ ├── session.js
│ └── authorize-steps.js
├── amd
│ ├── resources
│ │ ├── en-US.js
│ │ └── bg-BG.js
│ ├── index.js
│ ├── loading-mask
│ │ ├── loading-mask.css
│ │ └── loading-mask.js
│ ├── logger.js
│ ├── config.js
│ ├── locale.js
│ ├── authorize-steps.js
│ └── session.js
└── system
│ ├── resources
│ ├── en-US.js
│ └── bg-BG.js
│ ├── index.js
│ ├── loading-mask
│ ├── loading-mask.css
│ └── loading-mask.js
│ ├── logger.js
│ ├── config.js
│ ├── locale.js
│ └── authorize-steps.js
├── aurelia-auth-session.iml
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── karma.conf.js
├── package.json
└── config.js
/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "esnext": true
3 | }
4 |
--------------------------------------------------------------------------------
/doc/api.json:
--------------------------------------------------------------------------------
1 | {"classes":[],"methods":[],"properties":[],"events":[]}
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | jspm_packages
3 | bower_components
4 | .idea
5 | .DS_STORE
6 | *.swp
7 | npm-debug.log
--------------------------------------------------------------------------------
/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | jspm_packages
3 | bower_components
4 | .idea
5 | .DS_STORE
6 | test
7 | npm-debug.log
--------------------------------------------------------------------------------
/gulpfile.js:
--------------------------------------------------------------------------------
1 | // all gulp tasks are located in the ./build/tasks directory
2 | // gulp configuration is in files in ./build directory
3 | require('require-dir')('build/tasks');
4 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | # EditorConfig is awesome: http://EditorConfig.org
2 |
3 | # top-most EditorConfig file
4 | root = true
5 |
6 | # Unix-style newlines with a newline ending every file
7 | [*]
8 | end_of_line = lf
9 | insert_final_newline = true
10 |
11 | # 2 space indentation
12 | [**.*]
13 | indent_style = space
14 | indent_size = 2
--------------------------------------------------------------------------------
/src/resources/en-US.js:
--------------------------------------------------------------------------------
1 | export let data = {
2 | messages: {
3 | sessionTimedOut: 'Your session has timedout!',
4 | accessDenied: 'Access Denied!',
5 | internalServerError: 'Internal Server Error!',
6 | requestTimeout: 'Request Timeout!',
7 | notAuthorized: 'You are not authorized!',
8 | pleaseLogin: 'Please login!',
9 | errorHappend: 'Upss... Error!',
10 | loading: 'Loading'
11 | }
12 | };
13 |
--------------------------------------------------------------------------------
/dist/es6/resources/en-US.js:
--------------------------------------------------------------------------------
1 | export let data = {
2 | messages: {
3 | sessionTimedOut: 'Your session has timedout!',
4 | accessDenied: 'Access Denied!',
5 | internalServerError: 'Internal Server Error!',
6 | requestTimeout: 'Request Timeout!',
7 | notAuthorized: 'You are not authorized!',
8 | pleaseLogin: 'Please login!',
9 | errorHappend: 'Upss... Error!',
10 | loading: 'Loading'
11 | }
12 | };
13 |
--------------------------------------------------------------------------------
/src/resources/bg-BG.js:
--------------------------------------------------------------------------------
1 | export let data = {
2 | messages: {
3 | sessionTimedOut: 'Сесията Ви е изтекла!',
4 | accessDenied: 'Отказан достъп!',
5 | internalServerError: 'Грешка на сървъра!',
6 | requestTimeout: 'Времето за заявката изтече!',
7 | notAuthorized: 'Отказан достъп!',
8 | pleaseLogin: 'Моля влезте в системата!',
9 | errorHappend: 'Опа...Възникна грешка!',
10 | loading: 'Зареждане'
11 | }
12 | };
13 |
--------------------------------------------------------------------------------
/dist/es6/resources/bg-BG.js:
--------------------------------------------------------------------------------
1 | export let data = {
2 | messages: {
3 | sessionTimedOut: 'Сесията Ви е изтекла!',
4 | accessDenied: 'Отказан достъп!',
5 | internalServerError: 'Грешка на сървъра!',
6 | requestTimeout: 'Времето за заявката изтече!',
7 | notAuthorized: 'Отказан достъп!',
8 | pleaseLogin: 'Моля влезте в системата!',
9 | errorHappend: 'Опа...Възникна грешка!',
10 | loading: 'Зареждане'
11 | }
12 | };
13 |
--------------------------------------------------------------------------------
/aurelia-auth-session.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/index.js:
--------------------------------------------------------------------------------
1 | import {Config} from './config';
2 |
3 | export {Logger} from './logger';
4 | export {Session} from './session';
5 | export {Http} from './http';
6 | export {AccessRightsAuthorizeStep, RolesAuthorizeStep} from './authorize-steps';
7 |
8 | export function configure(aurelia, configCallback) {
9 | const config = new Config();
10 |
11 | if(configCallback !== undefined && typeof(configCallback) === 'function')
12 | {
13 | configCallback(config);
14 | }
15 |
16 | return config.locale();
17 | }
18 |
--------------------------------------------------------------------------------
/dist/es6/index.js:
--------------------------------------------------------------------------------
1 | import {Config} from './config';
2 |
3 | export {Logger} from './logger';
4 | export {Session} from './session';
5 | export {Http} from './http';
6 | export {AccessRightsAuthorizeStep, RolesAuthorizeStep} from './authorize-steps';
7 |
8 | export function configure(aurelia, configCallback) {
9 | const config = new Config();
10 |
11 | if(configCallback !== undefined && typeof(configCallback) === 'function')
12 | {
13 | configCallback(config);
14 | }
15 |
16 | return config.locale();
17 | }
18 |
--------------------------------------------------------------------------------
/dist/commonjs/resources/en-US.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | Object.defineProperty(exports, '__esModule', {
4 | value: true
5 | });
6 | var data = {
7 | messages: {
8 | sessionTimedOut: 'Your session has timedout!',
9 | accessDenied: 'Access Denied!',
10 | internalServerError: 'Internal Server Error!',
11 | requestTimeout: 'Request Timeout!',
12 | notAuthorized: 'You are not authorized!',
13 | pleaseLogin: 'Please login!',
14 | errorHappend: 'Upss... Error!',
15 | loading: 'Loading'
16 | }
17 | };
18 | exports.data = data;
--------------------------------------------------------------------------------
/dist/commonjs/resources/bg-BG.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | Object.defineProperty(exports, '__esModule', {
4 | value: true
5 | });
6 | var data = {
7 | messages: {
8 | sessionTimedOut: 'Сесията Ви е изтекла!',
9 | accessDenied: 'Отказан достъп!',
10 | internalServerError: 'Грешка на сървъра!',
11 | requestTimeout: 'Времето за заявката изтече!',
12 | notAuthorized: 'Отказан достъп!',
13 | pleaseLogin: 'Моля влезте в системата!',
14 | errorHappend: 'Опа...Възникна грешка!',
15 | loading: 'Зареждане'
16 | }
17 | };
18 | exports.data = data;
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | # Contributing
2 |
3 | We'd love for you to contribute and to make this project even better than it is today! If this interests you, please begin by reading [our contributing guidelines](https://github.com/DurandalProject/about/blob/master/CONTRIBUTING.md). The contributing document will provide you with all the information you need to get started. Once you have read that, you will need to also [sign our CLA](http://goo.gl/forms/dI8QDDSyKR) before we can accept a Pull Request from you. More information on the process is included in the [contributor's guide](https://github.com/DurandalProject/about/blob/master/CONTRIBUTING.md).
4 |
--------------------------------------------------------------------------------
/doc/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | ## 0.3.0 (2015-08-14)
2 |
3 |
4 | #### Bug Fixes
5 |
6 | * **index:** update to latest configuration api ([44f7a015](http://github.com/aurelia/skeleton-plugin/commit/44f7a015c0f15251bd07b327e42c875eaccbb735))
7 |
8 |
9 | ### 0.2.1 (2015-07-07)
10 |
11 |
12 | ## 0.2.0 (2015-06-08)
13 |
14 |
15 | #### Bug Fixes
16 |
17 | * **all:**
18 | * update to latest plugin api ([a050d736](http://github.com/aurelia/skeleton-plugin/commit/a050d736d32811066ffa902615cc73e1a5cbb6e3))
19 | * update compiler ([faf51acc](http://github.com/aurelia/skeleton-plugin/commit/faf51accc1514c6767eaed60df16dd3d586b5cc5))
20 |
21 |
22 | #### Features
23 |
24 | * **all:** initial commit of skeleton ([51a036d1](http://github.com/aurelia/skeleton-plugin/commit/51a036d146750a0bafd443dbc3def51ef7f89f6e))
25 |
26 |
--------------------------------------------------------------------------------
/src/loading-mask/loading-mask.js:
--------------------------------------------------------------------------------
1 | import $ from 'jquery';
2 | import {Locale} from '../locale';
3 |
4 | export class LoadingMask {
5 | constructor(resources) {
6 | this.loadingMask = undefined;
7 | this.dimScreen = undefined;
8 | this.dialog = undefined;
9 | this.loadingTitle = undefined;
10 | this.title = undefined;
11 | this.locale = Locale.Repository.default;
12 | this._createLoadingMask();
13 | }
14 |
15 | _createLoadingMask() {
16 | this.title = this.locale.translate('loading');
17 | this.dimScreen = '
';
18 | $('body').append(this.dimScreen);
19 | this.loadingMask = $('#loadingMask');
20 | this.loadingTitle = $('.loadingTitle').css({
21 | color: '#ffffff',
22 | opacity: 1,
23 | fontSize: '2.5em'
24 | //fontFamily: 'Roboto'
25 | });
26 | }
27 |
28 | show() {
29 | this.loadingMask.show();
30 | }
31 |
32 | hide() {
33 | this.loadingMask.hide();
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/dist/es6/loading-mask/loading-mask.js:
--------------------------------------------------------------------------------
1 | import $ from 'jquery';
2 | import {Locale} from '../locale';
3 |
4 | export class LoadingMask {
5 | constructor(resources) {
6 | this.loadingMask = undefined;
7 | this.dimScreen = undefined;
8 | this.dialog = undefined;
9 | this.loadingTitle = undefined;
10 | this.title = undefined;
11 | this.locale = Locale.Repository.default;
12 | this._createLoadingMask();
13 | }
14 |
15 | _createLoadingMask() {
16 | this.title = this.locale.translate('loading');
17 | this.dimScreen = '';
18 | $('body').append(this.dimScreen);
19 | this.loadingMask = $('#loadingMask');
20 | this.loadingTitle = $('.loadingTitle').css({
21 | color: '#ffffff',
22 | opacity: 1,
23 | fontSize: '2.5em'
24 | //fontFamily: 'Roboto'
25 | });
26 | }
27 |
28 | show() {
29 | this.loadingMask.show();
30 | }
31 |
32 | hide() {
33 | this.loadingMask.hide();
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2014 Durandal Inc.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/dist/commonjs/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | Object.defineProperty(exports, '__esModule', {
4 | value: true
5 | });
6 | exports.configure = configure;
7 |
8 | var _config = require('./config');
9 |
10 | var _logger = require('./logger');
11 |
12 | Object.defineProperty(exports, 'Logger', {
13 | enumerable: true,
14 | get: function get() {
15 | return _logger.Logger;
16 | }
17 | });
18 |
19 | var _session = require('./session');
20 |
21 | Object.defineProperty(exports, 'Session', {
22 | enumerable: true,
23 | get: function get() {
24 | return _session.Session;
25 | }
26 | });
27 |
28 | var _http = require('./http');
29 |
30 | Object.defineProperty(exports, 'Http', {
31 | enumerable: true,
32 | get: function get() {
33 | return _http.Http;
34 | }
35 | });
36 |
37 | var _authorizeSteps = require('./authorize-steps');
38 |
39 | Object.defineProperty(exports, 'AccessRightsAuthorizeStep', {
40 | enumerable: true,
41 | get: function get() {
42 | return _authorizeSteps.AccessRightsAuthorizeStep;
43 | }
44 | });
45 | Object.defineProperty(exports, 'RolesAuthorizeStep', {
46 | enumerable: true,
47 | get: function get() {
48 | return _authorizeSteps.RolesAuthorizeStep;
49 | }
50 | });
51 |
52 | function configure(aurelia, configCallback) {
53 | var config = new _config.Config();
54 |
55 | if (configCallback !== undefined && typeof configCallback === 'function') {
56 | configCallback(config);
57 | }
58 |
59 | return config.locale();
60 | }
--------------------------------------------------------------------------------
/src/logger.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by moshensky on 6/16/15.
3 | */
4 | import toastr from 'CodeSeven/toastr';
5 | import {Config} from './config';
6 |
7 | const defaults = {
8 | source: 'app',
9 | title: '',
10 | message: 'no message provided',
11 | data: '',
12 | showToast: true,
13 | type: 'info'
14 | };
15 |
16 | function log(options) {
17 | var opts = Object.assign({}, defaults, options);
18 | //system.log(opns.source + ', ' + opns.type + ', ' + opns.message + ', ' + opns.data + ' ');
19 |
20 | if (opts.showToast) {
21 | toastr[opts.type](opts.message, opts.title);
22 | }
23 | }
24 |
25 | function sanitize(options, messageType) {
26 | if (typeof options === 'string' || options instanceof String) {
27 | return {
28 | message: options,
29 | type: messageType
30 | };
31 | }
32 |
33 | options.type = messageType;
34 | return options;
35 | }
36 |
37 | export class Logger {
38 | constructor() {
39 | let defOpts = {
40 | closeButton: true,
41 | positionClass: 'toast-bottom-right',
42 | fadeOut: 1000
43 | };
44 |
45 | let configOptions = Config.loggerOpts || {};
46 | let options = Object.assign(toastr.options, defOpts, configOptions);
47 | toastr.options = options;
48 | }
49 |
50 | warn(options) {
51 | log(sanitize(options, 'warning'));
52 | }
53 |
54 | info(options) {
55 | log(sanitize(options, 'info'));
56 | }
57 |
58 | error(options) {
59 | log(sanitize(options, 'error'));
60 | }
61 |
62 | success(options) {
63 | log(sanitize(options, 'success'));
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/dist/es6/logger.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by moshensky on 6/16/15.
3 | */
4 | import toastr from 'CodeSeven/toastr';
5 | import {Config} from './config';
6 |
7 | const defaults = {
8 | source: 'app',
9 | title: '',
10 | message: 'no message provided',
11 | data: '',
12 | showToast: true,
13 | type: 'info'
14 | };
15 |
16 | function log(options) {
17 | var opts = Object.assign({}, defaults, options);
18 | //system.log(opns.source + ', ' + opns.type + ', ' + opns.message + ', ' + opns.data + ' ');
19 |
20 | if (opts.showToast) {
21 | toastr[opts.type](opts.message, opts.title);
22 | }
23 | }
24 |
25 | function sanitize(options, messageType) {
26 | if (typeof options === 'string' || options instanceof String) {
27 | return {
28 | message: options,
29 | type: messageType
30 | };
31 | }
32 |
33 | options.type = messageType;
34 | return options;
35 | }
36 |
37 | export class Logger {
38 | constructor() {
39 | let defOpts = {
40 | closeButton: true,
41 | positionClass: 'toast-bottom-right',
42 | fadeOut: 1000
43 | };
44 |
45 | let configOptions = Config.loggerOpts || {};
46 | let options = Object.assign(toastr.options, defOpts, configOptions);
47 | toastr.options = options;
48 | }
49 |
50 | warn(options) {
51 | log(sanitize(options, 'warning'));
52 | }
53 |
54 | info(options) {
55 | log(sanitize(options, 'info'));
56 | }
57 |
58 | error(options) {
59 | log(sanitize(options, 'error'));
60 | }
61 |
62 | success(options) {
63 | log(sanitize(options, 'success'));
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/dist/amd/resources/en-US.js:
--------------------------------------------------------------------------------
1 | define(['exports'], function (exports) {
2 | 'use strict';
3 |
4 | Object.defineProperty(exports, '__esModule', {
5 | value: true
6 | });
7 | var data = {
8 | messages: {
9 | sessionTimedOut: 'Your session has timedout!',
10 | accessDenied: 'Access Denied!',
11 | internalServerError: 'Internal Server Error!',
12 | requestTimeout: 'Request Timeout!',
13 | notAuthorized: 'You are not authorized!',
14 | pleaseLogin: 'Please login!',
15 | errorHappend: 'Upss... Error!',
16 | loading: 'Loading'
17 | }
18 | };
19 | exports.data = data;
20 | });
21 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc291cmNlcy9lbi1VUy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTyxNQUFJLElBQUksR0FBRztBQUNoQixZQUFRLEVBQUU7QUFDUixxQkFBZSxFQUFFLDRCQUE0QjtBQUM3QyxrQkFBWSxFQUFFLGdCQUFnQjtBQUM5Qix5QkFBbUIsRUFBRSx3QkFBd0I7QUFDN0Msb0JBQWMsRUFBRSxrQkFBa0I7QUFDbEMsbUJBQWEsRUFBRSx5QkFBeUI7QUFDeEMsaUJBQVcsRUFBRSxlQUFlO0FBQzVCLGtCQUFZLEVBQUUsZ0JBQWdCO0FBQzlCLGFBQU8sRUFBRSxTQUFTO0tBQ25CO0dBQ0YsQ0FBQyIsImZpbGUiOiJyZXNvdXJjZXMvZW4tVVMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgbGV0IGRhdGEgPSB7XG4gIG1lc3NhZ2VzOiB7XG4gICAgc2Vzc2lvblRpbWVkT3V0OiAnWW91ciBzZXNzaW9uIGhhcyB0aW1lZG91dCEnLFxuICAgIGFjY2Vzc0RlbmllZDogJ0FjY2VzcyBEZW5pZWQhJyxcbiAgICBpbnRlcm5hbFNlcnZlckVycm9yOiAnSW50ZXJuYWwgU2VydmVyIEVycm9yIScsXG4gICAgcmVxdWVzdFRpbWVvdXQ6ICdSZXF1ZXN0IFRpbWVvdXQhJyxcbiAgICBub3RBdXRob3JpemVkOiAnWW91IGFyZSBub3QgYXV0aG9yaXplZCEnLFxuICAgIHBsZWFzZUxvZ2luOiAnUGxlYXNlIGxvZ2luIScsXG4gICAgZXJyb3JIYXBwZW5kOiAnVXBzcy4uLiBFcnJvciEnLFxuICAgIGxvYWRpbmc6ICdMb2FkaW5nJ1xuICB9XG59O1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
--------------------------------------------------------------------------------
/dist/system/resources/en-US.js:
--------------------------------------------------------------------------------
1 | System.register([], function (_export) {
2 | 'use strict';
3 |
4 | var data;
5 | return {
6 | setters: [],
7 | execute: function () {
8 | data = {
9 | messages: {
10 | sessionTimedOut: 'Your session has timedout!',
11 | accessDenied: 'Access Denied!',
12 | internalServerError: 'Internal Server Error!',
13 | requestTimeout: 'Request Timeout!',
14 | notAuthorized: 'You are not authorized!',
15 | pleaseLogin: 'Please login!',
16 | errorHappend: 'Upss... Error!',
17 | loading: 'Loading'
18 | }
19 | };
20 |
21 | _export('data', data);
22 | }
23 | };
24 | });
25 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc291cmNlcy9lbi1VUy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7TUFBVyxJQUFJOzs7O0FBQUosVUFBSSxHQUFHO0FBQ2hCLGdCQUFRLEVBQUU7QUFDUix5QkFBZSxFQUFFLDRCQUE0QjtBQUM3QyxzQkFBWSxFQUFFLGdCQUFnQjtBQUM5Qiw2QkFBbUIsRUFBRSx3QkFBd0I7QUFDN0Msd0JBQWMsRUFBRSxrQkFBa0I7QUFDbEMsdUJBQWEsRUFBRSx5QkFBeUI7QUFDeEMscUJBQVcsRUFBRSxlQUFlO0FBQzVCLHNCQUFZLEVBQUUsZ0JBQWdCO0FBQzlCLGlCQUFPLEVBQUUsU0FBUztTQUNuQjtPQUNGIiwiZmlsZSI6InJlc291cmNlcy9lbi1VUy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBsZXQgZGF0YSA9IHtcbiAgbWVzc2FnZXM6IHtcbiAgICBzZXNzaW9uVGltZWRPdXQ6ICdZb3VyIHNlc3Npb24gaGFzIHRpbWVkb3V0IScsXG4gICAgYWNjZXNzRGVuaWVkOiAnQWNjZXNzIERlbmllZCEnLFxuICAgIGludGVybmFsU2VydmVyRXJyb3I6ICdJbnRlcm5hbCBTZXJ2ZXIgRXJyb3IhJyxcbiAgICByZXF1ZXN0VGltZW91dDogJ1JlcXVlc3QgVGltZW91dCEnLFxuICAgIG5vdEF1dGhvcml6ZWQ6ICdZb3UgYXJlIG5vdCBhdXRob3JpemVkIScsXG4gICAgcGxlYXNlTG9naW46ICdQbGVhc2UgbG9naW4hJyxcbiAgICBlcnJvckhhcHBlbmQ6ICdVcHNzLi4uIEVycm9yIScsXG4gICAgbG9hZGluZzogJ0xvYWRpbmcnXG4gIH1cbn07XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # aurelia-auth-session
2 |
3 | This plugin is for the [Aurelia](http://www.aurelia.io/) platform. It sets up authentication, authorization and user session.
4 |
5 |
6 | ## How to install this plugin?
7 |
8 | 1. In your project install the plugin via `jspm` with following command
9 |
10 | ```shell
11 | jspm install bootstrap
12 | jspm install font-awesome
13 | jspm install github:CodeSeven/toastr
14 | jspm install service=github:moshensky/aurelia-auth-session
15 | ```
16 |
17 | 2. Include css files somewhere (for example app.html)
18 |
19 | ```html
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 | ```
34 |
35 | 3. Add plugin configuration in main.js
36 |
37 | ```javascript
38 |
39 | export function configure(aurelia) {
40 | aurelia.use
41 | .plugin('service', (config) => {
42 | config.useLocale('bg-BG');
43 | config.setHttpService({
44 | authHost: 'http://localhost:9000',
45 | serviceHost: 'http://localhost:9000',
46 | serviceApiPrefix: '/',
47 | requestTimeout: 30000, // milliseconds
48 | hosts: {
49 | "hostName": 'host address'
50 | }
51 | });
52 | config.routerAuthStep({
53 | loginRoute: 'login'
54 | });
55 | });
56 |
57 | aurelia.start().then(a => a.setRoot());
58 | }
59 | ```
60 |
--------------------------------------------------------------------------------
/dist/amd/resources/bg-BG.js:
--------------------------------------------------------------------------------
1 | define(['exports'], function (exports) {
2 | 'use strict';
3 |
4 | Object.defineProperty(exports, '__esModule', {
5 | value: true
6 | });
7 | var data = {
8 | messages: {
9 | sessionTimedOut: 'Сесията Ви е изтекла!',
10 | accessDenied: 'Отказан достъп!',
11 | internalServerError: 'Грешка на сървъра!',
12 | requestTimeout: 'Времето за заявката изтече!',
13 | notAuthorized: 'Отказан достъп!',
14 | pleaseLogin: 'Моля влезте в системата!',
15 | errorHappend: 'Опа...Възникна грешка!',
16 | loading: 'Зареждане'
17 | }
18 | };
19 | exports.data = data;
20 | });
21 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc291cmNlcy9iZy1CRy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBTyxNQUFJLElBQUksR0FBRztBQUNoQixZQUFRLEVBQUU7QUFDUixxQkFBZSxFQUFFLHVCQUF1QjtBQUN4QyxrQkFBWSxFQUFFLGlCQUFpQjtBQUMvQix5QkFBbUIsRUFBRSxvQkFBb0I7QUFDekMsb0JBQWMsRUFBRSw2QkFBNkI7QUFDN0MsbUJBQWEsRUFBRSxpQkFBaUI7QUFDaEMsaUJBQVcsRUFBRSwwQkFBMEI7QUFDdkMsa0JBQVksRUFBRSx3QkFBd0I7QUFDdEMsYUFBTyxFQUFFLFdBQVc7S0FDckI7R0FDRixDQUFDIiwiZmlsZSI6InJlc291cmNlcy9iZy1CRy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBsZXQgZGF0YSA9IHtcbiAgbWVzc2FnZXM6IHtcbiAgICBzZXNzaW9uVGltZWRPdXQ6ICfQodC10YHQuNGP0YLQsCDQktC4INC1INC40LfRgtC10LrQu9CwIScsXG4gICAgYWNjZXNzRGVuaWVkOiAn0J7RgtC60LDQt9Cw0L0g0LTQvtGB0YLRitC/IScsXG4gICAgaW50ZXJuYWxTZXJ2ZXJFcnJvcjogJ9CT0YDQtdGI0LrQsCDQvdCwINGB0YrRgNCy0YrRgNCwIScsXG4gICAgcmVxdWVzdFRpbWVvdXQ6ICfQktGA0LXQvNC10YLQviDQt9CwINC30LDRj9Cy0LrQsNGC0LAg0LjQt9GC0LXRh9C1IScsXG4gICAgbm90QXV0aG9yaXplZDogJ9Ce0YLQutCw0LfQsNC9INC00L7RgdGC0YrQvyEnLFxuICAgIHBsZWFzZUxvZ2luOiAn0JzQvtC70Y8g0LLQu9C10LfRgtC1INCyINGB0LjRgdGC0LXQvNCw0YLQsCEnLFxuICAgIGVycm9ySGFwcGVuZDogJ9Ce0L/QsC4uLtCS0YrQt9C90LjQutC90LAg0LPRgNC10YjQutCwIScsXG4gICAgbG9hZGluZzogJ9CX0LDRgNC10LbQtNCw0L3QtSdcbiAgfVxufTtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
--------------------------------------------------------------------------------
/dist/system/resources/bg-BG.js:
--------------------------------------------------------------------------------
1 | System.register([], function (_export) {
2 | 'use strict';
3 |
4 | var data;
5 | return {
6 | setters: [],
7 | execute: function () {
8 | data = {
9 | messages: {
10 | sessionTimedOut: 'Сесията Ви е изтекла!',
11 | accessDenied: 'Отказан достъп!',
12 | internalServerError: 'Грешка на сървъра!',
13 | requestTimeout: 'Времето за заявката изтече!',
14 | notAuthorized: 'Отказан достъп!',
15 | pleaseLogin: 'Моля влезте в системата!',
16 | errorHappend: 'Опа...Възникна грешка!',
17 | loading: 'Зареждане'
18 | }
19 | };
20 |
21 | _export('data', data);
22 | }
23 | };
24 | });
25 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInJlc291cmNlcy9iZy1CRy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7TUFBVyxJQUFJOzs7O0FBQUosVUFBSSxHQUFHO0FBQ2hCLGdCQUFRLEVBQUU7QUFDUix5QkFBZSxFQUFFLHVCQUF1QjtBQUN4QyxzQkFBWSxFQUFFLGlCQUFpQjtBQUMvQiw2QkFBbUIsRUFBRSxvQkFBb0I7QUFDekMsd0JBQWMsRUFBRSw2QkFBNkI7QUFDN0MsdUJBQWEsRUFBRSxpQkFBaUI7QUFDaEMscUJBQVcsRUFBRSwwQkFBMEI7QUFDdkMsc0JBQVksRUFBRSx3QkFBd0I7QUFDdEMsaUJBQU8sRUFBRSxXQUFXO1NBQ3JCO09BQ0YiLCJmaWxlIjoicmVzb3VyY2VzL2JnLUJHLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGxldCBkYXRhID0ge1xuICBtZXNzYWdlczoge1xuICAgIHNlc3Npb25UaW1lZE91dDogJ9Ch0LXRgdC40Y/RgtCwINCS0Lgg0LUg0LjQt9GC0LXQutC70LAhJyxcbiAgICBhY2Nlc3NEZW5pZWQ6ICfQntGC0LrQsNC30LDQvSDQtNC+0YHRgtGK0L8hJyxcbiAgICBpbnRlcm5hbFNlcnZlckVycm9yOiAn0JPRgNC10YjQutCwINC90LAg0YHRitGA0LLRitGA0LAhJyxcbiAgICByZXF1ZXN0VGltZW91dDogJ9CS0YDQtdC80LXRgtC+INC30LAg0LfQsNGP0LLQutCw0YLQsCDQuNC30YLQtdGH0LUhJyxcbiAgICBub3RBdXRob3JpemVkOiAn0J7RgtC60LDQt9Cw0L0g0LTQvtGB0YLRitC/IScsXG4gICAgcGxlYXNlTG9naW46ICfQnNC+0LvRjyDQstC70LXQt9GC0LUg0LIg0YHQuNGB0YLQtdC80LDRgtCwIScsXG4gICAgZXJyb3JIYXBwZW5kOiAn0J7Qv9CwLi4u0JLRitC30L3QuNC60L3QsCDQs9GA0LXRiNC60LAhJyxcbiAgICBsb2FkaW5nOiAn0JfQsNGA0LXQttC00LDQvdC1J1xuICB9XG59O1xuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
--------------------------------------------------------------------------------
/dist/system/index.js:
--------------------------------------------------------------------------------
1 | System.register(['./config', './logger', './session', './http', './authorize-steps'], function (_export) {
2 | 'use strict';
3 |
4 | var Config;
5 |
6 | _export('configure', configure);
7 |
8 | function configure(aurelia, configCallback) {
9 | var config = new Config();
10 |
11 | if (configCallback !== undefined && typeof configCallback === 'function') {
12 | configCallback(config);
13 | }
14 |
15 | return config.locale();
16 | }
17 |
18 | return {
19 | setters: [function (_config) {
20 | Config = _config.Config;
21 | }, function (_logger) {
22 | _export('Logger', _logger.Logger);
23 | }, function (_session) {
24 | _export('Session', _session.Session);
25 | }, function (_http) {
26 | _export('Http', _http.Http);
27 | }, function (_authorizeSteps) {
28 | _export('AccessRightsAuthorizeStep', _authorizeSteps.AccessRightsAuthorizeStep);
29 |
30 | _export('RolesAuthorizeStep', _authorizeSteps.RolesAuthorizeStep);
31 | }],
32 | execute: function () {}
33 | };
34 | });
35 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFPTyxXQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsY0FBYyxFQUFFO0FBQ2pELFFBQU0sTUFBTSxHQUFHLElBQUksTUFBTSxFQUFFLENBQUM7O0FBRTVCLFFBQUcsY0FBYyxLQUFLLFNBQVMsSUFBSSxPQUFPLGNBQWMsQUFBQyxLQUFLLFVBQVUsRUFDeEU7QUFDRSxvQkFBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0tBQ3hCOztBQUVELFdBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0dBQ3hCOzs7O3VCQWhCTyxNQUFNOztnQ0FFTixNQUFNOztrQ0FDTixPQUFPOzs0QkFDUCxJQUFJOzsyREFDSix5QkFBeUI7O29EQUFFLGtCQUFrQiIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uZmlnfSBmcm9tICcuL2NvbmZpZyc7XG5cbmV4cG9ydCB7TG9nZ2VyfSBmcm9tICcuL2xvZ2dlcic7XG5leHBvcnQge1Nlc3Npb259IGZyb20gJy4vc2Vzc2lvbic7XG5leHBvcnQge0h0dHB9IGZyb20gJy4vaHR0cCc7XG5leHBvcnQge0FjY2Vzc1JpZ2h0c0F1dGhvcml6ZVN0ZXAsIFJvbGVzQXV0aG9yaXplU3RlcH0gZnJvbSAnLi9hdXRob3JpemUtc3RlcHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY29uZmlndXJlKGF1cmVsaWEsIGNvbmZpZ0NhbGxiYWNrKSB7XG4gIGNvbnN0IGNvbmZpZyA9IG5ldyBDb25maWcoKTtcblxuICBpZihjb25maWdDYWxsYmFjayAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZihjb25maWdDYWxsYmFjaykgPT09ICdmdW5jdGlvbicpXG4gIHtcbiAgICBjb25maWdDYWxsYmFjayhjb25maWcpO1xuICB9XG5cbiAgcmV0dXJuIGNvbmZpZy5sb2NhbGUoKTtcbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
--------------------------------------------------------------------------------
/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration
2 | // Generated on Fri Dec 05 2014 16:49:29 GMT-0500 (EST)
3 |
4 | module.exports = function(config) {
5 | config.set({
6 |
7 | // base path that will be used to resolve all patterns (eg. files, exclude)
8 | basePath: '',
9 |
10 |
11 | // frameworks to use
12 | // available frameworks: https://npmjs.org/browse/keyword/karma-adapter
13 | frameworks: ['jspm', 'jasmine'],
14 |
15 | jspm: {
16 | // Edit this to your needs
17 | loadFiles: ['src/**/*.js', 'test/unit/**/*.js']
18 | },
19 |
20 |
21 | // list of files / patterns to load in the browser
22 | files: [],
23 |
24 |
25 | // list of files to exclude
26 | exclude: [
27 | ],
28 |
29 |
30 | // preprocess matching files before serving them to the browser
31 | // available preprocessors: https://npmjs.org/browse/keyword/karma-preprocessor
32 | preprocessors: {
33 | 'test/**/*.js': ['babel'],
34 | 'src/**/*.js': ['babel']
35 | },
36 | 'babelPreprocessor': {
37 | options: {
38 | sourceMap: 'inline',
39 | modules: 'system',
40 | moduleIds: false,
41 | optional: [
42 | "es7.decorators",
43 | "es7.classProperties"
44 | ]
45 | }
46 | },
47 |
48 | // test results reporter to use
49 | // possible values: 'dots', 'progress'
50 | // available reporters: https://npmjs.org/browse/keyword/karma-reporter
51 | reporters: ['progress'],
52 |
53 |
54 | // web server port
55 | port: 9876,
56 |
57 |
58 | // enable / disable colors in the output (reporters and logs)
59 | colors: true,
60 |
61 |
62 | // level of logging
63 | // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
64 | logLevel: config.LOG_INFO,
65 |
66 |
67 | // enable / disable watching file and executing tests whenever any file changes
68 | autoWatch: true,
69 |
70 |
71 | // start these browsers
72 | // available browser launchers: https://npmjs.org/browse/keyword/karma-launcher
73 | browsers: ['Chrome'],
74 |
75 |
76 | // Continuous Integration mode
77 | // if true, Karma captures browsers, runs the tests and exits
78 | singleRun: false
79 | });
80 | };
81 |
--------------------------------------------------------------------------------
/src/config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by moshensky on 6/17/15.
3 | */
4 | import {Locale} from './locale';
5 |
6 | export class ConfigDefaults {
7 | }
8 |
9 | ConfigDefaults._defaults = {
10 | locale: 'en-US',
11 | localeResources: 'service/resources/'
12 | };
13 |
14 | ConfigDefaults.defaults = function () {
15 | var defaults = {};
16 | Object.assign(defaults, ConfigDefaults._defaults);
17 | return defaults;
18 | };
19 |
20 | export class Config {
21 | constructor(innerConfig) {
22 | this.innerConfig = innerConfig;
23 | this.values = this.innerConfig ? {} : ConfigDefaults.defaults();
24 | this.changedHandlers = new Map();
25 | }
26 |
27 | getValue(identifier) {
28 | if (this.values.hasOwnProperty(identifier) !== null && this.values[identifier] !== undefined) {
29 | return this.values[identifier];
30 | }
31 | if (this.innerConfig !== null) {
32 | return this.innerConfig.getValue(identifier);
33 | }
34 | throw Error('Config not found: ' + identifier);
35 | }
36 |
37 | setValue(identifier, value) {
38 | this.values[identifier] = value;
39 | return this; //fluent API
40 | }
41 |
42 | onLocaleChanged(callback) {
43 | if (this.innerConfig !== undefined) {
44 | return this.innerConfig.onLocaleChanged(callback);
45 | } else {
46 | let id = ++ValidationConfig.uniqueListenerId;
47 | this.changedHandlers.set(id, callback);
48 | return () => {
49 | this.changedHandlers.delete(id);
50 | };
51 | }
52 | }
53 |
54 | getDependencies() {
55 | return this.getValue('dependencies');
56 | }
57 |
58 | setHttpService(httpOpts) {
59 | Config.httpOpts = httpOpts;
60 | }
61 |
62 | setLoggerService(loggerOpts) {
63 | Config.loggerOpts = loggerOpts;
64 | }
65 |
66 | routerAuthStep(opts) {
67 | Config.routerAuthStepOpts = opts;
68 | }
69 |
70 | useLocale(localeIdentifier) {
71 | this.setValue('locale', localeIdentifier);
72 | var callbacks = Array.from(this.changedHandlers.values());
73 | for (let i = 0; i < callbacks.length; i++) {
74 | callbacks[i]();
75 | }
76 | return this;
77 | }
78 |
79 | locale() {
80 | return Locale.Repository
81 | .load(this.getValue('locale'), this.getValue('localeResources'));
82 | }
83 | }
84 |
85 | Config.uniqueListenerId = 0;
86 |
--------------------------------------------------------------------------------
/dist/es6/config.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by moshensky on 6/17/15.
3 | */
4 | import {Locale} from './locale';
5 |
6 | export class ConfigDefaults {
7 | }
8 |
9 | ConfigDefaults._defaults = {
10 | locale: 'en-US',
11 | localeResources: 'service/resources/'
12 | };
13 |
14 | ConfigDefaults.defaults = function () {
15 | var defaults = {};
16 | Object.assign(defaults, ConfigDefaults._defaults);
17 | return defaults;
18 | };
19 |
20 | export class Config {
21 | constructor(innerConfig) {
22 | this.innerConfig = innerConfig;
23 | this.values = this.innerConfig ? {} : ConfigDefaults.defaults();
24 | this.changedHandlers = new Map();
25 | }
26 |
27 | getValue(identifier) {
28 | if (this.values.hasOwnProperty(identifier) !== null && this.values[identifier] !== undefined) {
29 | return this.values[identifier];
30 | }
31 | if (this.innerConfig !== null) {
32 | return this.innerConfig.getValue(identifier);
33 | }
34 | throw Error('Config not found: ' + identifier);
35 | }
36 |
37 | setValue(identifier, value) {
38 | this.values[identifier] = value;
39 | return this; //fluent API
40 | }
41 |
42 | onLocaleChanged(callback) {
43 | if (this.innerConfig !== undefined) {
44 | return this.innerConfig.onLocaleChanged(callback);
45 | } else {
46 | let id = ++ValidationConfig.uniqueListenerId;
47 | this.changedHandlers.set(id, callback);
48 | return () => {
49 | this.changedHandlers.delete(id);
50 | };
51 | }
52 | }
53 |
54 | getDependencies() {
55 | return this.getValue('dependencies');
56 | }
57 |
58 | setHttpService(httpOpts) {
59 | Config.httpOpts = httpOpts;
60 | }
61 |
62 | setLoggerService(loggerOpts) {
63 | Config.loggerOpts = loggerOpts;
64 | }
65 |
66 | routerAuthStep(opts) {
67 | Config.routerAuthStepOpts = opts;
68 | }
69 |
70 | useLocale(localeIdentifier) {
71 | this.setValue('locale', localeIdentifier);
72 | var callbacks = Array.from(this.changedHandlers.values());
73 | for (let i = 0; i < callbacks.length; i++) {
74 | callbacks[i]();
75 | }
76 | return this;
77 | }
78 |
79 | locale() {
80 | return Locale.Repository
81 | .load(this.getValue('locale'), this.getValue('localeResources'));
82 | }
83 | }
84 |
85 | Config.uniqueListenerId = 0;
86 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "aurelia-auth-session",
3 | "version": "0.0.1",
4 | "description": "common files and config for an aurelia app using auth and webtoken",
5 | "keywords": [
6 | "aurelia",
7 | "authorization",
8 | "plugin"
9 | ],
10 | "homepage": "http://github.com/moshensky/aurelia-auth-session",
11 | "license": "MIT",
12 | "author": "Nikita Moshensky (http://moshensky.com/)",
13 | "main": "dist/commonjs/index.js",
14 | "repository": {
15 | "type": "git",
16 | "url": "http://github.com/moshensky/aurelia-auth-session"
17 | },
18 | "devDependencies": {
19 | "aurelia-tools": "^0.1.3",
20 | "browser-sync": "^2.9.6",
21 | "colors": "^1.1.2",
22 | "conventional-changelog": "0.0.11",
23 | "del": "^1.1.0",
24 | "gulp": "^3.8.10",
25 | "gulp-babel": "^5.1.0",
26 | "gulp-bump": "^0.1.11",
27 | "gulp-jade": "^1.1.0",
28 | "gulp-jshint": "^1.9.0",
29 | "gulp-less": "^3.0.3",
30 | "gulp-sourcemaps": "^1.5.2",
31 | "gulp-yuidoc": "^0.1.2",
32 | "jasmine-core": "^2.1.3",
33 | "jshint-stylish": "^1.0.0",
34 | "karma": "^0.12.28",
35 | "karma-babel-preprocessor": "^5.2.1",
36 | "karma-chrome-launcher": "^0.1.7",
37 | "karma-coverage": "^0.3.1",
38 | "karma-jasmine": "^0.3.5",
39 | "karma-jspm": "^1.1.5",
40 | "moment": "^2.10.6",
41 | "object.assign": "^1.0.3",
42 | "require-dir": "^0.1.0",
43 | "run-sequence": "^1.0.2",
44 | "vinyl-paths": "^1.0.0",
45 | "yargs": "^2.1.1"
46 | },
47 | "jspm": {
48 | "main": "index",
49 | "format": "amd",
50 | "directories": {
51 | "lib": "dist/amd"
52 | },
53 | "dependencies": {
54 | "CodeSeven/toastr": "github:CodeSeven/toastr@^2.1.2",
55 | "aurelia-dependency-injection": "npm:aurelia-dependency-injection@^1.0.0-beta.1",
56 | "aurelia-http-client": "npm:aurelia-http-client@^1.0.0-beta.1",
57 | "aurelia-router": "npm:aurelia-router@^1.0.0-beta.1",
58 | "babel": "npm:babel-core@5.8.34",
59 | "jquery": "github:components/jquery@^2.1.4"
60 | },
61 | "devDependencies": {
62 | "babel-runtime": "npm:babel-runtime@5.8.34",
63 | "core-js": "npm:core-js@^1.0.0",
64 | "traceur": "github:jmcriffey/bower-traceur@0.0.91",
65 | "traceur-runtime": "github:jmcriffey/bower-traceur-runtime@0.0.91"
66 | }
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/src/authorize-steps.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by moshensky on 6/17/15.
3 | */
4 | import {inject} from 'aurelia-dependency-injection';
5 | import {Session} from './session';
6 | import {Logger} from './logger';
7 | import {Locale} from './locale';
8 | import {Config} from './config';
9 | import {Redirect} from 'aurelia-router';
10 |
11 |
12 | class BaseAuthorizeStep {
13 | constructor(session, logger) {
14 | this.session = session;
15 | this.logger = logger;
16 | this.locale = Locale.Repository.default;
17 | this.loginRoute = Config.routerAuthStepOpts.loginRoute;
18 | }
19 |
20 | run(navigationInstruction, next) {
21 | if (!this.session.isUserLoggedIn() && navigationInstruction.config.route !== this.loginRoute) {
22 | this.logger.warn(this.locale.translate('pleaseLogin'));
23 | return next.cancel(new Redirect(this.loginRoute));
24 | }
25 |
26 | let canAccess = this.authorize(navigationInstruction);
27 | if (canAccess === false) {
28 | this.logger.error(this.locale.translate('notAuthorized'));
29 | return next.cancel();
30 | }
31 |
32 | return next();
33 | }
34 |
35 | authorize(navigationInstruction) {
36 | if (navigationInstruction.parentInstruction === null) {
37 | return this.canAccess(navigationInstruction);
38 | } else {
39 | let canAccess = this.canAccess(navigationInstruction);
40 | if (hasRole){
41 | return this.authorize(navigationInstruction.parentInstruction)
42 | } else {
43 | return false;
44 | }
45 | }
46 | }
47 |
48 | canAccess() {
49 |
50 | }
51 | }
52 |
53 |
54 | @inject(Session, Logger)
55 | export class RolesAuthorizeStep extends BaseAuthorizeStep {
56 | constructor(session, logger) {
57 | super(session, logger);
58 | }
59 |
60 | canAccess(navigationInstruction) {
61 | if (navigationInstruction.config.roles) {
62 | return this.session.userHasAtLeastOneRole(navigationInstruction.config.roles);
63 | }
64 |
65 | return true;
66 | }
67 | }
68 |
69 |
70 | @inject(Session, Logger)
71 | export class AccessRightsAuthorizeStep extends BaseAuthorizeStep {
72 | constructor(session, logger) {
73 | super(session, logger);
74 | }
75 |
76 | canAccess(navigationInstruction) {
77 | if (navigationInstruction.config.accessRight) {
78 | return this.session.userHasAccessRight(navigationInstruction.config.accessRight);
79 | }
80 |
81 | return true;
82 | }
83 | }
84 |
85 |
--------------------------------------------------------------------------------
/dist/es6/authorize-steps.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by moshensky on 6/17/15.
3 | */
4 | import {inject} from 'aurelia-dependency-injection';
5 | import {Session} from './session';
6 | import {Logger} from './logger';
7 | import {Locale} from './locale';
8 | import {Config} from './config';
9 | import {Redirect} from 'aurelia-router';
10 |
11 |
12 | class BaseAuthorizeStep {
13 | constructor(session, logger) {
14 | this.session = session;
15 | this.logger = logger;
16 | this.locale = Locale.Repository.default;
17 | this.loginRoute = Config.routerAuthStepOpts.loginRoute;
18 | }
19 |
20 | run(navigationInstruction, next) {
21 | if (!this.session.isUserLoggedIn() && navigationInstruction.config.route !== this.loginRoute) {
22 | this.logger.warn(this.locale.translate('pleaseLogin'));
23 | return next.cancel(new Redirect(this.loginRoute));
24 | }
25 |
26 | let canAccess = this.authorize(navigationInstruction);
27 | if (canAccess === false) {
28 | this.logger.error(this.locale.translate('notAuthorized'));
29 | return next.cancel();
30 | }
31 |
32 | return next();
33 | }
34 |
35 | authorize(navigationInstruction) {
36 | if (navigationInstruction.parentInstruction === null) {
37 | return this.canAccess(navigationInstruction);
38 | } else {
39 | let canAccess = this.canAccess(navigationInstruction);
40 | if (hasRole){
41 | return this.authorize(navigationInstruction.parentInstruction)
42 | } else {
43 | return false;
44 | }
45 | }
46 | }
47 |
48 | canAccess() {
49 |
50 | }
51 | }
52 |
53 |
54 | @inject(Session, Logger)
55 | export class RolesAuthorizeStep extends BaseAuthorizeStep {
56 | constructor(session, logger) {
57 | super(session, logger);
58 | }
59 |
60 | canAccess(navigationInstruction) {
61 | if (navigationInstruction.config.roles) {
62 | return this.session.userHasAtLeastOneRole(navigationInstruction.config.roles);
63 | }
64 |
65 | return true;
66 | }
67 | }
68 |
69 |
70 | @inject(Session, Logger)
71 | export class AccessRightsAuthorizeStep extends BaseAuthorizeStep {
72 | constructor(session, logger) {
73 | super(session, logger);
74 | }
75 |
76 | canAccess(navigationInstruction) {
77 | if (navigationInstruction.config.accessRight) {
78 | return this.session.userHasAccessRight(navigationInstruction.config.accessRight);
79 | }
80 |
81 | return true;
82 | }
83 | }
84 |
85 |
--------------------------------------------------------------------------------
/dist/commonjs/loading-mask/loading-mask.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | Object.defineProperty(exports, '__esModule', {
4 | value: true
5 | });
6 |
7 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
8 |
9 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
10 |
11 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
12 |
13 | var _jquery = require('jquery');
14 |
15 | var _jquery2 = _interopRequireDefault(_jquery);
16 |
17 | var _locale = require('../locale');
18 |
19 | var LoadingMask = (function () {
20 | function LoadingMask(resources) {
21 | _classCallCheck(this, LoadingMask);
22 |
23 | this.loadingMask = undefined;
24 | this.dimScreen = undefined;
25 | this.dialog = undefined;
26 | this.loadingTitle = undefined;
27 | this.title = undefined;
28 | this.locale = _locale.Locale.Repository['default'];
29 | this._createLoadingMask();
30 | }
31 |
32 | _createClass(LoadingMask, [{
33 | key: '_createLoadingMask',
34 | value: function _createLoadingMask() {
35 | this.title = this.locale.translate('loading');
36 | this.dimScreen = '';
37 | (0, _jquery2['default'])('body').append(this.dimScreen);
38 | this.loadingMask = (0, _jquery2['default'])('#loadingMask');
39 | this.loadingTitle = (0, _jquery2['default'])('.loadingTitle').css({
40 | color: '#ffffff',
41 | opacity: 1,
42 | fontSize: '2.5em'
43 | });
44 | }
45 | }, {
46 | key: 'show',
47 | value: function show() {
48 | this.loadingMask.show();
49 | }
50 | }, {
51 | key: 'hide',
52 | value: function hide() {
53 | this.loadingMask.hide();
54 | }
55 | }]);
56 |
57 | return LoadingMask;
58 | })();
59 |
60 | exports.LoadingMask = LoadingMask;
--------------------------------------------------------------------------------
/src/locale.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by moshensky on 6/17/15.
3 | */
4 | export class Locale{
5 | constructor(defaults, data)
6 | {
7 | this.defaults = defaults;
8 | this.currentLocale = data;
9 | }
10 |
11 | getValueFor(identifier, category) {
12 | if (this.currentLocale && this.currentLocale[category]) {
13 | var currentLocaleSetting = this.currentLocale[category][identifier];
14 | if (currentLocaleSetting !== undefined && currentLocaleSetting !== null)
15 | return currentLocaleSetting;
16 | }
17 | if (this.defaults[category]) {
18 | var defaultSetting = this.defaults[category][identifier];
19 | if (defaultSetting !== undefined && defaultSetting !== null)
20 | return defaultSetting;
21 | }
22 | throw 'validation: I18N: Could not find: ' + identifier + ' in category: ' + category;
23 | }
24 |
25 | setting(settingIdentifier) {
26 | return this.getValueFor(settingIdentifier, 'settings');
27 | }
28 |
29 | translate(translationIdentifier, newValue, threshold) {
30 | var translation = this.getValueFor(translationIdentifier, 'messages');
31 | if (typeof translation === 'function') {
32 | return translation(newValue, threshold);
33 | }
34 | if (typeof translation === 'string') {
35 | return translation;
36 | }
37 | throw 'Validation message for ' + translationIdentifier + 'was in an unsupported format';
38 | }
39 | }
40 |
41 | class LocaleRepository {
42 | constructor(){
43 | this.default = null;
44 | this.instances = new Map();
45 | this.defaults = {
46 | settings: {},
47 | messages: {}
48 | };
49 | }
50 |
51 | load(localeIdentifier, basePath) {
52 | if(!basePath) basePath = 'aurelia-custom-app-common-files/resources/';
53 |
54 | return new Promise((resolve, reject) => {
55 | if(this.instances.has(localeIdentifier)) {
56 | let locale = this.instances.get(localeIdentifier);
57 | resolve(locale);
58 | } else {
59 | System.import(basePath + localeIdentifier).then((resource) => {
60 | let locale = this.addLocale(localeIdentifier, resource.data);
61 | resolve(locale);
62 | });
63 | }
64 | });
65 | }
66 |
67 | addLocale(localeIdentifier, data)
68 | {
69 | var instance = new Locale(this.defaults, data);
70 | this.instances.set(localeIdentifier, instance);
71 | if(this.default === null)
72 | this.default = instance;
73 | return instance;
74 | }
75 | }
76 |
77 | Locale.Repository = new LocaleRepository();
78 |
--------------------------------------------------------------------------------
/dist/es6/locale.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by moshensky on 6/17/15.
3 | */
4 | export class Locale{
5 | constructor(defaults, data)
6 | {
7 | this.defaults = defaults;
8 | this.currentLocale = data;
9 | }
10 |
11 | getValueFor(identifier, category) {
12 | if (this.currentLocale && this.currentLocale[category]) {
13 | var currentLocaleSetting = this.currentLocale[category][identifier];
14 | if (currentLocaleSetting !== undefined && currentLocaleSetting !== null)
15 | return currentLocaleSetting;
16 | }
17 | if (this.defaults[category]) {
18 | var defaultSetting = this.defaults[category][identifier];
19 | if (defaultSetting !== undefined && defaultSetting !== null)
20 | return defaultSetting;
21 | }
22 | throw 'validation: I18N: Could not find: ' + identifier + ' in category: ' + category;
23 | }
24 |
25 | setting(settingIdentifier) {
26 | return this.getValueFor(settingIdentifier, 'settings');
27 | }
28 |
29 | translate(translationIdentifier, newValue, threshold) {
30 | var translation = this.getValueFor(translationIdentifier, 'messages');
31 | if (typeof translation === 'function') {
32 | return translation(newValue, threshold);
33 | }
34 | if (typeof translation === 'string') {
35 | return translation;
36 | }
37 | throw 'Validation message for ' + translationIdentifier + 'was in an unsupported format';
38 | }
39 | }
40 |
41 | class LocaleRepository {
42 | constructor(){
43 | this.default = null;
44 | this.instances = new Map();
45 | this.defaults = {
46 | settings: {},
47 | messages: {}
48 | };
49 | }
50 |
51 | load(localeIdentifier, basePath) {
52 | if(!basePath) basePath = 'aurelia-custom-app-common-files/resources/';
53 |
54 | return new Promise((resolve, reject) => {
55 | if(this.instances.has(localeIdentifier)) {
56 | let locale = this.instances.get(localeIdentifier);
57 | resolve(locale);
58 | } else {
59 | System.import(basePath + localeIdentifier).then((resource) => {
60 | let locale = this.addLocale(localeIdentifier, resource.data);
61 | resolve(locale);
62 | });
63 | }
64 | });
65 | }
66 |
67 | addLocale(localeIdentifier, data)
68 | {
69 | var instance = new Locale(this.defaults, data);
70 | this.instances.set(localeIdentifier, instance);
71 | if(this.default === null)
72 | this.default = instance;
73 | return instance;
74 | }
75 | }
76 |
77 | Locale.Repository = new LocaleRepository();
78 |
--------------------------------------------------------------------------------
/dist/amd/index.js:
--------------------------------------------------------------------------------
1 | define(['exports', './config', './logger', './session', './http', './authorize-steps'], function (exports, _config, _logger, _session, _http, _authorizeSteps) {
2 | 'use strict';
3 |
4 | Object.defineProperty(exports, '__esModule', {
5 | value: true
6 | });
7 | exports.configure = configure;
8 | Object.defineProperty(exports, 'Logger', {
9 | enumerable: true,
10 | get: function get() {
11 | return _logger.Logger;
12 | }
13 | });
14 | Object.defineProperty(exports, 'Session', {
15 | enumerable: true,
16 | get: function get() {
17 | return _session.Session;
18 | }
19 | });
20 | Object.defineProperty(exports, 'Http', {
21 | enumerable: true,
22 | get: function get() {
23 | return _http.Http;
24 | }
25 | });
26 | Object.defineProperty(exports, 'AccessRightsAuthorizeStep', {
27 | enumerable: true,
28 | get: function get() {
29 | return _authorizeSteps.AccessRightsAuthorizeStep;
30 | }
31 | });
32 | Object.defineProperty(exports, 'RolesAuthorizeStep', {
33 | enumerable: true,
34 | get: function get() {
35 | return _authorizeSteps.RolesAuthorizeStep;
36 | }
37 | });
38 |
39 | function configure(aurelia, configCallback) {
40 | var config = new _config.Config();
41 |
42 | if (configCallback !== undefined && typeof configCallback === 'function') {
43 | configCallback(config);
44 | }
45 |
46 | return config.locale();
47 | }
48 | });
49 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7cUJBRVEsTUFBTTs7Ozs7O3NCQUNOLE9BQU87Ozs7OzttQkFDUCxJQUFJOzs7Ozs7NkJBQ0oseUJBQXlCOzs7Ozs7NkJBQUUsa0JBQWtCOzs7O0FBRTlDLFdBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUU7QUFDakQsUUFBTSxNQUFNLEdBQUcsWUFSVCxNQUFNLEVBUWUsQ0FBQzs7QUFFNUIsUUFBRyxjQUFjLEtBQUssU0FBUyxJQUFJLE9BQU8sY0FBYyxBQUFDLEtBQUssVUFBVSxFQUN4RTtBQUNFLG9CQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7S0FDeEI7O0FBRUQsV0FBTyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7R0FDeEIiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpZ30gZnJvbSAnLi9jb25maWcnO1xuXG5leHBvcnQge0xvZ2dlcn0gZnJvbSAnLi9sb2dnZXInO1xuZXhwb3J0IHtTZXNzaW9ufSBmcm9tICcuL3Nlc3Npb24nO1xuZXhwb3J0IHtIdHRwfSBmcm9tICcuL2h0dHAnO1xuZXhwb3J0IHtBY2Nlc3NSaWdodHNBdXRob3JpemVTdGVwLCBSb2xlc0F1dGhvcml6ZVN0ZXB9IGZyb20gJy4vYXV0aG9yaXplLXN0ZXBzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNvbmZpZ3VyZShhdXJlbGlhLCBjb25maWdDYWxsYmFjaykge1xuICBjb25zdCBjb25maWcgPSBuZXcgQ29uZmlnKCk7XG5cbiAgaWYoY29uZmlnQ2FsbGJhY2sgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YoY29uZmlnQ2FsbGJhY2spID09PSAnZnVuY3Rpb24nKVxuICB7XG4gICAgY29uZmlnQ2FsbGJhY2soY29uZmlnKTtcbiAgfVxuXG4gIHJldHVybiBjb25maWcubG9jYWxlKCk7XG59XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
--------------------------------------------------------------------------------
/dist/commonjs/logger.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | Object.defineProperty(exports, '__esModule', {
4 | value: true
5 | });
6 |
7 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
8 |
9 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
10 |
11 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
12 |
13 | var _CodeSevenToastr = require('CodeSeven/toastr');
14 |
15 | var _CodeSevenToastr2 = _interopRequireDefault(_CodeSevenToastr);
16 |
17 | var _config = require('./config');
18 |
19 | var defaults = {
20 | source: 'app',
21 | title: '',
22 | message: 'no message provided',
23 | data: '',
24 | showToast: true,
25 | type: 'info'
26 | };
27 |
28 | function log(options) {
29 | var opts = Object.assign({}, defaults, options);
30 |
31 | if (opts.showToast) {
32 | _CodeSevenToastr2['default'][opts.type](opts.message, opts.title);
33 | }
34 | }
35 |
36 | function sanitize(options, messageType) {
37 | if (typeof options === 'string' || options instanceof String) {
38 | return {
39 | message: options,
40 | type: messageType
41 | };
42 | }
43 |
44 | options.type = messageType;
45 | return options;
46 | }
47 |
48 | var Logger = (function () {
49 | function Logger() {
50 | _classCallCheck(this, Logger);
51 |
52 | var defOpts = {
53 | closeButton: true,
54 | positionClass: 'toast-bottom-right',
55 | fadeOut: 1000
56 | };
57 |
58 | var configOptions = _config.Config.loggerOpts || {};
59 | var options = Object.assign(_CodeSevenToastr2['default'].options, defOpts, configOptions);
60 | _CodeSevenToastr2['default'].options = options;
61 | }
62 |
63 | _createClass(Logger, [{
64 | key: 'warn',
65 | value: function warn(options) {
66 | log(sanitize(options, 'warning'));
67 | }
68 | }, {
69 | key: 'info',
70 | value: function info(options) {
71 | log(sanitize(options, 'info'));
72 | }
73 | }, {
74 | key: 'error',
75 | value: function error(options) {
76 | log(sanitize(options, 'error'));
77 | }
78 | }, {
79 | key: 'success',
80 | value: function success(options) {
81 | log(sanitize(options, 'success'));
82 | }
83 | }]);
84 |
85 | return Logger;
86 | })();
87 |
88 | exports.Logger = Logger;
--------------------------------------------------------------------------------
/src/session.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by moshensky on 6/16/15.
3 | */
4 | import {inject} from 'aurelia-dependency-injection';
5 | import {Router} from 'aurelia-router';
6 | import {Logger} from './logger';
7 |
8 | const constant = {
9 | appData: 'appData'
10 | };
11 |
12 | @inject(Router, Logger)
13 | export class Session {
14 |
15 | constructor(router, logger) {
16 | this.router = router;
17 | this.log = logger;
18 |
19 | this.initUserData();
20 |
21 | if (this.userRemembered()) {
22 | this.restoreData();
23 | }
24 | }
25 |
26 | initUserData() {
27 | this.userName = null;
28 | this.userClaims = [];
29 | this.userRoles = [];
30 | this.userAccessRights = [];
31 |
32 | this.isLoggedIn = false;
33 | this.isBusy = false;
34 | }
35 |
36 | setUser(data) {
37 | if (data) {
38 | localStorage[constant.appData] = JSON.stringify(data);
39 | this.restoreData();
40 | }
41 | }
42 |
43 | clearUser() {
44 | localStorage.clear();
45 | this.initUserData();
46 | }
47 |
48 | userHasAccessRight(requiredAccessRight) {
49 | return this.userAccessRights[requiredAccessRight] === true;
50 | }
51 |
52 | userHasAllAccessRights(requiredAccessRights) {
53 | return requiredAccessRights.every(accessRight => {
54 | return this.userHasAccessRight(accessRight);
55 | })
56 | }
57 |
58 | userHasRole(requredRole) {
59 | return this.userRoles[requredRole] === true;
60 | }
61 |
62 | userHasAtLeastOneRole(requiredRoles) {
63 | return requiredRoles.some(requiredRole => {
64 | return this.userHasRole(requiredRole);
65 | });
66 | }
67 |
68 | getUserClaim(claimType) {
69 | return this.userClaims[claimType];
70 | }
71 |
72 | isUserLoggedIn() {
73 | return this.isLoggedIn === true;
74 | }
75 |
76 | userRemembered() {
77 | let isInLocalStorage = localStorage[constant.appData] !== undefined;
78 | return isInLocalStorage;
79 | }
80 |
81 | restoreData() {
82 | const data = JSON.parse(localStorage[constant.appData]);
83 |
84 | this.userName = data.userName;
85 | this.userClaims = data.userClaims.reduce(function (hash, userClaim) {
86 | hash[userClaim.type] = userClaim.value;
87 | return hash;
88 | }, {});
89 | this.userRoles = data.userRoles.reduce((hash, userRole) => {
90 | hash[userRole] = true;
91 | return hash;
92 | }, {});
93 | this.userAccessRights = data.userAccessRights.reduce((hash, accessRight) => {
94 | hash[accessRight] = true;
95 | return hash;
96 | }, {});
97 |
98 | // todo: delete
99 | this.userAccessRights['access'] = true;
100 |
101 | this.isLoggedIn = true;
102 | this.router.navigate('');
103 | }
104 |
105 | rememberedToken() {
106 | const token = JSON.parse(localStorage[constant.appData]).token;
107 | return token;
108 | }
109 |
110 | getUserName() {
111 | return this.userName;
112 | }
113 | }
114 |
115 |
--------------------------------------------------------------------------------
/dist/es6/session.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by moshensky on 6/16/15.
3 | */
4 | import {inject} from 'aurelia-dependency-injection';
5 | import {Router} from 'aurelia-router';
6 | import {Logger} from './logger';
7 |
8 | const constant = {
9 | appData: 'appData'
10 | };
11 |
12 | @inject(Router, Logger)
13 | export class Session {
14 |
15 | constructor(router, logger) {
16 | this.router = router;
17 | this.log = logger;
18 |
19 | this.initUserData();
20 |
21 | if (this.userRemembered()) {
22 | this.restoreData();
23 | }
24 | }
25 |
26 | initUserData() {
27 | this.userName = null;
28 | this.userClaims = [];
29 | this.userRoles = [];
30 | this.userAccessRights = [];
31 |
32 | this.isLoggedIn = false;
33 | this.isBusy = false;
34 | }
35 |
36 | setUser(data) {
37 | if (data) {
38 | localStorage[constant.appData] = JSON.stringify(data);
39 | this.restoreData();
40 | }
41 | }
42 |
43 | clearUser() {
44 | localStorage.clear();
45 | this.initUserData();
46 | }
47 |
48 | userHasAccessRight(requiredAccessRight) {
49 | return this.userAccessRights[requiredAccessRight] === true;
50 | }
51 |
52 | userHasAllAccessRights(requiredAccessRights) {
53 | return requiredAccessRights.every(accessRight => {
54 | return this.userHasAccessRight(accessRight);
55 | })
56 | }
57 |
58 | userHasRole(requredRole) {
59 | return this.userRoles[requredRole] === true;
60 | }
61 |
62 | userHasAtLeastOneRole(requiredRoles) {
63 | return requiredRoles.some(requiredRole => {
64 | return this.userHasRole(requiredRole);
65 | });
66 | }
67 |
68 | getUserClaim(claimType) {
69 | return this.userClaims[claimType];
70 | }
71 |
72 | isUserLoggedIn() {
73 | return this.isLoggedIn === true;
74 | }
75 |
76 | userRemembered() {
77 | let isInLocalStorage = localStorage[constant.appData] !== undefined;
78 | return isInLocalStorage;
79 | }
80 |
81 | restoreData() {
82 | const data = JSON.parse(localStorage[constant.appData]);
83 |
84 | this.userName = data.userName;
85 | this.userClaims = data.userClaims.reduce(function (hash, userClaim) {
86 | hash[userClaim.type] = userClaim.value;
87 | return hash;
88 | }, {});
89 | this.userRoles = data.userRoles.reduce((hash, userRole) => {
90 | hash[userRole] = true;
91 | return hash;
92 | }, {});
93 | this.userAccessRights = data.userAccessRights.reduce((hash, accessRight) => {
94 | hash[accessRight] = true;
95 | return hash;
96 | }, {});
97 |
98 | // todo: delete
99 | this.userAccessRights['access'] = true;
100 |
101 | this.isLoggedIn = true;
102 | this.router.navigate('');
103 | }
104 |
105 | rememberedToken() {
106 | const token = JSON.parse(localStorage[constant.appData]).token;
107 | return token;
108 | }
109 |
110 | getUserName() {
111 | return this.userName;
112 | }
113 | }
114 |
115 |
--------------------------------------------------------------------------------
/config.js:
--------------------------------------------------------------------------------
1 | System.config({
2 | defaultJSExtensions: true,
3 | transpiler: "babel",
4 | babelOptions: {
5 | "optional": [
6 | "es7.decorators",
7 | "es7.classProperties",
8 | "runtime"
9 | ]
10 | },
11 | paths: {
12 | "*": "dist/*",
13 | "github:*": "jspm_packages/github/*",
14 | "npm:*": "jspm_packages/npm/*"
15 | },
16 |
17 | map: {
18 | "CodeSeven/toastr": "github:CodeSeven/toastr@2.1.2",
19 | "aurelia-dependency-injection": "npm:aurelia-dependency-injection@1.0.0-beta.1",
20 | "aurelia-http-client": "npm:aurelia-http-client@1.0.0-beta.1",
21 | "aurelia-router": "npm:aurelia-router@1.0.0-beta.1",
22 | "babel": "npm:babel-core@5.8.34",
23 | "babel-runtime": "npm:babel-runtime@5.8.34",
24 | "core-js": "npm:core-js@1.2.6",
25 | "jquery": "github:components/jquery@2.1.4",
26 | "github:jspm/nodelibs-assert@0.1.0": {
27 | "assert": "npm:assert@1.3.0"
28 | },
29 | "github:jspm/nodelibs-path@0.1.0": {
30 | "path-browserify": "npm:path-browserify@0.0.0"
31 | },
32 | "github:jspm/nodelibs-process@0.1.2": {
33 | "process": "npm:process@0.11.2"
34 | },
35 | "github:jspm/nodelibs-util@0.1.0": {
36 | "util": "npm:util@0.10.3"
37 | },
38 | "npm:assert@1.3.0": {
39 | "util": "npm:util@0.10.3"
40 | },
41 | "npm:aurelia-dependency-injection@1.0.0-beta.1": {
42 | "aurelia-logging": "npm:aurelia-logging@1.0.0-beta.1",
43 | "aurelia-metadata": "npm:aurelia-metadata@1.0.0-beta.1",
44 | "aurelia-pal": "npm:aurelia-pal@1.0.0-beta.1",
45 | "core-js": "npm:core-js@1.2.6"
46 | },
47 | "npm:aurelia-event-aggregator@1.0.0-beta.1": {
48 | "aurelia-logging": "npm:aurelia-logging@1.0.0-beta.1"
49 | },
50 | "npm:aurelia-http-client@1.0.0-beta.1": {
51 | "aurelia-pal": "npm:aurelia-pal@1.0.0-beta.1",
52 | "aurelia-path": "npm:aurelia-path@1.0.0-beta.1",
53 | "core-js": "npm:core-js@1.2.6"
54 | },
55 | "npm:aurelia-metadata@1.0.0-beta.1": {
56 | "aurelia-pal": "npm:aurelia-pal@1.0.0-beta.1",
57 | "core-js": "npm:core-js@1.2.6"
58 | },
59 | "npm:aurelia-route-recognizer@1.0.0-beta.1": {
60 | "aurelia-path": "npm:aurelia-path@1.0.0-beta.1",
61 | "core-js": "npm:core-js@1.2.6"
62 | },
63 | "npm:aurelia-router@1.0.0-beta.1": {
64 | "aurelia-dependency-injection": "npm:aurelia-dependency-injection@1.0.0-beta.1",
65 | "aurelia-event-aggregator": "npm:aurelia-event-aggregator@1.0.0-beta.1",
66 | "aurelia-history": "npm:aurelia-history@1.0.0-beta.1",
67 | "aurelia-logging": "npm:aurelia-logging@1.0.0-beta.1",
68 | "aurelia-path": "npm:aurelia-path@1.0.0-beta.1",
69 | "aurelia-route-recognizer": "npm:aurelia-route-recognizer@1.0.0-beta.1",
70 | "core-js": "npm:core-js@1.2.6"
71 | },
72 | "npm:babel-runtime@5.8.34": {
73 | "process": "github:jspm/nodelibs-process@0.1.2"
74 | },
75 | "npm:core-js@1.2.6": {
76 | "fs": "github:jspm/nodelibs-fs@0.1.2",
77 | "path": "github:jspm/nodelibs-path@0.1.0",
78 | "process": "github:jspm/nodelibs-process@0.1.2",
79 | "systemjs-json": "github:systemjs/plugin-json@0.1.0"
80 | },
81 | "npm:inherits@2.0.1": {
82 | "util": "github:jspm/nodelibs-util@0.1.0"
83 | },
84 | "npm:path-browserify@0.0.0": {
85 | "process": "github:jspm/nodelibs-process@0.1.2"
86 | },
87 | "npm:process@0.11.2": {
88 | "assert": "github:jspm/nodelibs-assert@0.1.0"
89 | },
90 | "npm:util@0.10.3": {
91 | "inherits": "npm:inherits@2.0.1",
92 | "process": "github:jspm/nodelibs-process@0.1.2"
93 | }
94 | }
95 | });
96 |
--------------------------------------------------------------------------------
/dist/commonjs/locale.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | Object.defineProperty(exports, '__esModule', {
4 | value: true
5 | });
6 |
7 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
8 |
9 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
10 |
11 | var Locale = (function () {
12 | function Locale(defaults, data) {
13 | _classCallCheck(this, Locale);
14 |
15 | this.defaults = defaults;
16 | this.currentLocale = data;
17 | }
18 |
19 | _createClass(Locale, [{
20 | key: 'getValueFor',
21 | value: function getValueFor(identifier, category) {
22 | if (this.currentLocale && this.currentLocale[category]) {
23 | var currentLocaleSetting = this.currentLocale[category][identifier];
24 | if (currentLocaleSetting !== undefined && currentLocaleSetting !== null) return currentLocaleSetting;
25 | }
26 | if (this.defaults[category]) {
27 | var defaultSetting = this.defaults[category][identifier];
28 | if (defaultSetting !== undefined && defaultSetting !== null) return defaultSetting;
29 | }
30 | throw 'validation: I18N: Could not find: ' + identifier + ' in category: ' + category;
31 | }
32 | }, {
33 | key: 'setting',
34 | value: function setting(settingIdentifier) {
35 | return this.getValueFor(settingIdentifier, 'settings');
36 | }
37 | }, {
38 | key: 'translate',
39 | value: function translate(translationIdentifier, newValue, threshold) {
40 | var translation = this.getValueFor(translationIdentifier, 'messages');
41 | if (typeof translation === 'function') {
42 | return translation(newValue, threshold);
43 | }
44 | if (typeof translation === 'string') {
45 | return translation;
46 | }
47 | throw 'Validation message for ' + translationIdentifier + 'was in an unsupported format';
48 | }
49 | }]);
50 |
51 | return Locale;
52 | })();
53 |
54 | exports.Locale = Locale;
55 |
56 | var LocaleRepository = (function () {
57 | function LocaleRepository() {
58 | _classCallCheck(this, LocaleRepository);
59 |
60 | this['default'] = null;
61 | this.instances = new Map();
62 | this.defaults = {
63 | settings: {},
64 | messages: {}
65 | };
66 | }
67 |
68 | _createClass(LocaleRepository, [{
69 | key: 'load',
70 | value: function load(localeIdentifier, basePath) {
71 | var _this = this;
72 |
73 | if (!basePath) basePath = 'aurelia-custom-app-common-files/resources/';
74 |
75 | return new Promise(function (resolve, reject) {
76 | if (_this.instances.has(localeIdentifier)) {
77 | var locale = _this.instances.get(localeIdentifier);
78 | resolve(locale);
79 | } else {
80 | System['import'](basePath + localeIdentifier).then(function (resource) {
81 | var locale = _this.addLocale(localeIdentifier, resource.data);
82 | resolve(locale);
83 | });
84 | }
85 | });
86 | }
87 | }, {
88 | key: 'addLocale',
89 | value: function addLocale(localeIdentifier, data) {
90 | var instance = new Locale(this.defaults, data);
91 | this.instances.set(localeIdentifier, instance);
92 | if (this['default'] === null) this['default'] = instance;
93 | return instance;
94 | }
95 | }]);
96 |
97 | return LocaleRepository;
98 | })();
99 |
100 | Locale.Repository = new LocaleRepository();
--------------------------------------------------------------------------------
/dist/commonjs/config.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | Object.defineProperty(exports, '__esModule', {
4 | value: true
5 | });
6 |
7 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
8 |
9 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
10 |
11 | var _locale = require('./locale');
12 |
13 | var ConfigDefaults = function ConfigDefaults() {
14 | _classCallCheck(this, ConfigDefaults);
15 | };
16 |
17 | exports.ConfigDefaults = ConfigDefaults;
18 |
19 | ConfigDefaults._defaults = {
20 | locale: 'en-US',
21 | localeResources: 'service/resources/'
22 | };
23 |
24 | ConfigDefaults.defaults = function () {
25 | var defaults = {};
26 | Object.assign(defaults, ConfigDefaults._defaults);
27 | return defaults;
28 | };
29 |
30 | var Config = (function () {
31 | function Config(innerConfig) {
32 | _classCallCheck(this, Config);
33 |
34 | this.innerConfig = innerConfig;
35 | this.values = this.innerConfig ? {} : ConfigDefaults.defaults();
36 | this.changedHandlers = new Map();
37 | }
38 |
39 | _createClass(Config, [{
40 | key: 'getValue',
41 | value: function getValue(identifier) {
42 | if (this.values.hasOwnProperty(identifier) !== null && this.values[identifier] !== undefined) {
43 | return this.values[identifier];
44 | }
45 | if (this.innerConfig !== null) {
46 | return this.innerConfig.getValue(identifier);
47 | }
48 | throw Error('Config not found: ' + identifier);
49 | }
50 | }, {
51 | key: 'setValue',
52 | value: function setValue(identifier, value) {
53 | this.values[identifier] = value;
54 | return this;
55 | }
56 | }, {
57 | key: 'onLocaleChanged',
58 | value: function onLocaleChanged(callback) {
59 | var _this = this;
60 |
61 | if (this.innerConfig !== undefined) {
62 | return this.innerConfig.onLocaleChanged(callback);
63 | } else {
64 | var _ret = (function () {
65 | var id = ++ValidationConfig.uniqueListenerId;
66 | _this.changedHandlers.set(id, callback);
67 | return {
68 | v: function () {
69 | _this.changedHandlers['delete'](id);
70 | }
71 | };
72 | })();
73 |
74 | if (typeof _ret === 'object') return _ret.v;
75 | }
76 | }
77 | }, {
78 | key: 'getDependencies',
79 | value: function getDependencies() {
80 | return this.getValue('dependencies');
81 | }
82 | }, {
83 | key: 'setHttpService',
84 | value: function setHttpService(httpOpts) {
85 | Config.httpOpts = httpOpts;
86 | }
87 | }, {
88 | key: 'setLoggerService',
89 | value: function setLoggerService(loggerOpts) {
90 | Config.loggerOpts = loggerOpts;
91 | }
92 | }, {
93 | key: 'routerAuthStep',
94 | value: function routerAuthStep(opts) {
95 | Config.routerAuthStepOpts = opts;
96 | }
97 | }, {
98 | key: 'useLocale',
99 | value: function useLocale(localeIdentifier) {
100 | this.setValue('locale', localeIdentifier);
101 | var callbacks = Array.from(this.changedHandlers.values());
102 | for (var i = 0; i < callbacks.length; i++) {
103 | callbacks[i]();
104 | }
105 | return this;
106 | }
107 | }, {
108 | key: 'locale',
109 | value: function locale() {
110 | return _locale.Locale.Repository.load(this.getValue('locale'), this.getValue('localeResources'));
111 | }
112 | }]);
113 |
114 | return Config;
115 | })();
116 |
117 | exports.Config = Config;
118 |
119 | Config.uniqueListenerId = 0;
--------------------------------------------------------------------------------
/dist/commonjs/session.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | Object.defineProperty(exports, '__esModule', {
4 | value: true
5 | });
6 |
7 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
8 |
9 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
10 |
11 | var _aureliaDependencyInjection = require('aurelia-dependency-injection');
12 |
13 | var _aureliaRouter = require('aurelia-router');
14 |
15 | var _logger = require('./logger');
16 |
17 | var constant = {
18 | appData: 'appData'
19 | };
20 |
21 | var Session = (function () {
22 | function Session(router, logger) {
23 | _classCallCheck(this, _Session);
24 |
25 | this.router = router;
26 | this.log = logger;
27 |
28 | this.initUserData();
29 |
30 | if (this.userRemembered()) {
31 | this.restoreData();
32 | }
33 | }
34 |
35 | _createClass(Session, [{
36 | key: 'initUserData',
37 | value: function initUserData() {
38 | this.userName = null;
39 | this.userClaims = [];
40 | this.userRoles = [];
41 | this.userAccessRights = [];
42 |
43 | this.isLoggedIn = false;
44 | this.isBusy = false;
45 | }
46 | }, {
47 | key: 'setUser',
48 | value: function setUser(data) {
49 | if (data) {
50 | localStorage[constant.appData] = JSON.stringify(data);
51 | this.restoreData();
52 | }
53 | }
54 | }, {
55 | key: 'clearUser',
56 | value: function clearUser() {
57 | localStorage.clear();
58 | this.initUserData();
59 | }
60 | }, {
61 | key: 'userHasAccessRight',
62 | value: function userHasAccessRight(requiredAccessRight) {
63 | return this.userAccessRights[requiredAccessRight] === true;
64 | }
65 | }, {
66 | key: 'userHasAllAccessRights',
67 | value: function userHasAllAccessRights(requiredAccessRights) {
68 | var _this = this;
69 |
70 | return requiredAccessRights.every(function (accessRight) {
71 | return _this.userHasAccessRight(accessRight);
72 | });
73 | }
74 | }, {
75 | key: 'userHasRole',
76 | value: function userHasRole(requredRole) {
77 | return this.userRoles[requredRole] === true;
78 | }
79 | }, {
80 | key: 'userHasAtLeastOneRole',
81 | value: function userHasAtLeastOneRole(requiredRoles) {
82 | var _this2 = this;
83 |
84 | return requiredRoles.some(function (requiredRole) {
85 | return _this2.userHasRole(requiredRole);
86 | });
87 | }
88 | }, {
89 | key: 'getUserClaim',
90 | value: function getUserClaim(claimType) {
91 | return this.userClaims[claimType];
92 | }
93 | }, {
94 | key: 'isUserLoggedIn',
95 | value: function isUserLoggedIn() {
96 | return this.isLoggedIn === true;
97 | }
98 | }, {
99 | key: 'userRemembered',
100 | value: function userRemembered() {
101 | var isInLocalStorage = localStorage[constant.appData] !== undefined;
102 | return isInLocalStorage;
103 | }
104 | }, {
105 | key: 'restoreData',
106 | value: function restoreData() {
107 | var data = JSON.parse(localStorage[constant.appData]);
108 |
109 | this.userName = data.userName;
110 | this.userClaims = data.userClaims.reduce(function (hash, userClaim) {
111 | hash[userClaim.type] = userClaim.value;
112 | return hash;
113 | }, {});
114 | this.userRoles = data.userRoles.reduce(function (hash, userRole) {
115 | hash[userRole] = true;
116 | return hash;
117 | }, {});
118 | this.userAccessRights = data.userAccessRights.reduce(function (hash, accessRight) {
119 | hash[accessRight] = true;
120 | return hash;
121 | }, {});
122 |
123 | this.userAccessRights['access'] = true;
124 |
125 | this.isLoggedIn = true;
126 | this.router.navigate('');
127 | }
128 | }, {
129 | key: 'rememberedToken',
130 | value: function rememberedToken() {
131 | var token = JSON.parse(localStorage[constant.appData]).token;
132 | return token;
133 | }
134 | }, {
135 | key: 'getUserName',
136 | value: function getUserName() {
137 | return this.userName;
138 | }
139 | }]);
140 |
141 | var _Session = Session;
142 | Session = (0, _aureliaDependencyInjection.inject)(_aureliaRouter.Router, _logger.Logger)(Session) || Session;
143 | return Session;
144 | })();
145 |
146 | exports.Session = Session;
--------------------------------------------------------------------------------
/src/loading-mask/loading-mask.css:
--------------------------------------------------------------------------------
1 |
2 | /* ==================================================================================== */
3 | /* LOADING MASK CUSTOM CSS */
4 | /* ==================================================================================== */
5 |
6 | .mask {
7 | font-size: 20px;
8 | margin: 100px auto;
9 | width: 1em;
10 | height: 1em;
11 | border-radius: 50%;
12 | position: relative;
13 | text-indent: -9999em;
14 | -webkit-animation: spinner 1.3s infinite linear;
15 | animation: spinner 1.3s infinite linear;
16 | -webkit-transform: translateZ(0);
17 | -ms-transform: translateZ(0);
18 | transform: translateZ(0);
19 | }
20 |
21 | .spinner {
22 | position: absolute;
23 | width: 100%;
24 | height: 100%;
25 | opacity: 0.5;
26 | background-color: #000;
27 | display: none;
28 | top: 0;
29 | z-index: 2000;
30 | text-align: center;
31 | padding-top: 20%;
32 | font-size: 25px;
33 | }
34 |
35 | .loadingTitle {
36 | color: #ffffff;
37 | opacity: 1;
38 | font-size: 2.5em;
39 | }
40 |
41 | @-webkit-keyframes spinner {
42 | 0%,
43 | 100% {
44 | box-shadow: 0 -3em 0 0.2em #ffffff, 2em -2em 0 0em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 0 #ffffff;
45 | }
46 | 12.5% {
47 | box-shadow: 0 -3em 0 0 #ffffff, 2em -2em 0 0.2em #ffffff, 3em 0 0 0 #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
48 | }
49 | 25% {
50 | box-shadow: 0 -3em 0 -0.5em #ffffff, 2em -2em 0 0 #ffffff, 3em 0 0 0.2em #ffffff, 2em 2em 0 0 #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
51 | }
52 | 37.5% {
53 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 0 #ffffff, 2em 2em 0 0.2em #ffffff, 0 3em 0 0em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
54 | }
55 | 50% {
56 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 0em #ffffff, 0 3em 0 0.2em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
57 | }
58 | 62.5% {
59 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 0 #ffffff, -2em 2em 0 0.2em #ffffff, -3em 0 0 0 #ffffff, -2em -2em 0 -1em #ffffff;
60 | }
61 | 75% {
62 | box-shadow: 0em -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0.2em #ffffff, -2em -2em 0 0 #ffffff;
63 | }
64 | 87.5% {
65 | box-shadow: 0em -3em 0 0 #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0 #ffffff, -2em -2em 0 0.2em #ffffff;
66 | }
67 | }
68 | @keyframes spinner {
69 | 0%,
70 | 100% {
71 | box-shadow: 0 -3em 0 0.2em #ffffff, 2em -2em 0 0em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 0 #ffffff;
72 | }
73 | 12.5% {
74 | box-shadow: 0 -3em 0 0 #ffffff, 2em -2em 0 0.2em #ffffff, 3em 0 0 0 #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
75 | }
76 | 25% {
77 | box-shadow: 0 -3em 0 -0.5em #ffffff, 2em -2em 0 0 #ffffff, 3em 0 0 0.2em #ffffff, 2em 2em 0 0 #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
78 | }
79 | 37.5% {
80 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 0 #ffffff, 2em 2em 0 0.2em #ffffff, 0 3em 0 0em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
81 | }
82 | 50% {
83 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 0em #ffffff, 0 3em 0 0.2em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
84 | }
85 | 62.5% {
86 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 0 #ffffff, -2em 2em 0 0.2em #ffffff, -3em 0 0 0 #ffffff, -2em -2em 0 -1em #ffffff;
87 | }
88 | 75% {
89 | box-shadow: 0em -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0.2em #ffffff, -2em -2em 0 0 #ffffff;
90 | }
91 | 87.5% {
92 | box-shadow: 0em -3em 0 0 #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0 #ffffff, -2em -2em 0 0.2em #ffffff;
93 | }
94 | }
95 |
96 | /* ==================================================================================== */
97 | /* LOADING MASK CUSTOM CSS END */
98 | /* ==================================================================================== */
99 |
--------------------------------------------------------------------------------
/dist/amd/loading-mask/loading-mask.css:
--------------------------------------------------------------------------------
1 |
2 | /* ==================================================================================== */
3 | /* LOADING MASK CUSTOM CSS */
4 | /* ==================================================================================== */
5 |
6 | .mask {
7 | font-size: 20px;
8 | margin: 100px auto;
9 | width: 1em;
10 | height: 1em;
11 | border-radius: 50%;
12 | position: relative;
13 | text-indent: -9999em;
14 | -webkit-animation: spinner 1.3s infinite linear;
15 | animation: spinner 1.3s infinite linear;
16 | -webkit-transform: translateZ(0);
17 | -ms-transform: translateZ(0);
18 | transform: translateZ(0);
19 | }
20 |
21 | .spinner {
22 | position: absolute;
23 | width: 100%;
24 | height: 100%;
25 | opacity: 0.5;
26 | background-color: #000;
27 | display: none;
28 | top: 0;
29 | z-index: 2000;
30 | text-align: center;
31 | padding-top: 20%;
32 | font-size: 25px;
33 | }
34 |
35 | .loadingTitle {
36 | color: #ffffff;
37 | opacity: 1;
38 | font-size: 2.5em;
39 | }
40 |
41 | @-webkit-keyframes spinner {
42 | 0%,
43 | 100% {
44 | box-shadow: 0 -3em 0 0.2em #ffffff, 2em -2em 0 0em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 0 #ffffff;
45 | }
46 | 12.5% {
47 | box-shadow: 0 -3em 0 0 #ffffff, 2em -2em 0 0.2em #ffffff, 3em 0 0 0 #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
48 | }
49 | 25% {
50 | box-shadow: 0 -3em 0 -0.5em #ffffff, 2em -2em 0 0 #ffffff, 3em 0 0 0.2em #ffffff, 2em 2em 0 0 #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
51 | }
52 | 37.5% {
53 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 0 #ffffff, 2em 2em 0 0.2em #ffffff, 0 3em 0 0em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
54 | }
55 | 50% {
56 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 0em #ffffff, 0 3em 0 0.2em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
57 | }
58 | 62.5% {
59 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 0 #ffffff, -2em 2em 0 0.2em #ffffff, -3em 0 0 0 #ffffff, -2em -2em 0 -1em #ffffff;
60 | }
61 | 75% {
62 | box-shadow: 0em -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0.2em #ffffff, -2em -2em 0 0 #ffffff;
63 | }
64 | 87.5% {
65 | box-shadow: 0em -3em 0 0 #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0 #ffffff, -2em -2em 0 0.2em #ffffff;
66 | }
67 | }
68 | @keyframes spinner {
69 | 0%,
70 | 100% {
71 | box-shadow: 0 -3em 0 0.2em #ffffff, 2em -2em 0 0em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 0 #ffffff;
72 | }
73 | 12.5% {
74 | box-shadow: 0 -3em 0 0 #ffffff, 2em -2em 0 0.2em #ffffff, 3em 0 0 0 #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
75 | }
76 | 25% {
77 | box-shadow: 0 -3em 0 -0.5em #ffffff, 2em -2em 0 0 #ffffff, 3em 0 0 0.2em #ffffff, 2em 2em 0 0 #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
78 | }
79 | 37.5% {
80 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 0 #ffffff, 2em 2em 0 0.2em #ffffff, 0 3em 0 0em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
81 | }
82 | 50% {
83 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 0em #ffffff, 0 3em 0 0.2em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
84 | }
85 | 62.5% {
86 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 0 #ffffff, -2em 2em 0 0.2em #ffffff, -3em 0 0 0 #ffffff, -2em -2em 0 -1em #ffffff;
87 | }
88 | 75% {
89 | box-shadow: 0em -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0.2em #ffffff, -2em -2em 0 0 #ffffff;
90 | }
91 | 87.5% {
92 | box-shadow: 0em -3em 0 0 #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0 #ffffff, -2em -2em 0 0.2em #ffffff;
93 | }
94 | }
95 |
96 | /* ==================================================================================== */
97 | /* LOADING MASK CUSTOM CSS END */
98 | /* ==================================================================================== */
99 |
--------------------------------------------------------------------------------
/dist/es6/loading-mask/loading-mask.css:
--------------------------------------------------------------------------------
1 |
2 | /* ==================================================================================== */
3 | /* LOADING MASK CUSTOM CSS */
4 | /* ==================================================================================== */
5 |
6 | .mask {
7 | font-size: 20px;
8 | margin: 100px auto;
9 | width: 1em;
10 | height: 1em;
11 | border-radius: 50%;
12 | position: relative;
13 | text-indent: -9999em;
14 | -webkit-animation: spinner 1.3s infinite linear;
15 | animation: spinner 1.3s infinite linear;
16 | -webkit-transform: translateZ(0);
17 | -ms-transform: translateZ(0);
18 | transform: translateZ(0);
19 | }
20 |
21 | .spinner {
22 | position: absolute;
23 | width: 100%;
24 | height: 100%;
25 | opacity: 0.5;
26 | background-color: #000;
27 | display: none;
28 | top: 0;
29 | z-index: 2000;
30 | text-align: center;
31 | padding-top: 20%;
32 | font-size: 25px;
33 | }
34 |
35 | .loadingTitle {
36 | color: #ffffff;
37 | opacity: 1;
38 | font-size: 2.5em;
39 | }
40 |
41 | @-webkit-keyframes spinner {
42 | 0%,
43 | 100% {
44 | box-shadow: 0 -3em 0 0.2em #ffffff, 2em -2em 0 0em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 0 #ffffff;
45 | }
46 | 12.5% {
47 | box-shadow: 0 -3em 0 0 #ffffff, 2em -2em 0 0.2em #ffffff, 3em 0 0 0 #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
48 | }
49 | 25% {
50 | box-shadow: 0 -3em 0 -0.5em #ffffff, 2em -2em 0 0 #ffffff, 3em 0 0 0.2em #ffffff, 2em 2em 0 0 #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
51 | }
52 | 37.5% {
53 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 0 #ffffff, 2em 2em 0 0.2em #ffffff, 0 3em 0 0em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
54 | }
55 | 50% {
56 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 0em #ffffff, 0 3em 0 0.2em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
57 | }
58 | 62.5% {
59 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 0 #ffffff, -2em 2em 0 0.2em #ffffff, -3em 0 0 0 #ffffff, -2em -2em 0 -1em #ffffff;
60 | }
61 | 75% {
62 | box-shadow: 0em -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0.2em #ffffff, -2em -2em 0 0 #ffffff;
63 | }
64 | 87.5% {
65 | box-shadow: 0em -3em 0 0 #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0 #ffffff, -2em -2em 0 0.2em #ffffff;
66 | }
67 | }
68 | @keyframes spinner {
69 | 0%,
70 | 100% {
71 | box-shadow: 0 -3em 0 0.2em #ffffff, 2em -2em 0 0em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 0 #ffffff;
72 | }
73 | 12.5% {
74 | box-shadow: 0 -3em 0 0 #ffffff, 2em -2em 0 0.2em #ffffff, 3em 0 0 0 #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
75 | }
76 | 25% {
77 | box-shadow: 0 -3em 0 -0.5em #ffffff, 2em -2em 0 0 #ffffff, 3em 0 0 0.2em #ffffff, 2em 2em 0 0 #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
78 | }
79 | 37.5% {
80 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 0 #ffffff, 2em 2em 0 0.2em #ffffff, 0 3em 0 0em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
81 | }
82 | 50% {
83 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 0em #ffffff, 0 3em 0 0.2em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
84 | }
85 | 62.5% {
86 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 0 #ffffff, -2em 2em 0 0.2em #ffffff, -3em 0 0 0 #ffffff, -2em -2em 0 -1em #ffffff;
87 | }
88 | 75% {
89 | box-shadow: 0em -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0.2em #ffffff, -2em -2em 0 0 #ffffff;
90 | }
91 | 87.5% {
92 | box-shadow: 0em -3em 0 0 #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0 #ffffff, -2em -2em 0 0.2em #ffffff;
93 | }
94 | }
95 |
96 | /* ==================================================================================== */
97 | /* LOADING MASK CUSTOM CSS END */
98 | /* ==================================================================================== */
99 |
--------------------------------------------------------------------------------
/dist/system/loading-mask/loading-mask.css:
--------------------------------------------------------------------------------
1 |
2 | /* ==================================================================================== */
3 | /* LOADING MASK CUSTOM CSS */
4 | /* ==================================================================================== */
5 |
6 | .mask {
7 | font-size: 20px;
8 | margin: 100px auto;
9 | width: 1em;
10 | height: 1em;
11 | border-radius: 50%;
12 | position: relative;
13 | text-indent: -9999em;
14 | -webkit-animation: spinner 1.3s infinite linear;
15 | animation: spinner 1.3s infinite linear;
16 | -webkit-transform: translateZ(0);
17 | -ms-transform: translateZ(0);
18 | transform: translateZ(0);
19 | }
20 |
21 | .spinner {
22 | position: absolute;
23 | width: 100%;
24 | height: 100%;
25 | opacity: 0.5;
26 | background-color: #000;
27 | display: none;
28 | top: 0;
29 | z-index: 2000;
30 | text-align: center;
31 | padding-top: 20%;
32 | font-size: 25px;
33 | }
34 |
35 | .loadingTitle {
36 | color: #ffffff;
37 | opacity: 1;
38 | font-size: 2.5em;
39 | }
40 |
41 | @-webkit-keyframes spinner {
42 | 0%,
43 | 100% {
44 | box-shadow: 0 -3em 0 0.2em #ffffff, 2em -2em 0 0em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 0 #ffffff;
45 | }
46 | 12.5% {
47 | box-shadow: 0 -3em 0 0 #ffffff, 2em -2em 0 0.2em #ffffff, 3em 0 0 0 #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
48 | }
49 | 25% {
50 | box-shadow: 0 -3em 0 -0.5em #ffffff, 2em -2em 0 0 #ffffff, 3em 0 0 0.2em #ffffff, 2em 2em 0 0 #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
51 | }
52 | 37.5% {
53 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 0 #ffffff, 2em 2em 0 0.2em #ffffff, 0 3em 0 0em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
54 | }
55 | 50% {
56 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 0em #ffffff, 0 3em 0 0.2em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
57 | }
58 | 62.5% {
59 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 0 #ffffff, -2em 2em 0 0.2em #ffffff, -3em 0 0 0 #ffffff, -2em -2em 0 -1em #ffffff;
60 | }
61 | 75% {
62 | box-shadow: 0em -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0.2em #ffffff, -2em -2em 0 0 #ffffff;
63 | }
64 | 87.5% {
65 | box-shadow: 0em -3em 0 0 #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0 #ffffff, -2em -2em 0 0.2em #ffffff;
66 | }
67 | }
68 | @keyframes spinner {
69 | 0%,
70 | 100% {
71 | box-shadow: 0 -3em 0 0.2em #ffffff, 2em -2em 0 0em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 0 #ffffff;
72 | }
73 | 12.5% {
74 | box-shadow: 0 -3em 0 0 #ffffff, 2em -2em 0 0.2em #ffffff, 3em 0 0 0 #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
75 | }
76 | 25% {
77 | box-shadow: 0 -3em 0 -0.5em #ffffff, 2em -2em 0 0 #ffffff, 3em 0 0 0.2em #ffffff, 2em 2em 0 0 #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
78 | }
79 | 37.5% {
80 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 0 #ffffff, 2em 2em 0 0.2em #ffffff, 0 3em 0 0em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
81 | }
82 | 50% {
83 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 0em #ffffff, 0 3em 0 0.2em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
84 | }
85 | 62.5% {
86 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 0 #ffffff, -2em 2em 0 0.2em #ffffff, -3em 0 0 0 #ffffff, -2em -2em 0 -1em #ffffff;
87 | }
88 | 75% {
89 | box-shadow: 0em -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0.2em #ffffff, -2em -2em 0 0 #ffffff;
90 | }
91 | 87.5% {
92 | box-shadow: 0em -3em 0 0 #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0 #ffffff, -2em -2em 0 0.2em #ffffff;
93 | }
94 | }
95 |
96 | /* ==================================================================================== */
97 | /* LOADING MASK CUSTOM CSS END */
98 | /* ==================================================================================== */
99 |
--------------------------------------------------------------------------------
/dist/commonjs/loading-mask/loading-mask.css:
--------------------------------------------------------------------------------
1 |
2 | /* ==================================================================================== */
3 | /* LOADING MASK CUSTOM CSS */
4 | /* ==================================================================================== */
5 |
6 | .mask {
7 | font-size: 20px;
8 | margin: 100px auto;
9 | width: 1em;
10 | height: 1em;
11 | border-radius: 50%;
12 | position: relative;
13 | text-indent: -9999em;
14 | -webkit-animation: spinner 1.3s infinite linear;
15 | animation: spinner 1.3s infinite linear;
16 | -webkit-transform: translateZ(0);
17 | -ms-transform: translateZ(0);
18 | transform: translateZ(0);
19 | }
20 |
21 | .spinner {
22 | position: absolute;
23 | width: 100%;
24 | height: 100%;
25 | opacity: 0.5;
26 | background-color: #000;
27 | display: none;
28 | top: 0;
29 | z-index: 2000;
30 | text-align: center;
31 | padding-top: 20%;
32 | font-size: 25px;
33 | }
34 |
35 | .loadingTitle {
36 | color: #ffffff;
37 | opacity: 1;
38 | font-size: 2.5em;
39 | }
40 |
41 | @-webkit-keyframes spinner {
42 | 0%,
43 | 100% {
44 | box-shadow: 0 -3em 0 0.2em #ffffff, 2em -2em 0 0em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 0 #ffffff;
45 | }
46 | 12.5% {
47 | box-shadow: 0 -3em 0 0 #ffffff, 2em -2em 0 0.2em #ffffff, 3em 0 0 0 #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
48 | }
49 | 25% {
50 | box-shadow: 0 -3em 0 -0.5em #ffffff, 2em -2em 0 0 #ffffff, 3em 0 0 0.2em #ffffff, 2em 2em 0 0 #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
51 | }
52 | 37.5% {
53 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 0 #ffffff, 2em 2em 0 0.2em #ffffff, 0 3em 0 0em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
54 | }
55 | 50% {
56 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 0em #ffffff, 0 3em 0 0.2em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
57 | }
58 | 62.5% {
59 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 0 #ffffff, -2em 2em 0 0.2em #ffffff, -3em 0 0 0 #ffffff, -2em -2em 0 -1em #ffffff;
60 | }
61 | 75% {
62 | box-shadow: 0em -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0.2em #ffffff, -2em -2em 0 0 #ffffff;
63 | }
64 | 87.5% {
65 | box-shadow: 0em -3em 0 0 #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0 #ffffff, -2em -2em 0 0.2em #ffffff;
66 | }
67 | }
68 | @keyframes spinner {
69 | 0%,
70 | 100% {
71 | box-shadow: 0 -3em 0 0.2em #ffffff, 2em -2em 0 0em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 0 #ffffff;
72 | }
73 | 12.5% {
74 | box-shadow: 0 -3em 0 0 #ffffff, 2em -2em 0 0.2em #ffffff, 3em 0 0 0 #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
75 | }
76 | 25% {
77 | box-shadow: 0 -3em 0 -0.5em #ffffff, 2em -2em 0 0 #ffffff, 3em 0 0 0.2em #ffffff, 2em 2em 0 0 #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
78 | }
79 | 37.5% {
80 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 0 #ffffff, 2em 2em 0 0.2em #ffffff, 0 3em 0 0em #ffffff, -2em 2em 0 -1em #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
81 | }
82 | 50% {
83 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 0em #ffffff, 0 3em 0 0.2em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 -1em #ffffff, -2em -2em 0 -1em #ffffff;
84 | }
85 | 62.5% {
86 | box-shadow: 0 -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 0 #ffffff, -2em 2em 0 0.2em #ffffff, -3em 0 0 0 #ffffff, -2em -2em 0 -1em #ffffff;
87 | }
88 | 75% {
89 | box-shadow: 0em -3em 0 -1em #ffffff, 2em -2em 0 -1em #ffffff, 3em 0em 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0.2em #ffffff, -2em -2em 0 0 #ffffff;
90 | }
91 | 87.5% {
92 | box-shadow: 0em -3em 0 0 #ffffff, 2em -2em 0 -1em #ffffff, 3em 0 0 -1em #ffffff, 2em 2em 0 -1em #ffffff, 0 3em 0 -1em #ffffff, -2em 2em 0 0 #ffffff, -3em 0em 0 0 #ffffff, -2em -2em 0 0.2em #ffffff;
93 | }
94 | }
95 |
96 | /* ==================================================================================== */
97 | /* LOADING MASK CUSTOM CSS END */
98 | /* ==================================================================================== */
99 |
--------------------------------------------------------------------------------
/dist/amd/loading-mask/loading-mask.js:
--------------------------------------------------------------------------------
1 | define(['exports', 'jquery', '../locale'], function (exports, _jquery, _locale) {
2 | 'use strict';
3 |
4 | Object.defineProperty(exports, '__esModule', {
5 | value: true
6 | });
7 |
8 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
9 |
10 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
11 |
12 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
13 |
14 | var _$ = _interopRequireDefault(_jquery);
15 |
16 | var LoadingMask = (function () {
17 | function LoadingMask(resources) {
18 | _classCallCheck(this, LoadingMask);
19 |
20 | this.loadingMask = undefined;
21 | this.dimScreen = undefined;
22 | this.dialog = undefined;
23 | this.loadingTitle = undefined;
24 | this.title = undefined;
25 | this.locale = _locale.Locale.Repository['default'];
26 | this._createLoadingMask();
27 | }
28 |
29 | _createClass(LoadingMask, [{
30 | key: '_createLoadingMask',
31 | value: function _createLoadingMask() {
32 | this.title = this.locale.translate('loading');
33 | this.dimScreen = '';
34 | (0, _$['default'])('body').append(this.dimScreen);
35 | this.loadingMask = (0, _$['default'])('#loadingMask');
36 | this.loadingTitle = (0, _$['default'])('.loadingTitle').css({
37 | color: '#ffffff',
38 | opacity: 1,
39 | fontSize: '2.5em'
40 | });
41 | }
42 | }, {
43 | key: 'show',
44 | value: function show() {
45 | this.loadingMask.show();
46 | }
47 | }, {
48 | key: 'hide',
49 | value: function hide() {
50 | this.loadingMask.hide();
51 | }
52 | }]);
53 |
54 | return LoadingMask;
55 | })();
56 |
57 | exports.LoadingMask = LoadingMask;
58 | });
59 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvYWRpbmctbWFzay9sb2FkaW5nLW1hc2suanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O01BR2EsV0FBVztBQUNYLGFBREEsV0FBVyxDQUNWLFNBQVMsRUFBRTs0QkFEWixXQUFXOztBQUVwQixVQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztBQUM3QixVQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUMzQixVQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztBQUN4QixVQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztBQUM5QixVQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztBQUN2QixVQUFJLENBQUMsTUFBTSxHQUFHLFFBVFYsTUFBTSxDQVNXLFVBQVUsV0FBUSxDQUFDO0FBQ3hDLFVBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0tBQzNCOztpQkFUVSxXQUFXOzthQVdKLDhCQUFHO0FBQ25CLFlBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDOUMsWUFBSSxDQUFDLFNBQVMsR0FBRyxrRUFBa0UsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFFLHNDQUFzQyxDQUFDO0FBQ3pJLDJCQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDakMsWUFBSSxDQUFDLFdBQVcsR0FBRyxtQkFBRSxjQUFjLENBQUMsQ0FBQztBQUNyQyxZQUFJLENBQUMsWUFBWSxHQUFHLG1CQUFFLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUN6QyxlQUFLLEVBQUUsU0FBUztBQUNoQixpQkFBTyxFQUFFLENBQUM7QUFDVixrQkFBUSxFQUFFLE9BQU87U0FFbEIsQ0FBQyxDQUFDO09BQ0o7OzthQUVHLGdCQUFHO0FBQ0wsWUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztPQUN6Qjs7O2FBRUcsZ0JBQUc7QUFDTCxZQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO09BQ3pCOzs7V0E5QlUsV0FBVyIsImZpbGUiOiJsb2FkaW5nLW1hc2svbG9hZGluZy1tYXNrLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JztcbmltcG9ydCB7TG9jYWxlfSBmcm9tICcuLi9sb2NhbGUnO1xuXG5leHBvcnQgY2xhc3MgTG9hZGluZ01hc2sge1xuICBjb25zdHJ1Y3RvcihyZXNvdXJjZXMpIHtcbiAgICB0aGlzLmxvYWRpbmdNYXNrID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZGltU2NyZWVuID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuZGlhbG9nID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubG9hZGluZ1RpdGxlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMudGl0bGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sb2NhbGUgPSBMb2NhbGUuUmVwb3NpdG9yeS5kZWZhdWx0O1xuICAgIHRoaXMuX2NyZWF0ZUxvYWRpbmdNYXNrKCk7XG4gIH1cblxuICBfY3JlYXRlTG9hZGluZ01hc2soKSB7XG4gICAgdGhpcy50aXRsZSA9IHRoaXMubG9jYWxlLnRyYW5zbGF0ZSgnbG9hZGluZycpO1xuICAgIHRoaXMuZGltU2NyZWVuID0gJzxkaXYgaWQ9XCJsb2FkaW5nTWFza1wiIGNsYXNzPVwic3Bpbm5lclwiPjxkaXYgY2xhc3M9XCJsb2FkaW5nVGl0bGVcIj4nICsgdGhpcy50aXRsZSArJzwvZGl2PjxkaXYgY2xhc3M9XCJtYXNrXCI+PC9kaXY+PC9kaXY+JztcbiAgICAkKCdib2R5JykuYXBwZW5kKHRoaXMuZGltU2NyZWVuKTtcbiAgICB0aGlzLmxvYWRpbmdNYXNrID0gJCgnI2xvYWRpbmdNYXNrJyk7XG4gICAgdGhpcy5sb2FkaW5nVGl0bGUgPSAkKCcubG9hZGluZ1RpdGxlJykuY3NzKHtcbiAgICAgIGNvbG9yOiAnI2ZmZmZmZicsXG4gICAgICBvcGFjaXR5OiAxLFxuICAgICAgZm9udFNpemU6ICcyLjVlbSdcbiAgICAgIC8vZm9udEZhbWlseTogJ1JvYm90bydcbiAgICB9KTtcbiAgfVxuXG4gIHNob3coKSB7XG4gICAgdGhpcy5sb2FkaW5nTWFzay5zaG93KCk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIHRoaXMubG9hZGluZ01hc2suaGlkZSgpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
--------------------------------------------------------------------------------
/dist/system/loading-mask/loading-mask.js:
--------------------------------------------------------------------------------
1 | System.register(['jquery', '../locale'], function (_export) {
2 | 'use strict';
3 |
4 | var $, Locale, LoadingMask;
5 |
6 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
7 |
8 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
9 |
10 | return {
11 | setters: [function (_jquery) {
12 | $ = _jquery['default'];
13 | }, function (_locale) {
14 | Locale = _locale.Locale;
15 | }],
16 | execute: function () {
17 | LoadingMask = (function () {
18 | function LoadingMask(resources) {
19 | _classCallCheck(this, LoadingMask);
20 |
21 | this.loadingMask = undefined;
22 | this.dimScreen = undefined;
23 | this.dialog = undefined;
24 | this.loadingTitle = undefined;
25 | this.title = undefined;
26 | this.locale = Locale.Repository['default'];
27 | this._createLoadingMask();
28 | }
29 |
30 | _createClass(LoadingMask, [{
31 | key: '_createLoadingMask',
32 | value: function _createLoadingMask() {
33 | this.title = this.locale.translate('loading');
34 | this.dimScreen = '';
35 | $('body').append(this.dimScreen);
36 | this.loadingMask = $('#loadingMask');
37 | this.loadingTitle = $('.loadingTitle').css({
38 | color: '#ffffff',
39 | opacity: 1,
40 | fontSize: '2.5em'
41 | });
42 | }
43 | }, {
44 | key: 'show',
45 | value: function show() {
46 | this.loadingMask.show();
47 | }
48 | }, {
49 | key: 'hide',
50 | value: function hide() {
51 | this.loadingMask.hide();
52 | }
53 | }]);
54 |
55 | return LoadingMask;
56 | })();
57 |
58 | _export('LoadingMask', LoadingMask);
59 | }
60 | };
61 | });
62 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvYWRpbmctbWFzay9sb2FkaW5nLW1hc2suanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O2lCQUdhLFdBQVc7Ozs7Ozs7Ozs7dUJBRmhCLE1BQU07OztBQUVELGlCQUFXO0FBQ1gsaUJBREEsV0FBVyxDQUNWLFNBQVMsRUFBRTtnQ0FEWixXQUFXOztBQUVwQixjQUFJLENBQUMsV0FBVyxHQUFHLFNBQVMsQ0FBQztBQUM3QixjQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUMzQixjQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztBQUN4QixjQUFJLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztBQUM5QixjQUFJLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQztBQUN2QixjQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLFdBQVEsQ0FBQztBQUN4QyxjQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztTQUMzQjs7cUJBVFUsV0FBVzs7aUJBV0osOEJBQUc7QUFDbkIsZ0JBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDOUMsZ0JBQUksQ0FBQyxTQUFTLEdBQUcsa0VBQWtFLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRSxzQ0FBc0MsQ0FBQztBQUN6SSxhQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNqQyxnQkFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDckMsZ0JBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUN6QyxtQkFBSyxFQUFFLFNBQVM7QUFDaEIscUJBQU8sRUFBRSxDQUFDO0FBQ1Ysc0JBQVEsRUFBRSxPQUFPO2FBRWxCLENBQUMsQ0FBQztXQUNKOzs7aUJBRUcsZ0JBQUc7QUFDTCxnQkFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztXQUN6Qjs7O2lCQUVHLGdCQUFHO0FBQ0wsZ0JBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7V0FDekI7OztlQTlCVSxXQUFXIiwiZmlsZSI6ImxvYWRpbmctbWFzay9sb2FkaW5nLW1hc2suanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJCBmcm9tICdqcXVlcnknO1xuaW1wb3J0IHtMb2NhbGV9IGZyb20gJy4uL2xvY2FsZSc7XG5cbmV4cG9ydCBjbGFzcyBMb2FkaW5nTWFzayB7XG4gIGNvbnN0cnVjdG9yKHJlc291cmNlcykge1xuICAgIHRoaXMubG9hZGluZ01hc2sgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5kaW1TY3JlZW4gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5kaWFsb2cgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5sb2FkaW5nVGl0bGUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy50aXRsZSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmxvY2FsZSA9IExvY2FsZS5SZXBvc2l0b3J5LmRlZmF1bHQ7XG4gICAgdGhpcy5fY3JlYXRlTG9hZGluZ01hc2soKTtcbiAgfVxuXG4gIF9jcmVhdGVMb2FkaW5nTWFzaygpIHtcbiAgICB0aGlzLnRpdGxlID0gdGhpcy5sb2NhbGUudHJhbnNsYXRlKCdsb2FkaW5nJyk7XG4gICAgdGhpcy5kaW1TY3JlZW4gPSAnPGRpdiBpZD1cImxvYWRpbmdNYXNrXCIgY2xhc3M9XCJzcGlubmVyXCI+PGRpdiBjbGFzcz1cImxvYWRpbmdUaXRsZVwiPicgKyB0aGlzLnRpdGxlICsnPC9kaXY+PGRpdiBjbGFzcz1cIm1hc2tcIj48L2Rpdj48L2Rpdj4nO1xuICAgICQoJ2JvZHknKS5hcHBlbmQodGhpcy5kaW1TY3JlZW4pO1xuICAgIHRoaXMubG9hZGluZ01hc2sgPSAkKCcjbG9hZGluZ01hc2snKTtcbiAgICB0aGlzLmxvYWRpbmdUaXRsZSA9ICQoJy5sb2FkaW5nVGl0bGUnKS5jc3Moe1xuICAgICAgY29sb3I6ICcjZmZmZmZmJyxcbiAgICAgIG9wYWNpdHk6IDEsXG4gICAgICBmb250U2l6ZTogJzIuNWVtJ1xuICAgICAgLy9mb250RmFtaWx5OiAnUm9ib3RvJ1xuICAgIH0pO1xuICB9XG5cbiAgc2hvdygpIHtcbiAgICB0aGlzLmxvYWRpbmdNYXNrLnNob3coKTtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgdGhpcy5sb2FkaW5nTWFzay5oaWRlKCk7XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
--------------------------------------------------------------------------------
/dist/commonjs/authorize-steps.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | Object.defineProperty(exports, '__esModule', {
4 | value: true
5 | });
6 |
7 | var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
8 |
9 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
10 |
11 | function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
12 |
13 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
14 |
15 | var _aureliaDependencyInjection = require('aurelia-dependency-injection');
16 |
17 | var _session = require('./session');
18 |
19 | var _logger = require('./logger');
20 |
21 | var _locale = require('./locale');
22 |
23 | var _config = require('./config');
24 |
25 | var _aureliaRouter = require('aurelia-router');
26 |
27 | var BaseAuthorizeStep = (function () {
28 | function BaseAuthorizeStep(session, logger) {
29 | _classCallCheck(this, BaseAuthorizeStep);
30 |
31 | this.session = session;
32 | this.logger = logger;
33 | this.locale = _locale.Locale.Repository['default'];
34 | this.loginRoute = _config.Config.routerAuthStepOpts.loginRoute;
35 | }
36 |
37 | _createClass(BaseAuthorizeStep, [{
38 | key: 'run',
39 | value: function run(navigationInstruction, next) {
40 | if (!this.session.isUserLoggedIn() && navigationInstruction.config.route !== this.loginRoute) {
41 | this.logger.warn(this.locale.translate('pleaseLogin'));
42 | return next.cancel(new _aureliaRouter.Redirect(this.loginRoute));
43 | }
44 |
45 | var canAccess = this.authorize(navigationInstruction);
46 | if (canAccess === false) {
47 | this.logger.error(this.locale.translate('notAuthorized'));
48 | return next.cancel();
49 | }
50 |
51 | return next();
52 | }
53 | }, {
54 | key: 'authorize',
55 | value: function authorize(navigationInstruction) {
56 | if (navigationInstruction.parentInstruction === null) {
57 | return this.canAccess(navigationInstruction);
58 | } else {
59 | var canAccess = this.canAccess(navigationInstruction);
60 | if (hasRole) {
61 | return this.authorize(navigationInstruction.parentInstruction);
62 | } else {
63 | return false;
64 | }
65 | }
66 | }
67 | }, {
68 | key: 'canAccess',
69 | value: function canAccess() {}
70 | }]);
71 |
72 | return BaseAuthorizeStep;
73 | })();
74 |
75 | var RolesAuthorizeStep = (function (_BaseAuthorizeStep) {
76 | _inherits(RolesAuthorizeStep, _BaseAuthorizeStep);
77 |
78 | function RolesAuthorizeStep(session, logger) {
79 | _classCallCheck(this, _RolesAuthorizeStep);
80 |
81 | _get(Object.getPrototypeOf(_RolesAuthorizeStep.prototype), 'constructor', this).call(this, session, logger);
82 | }
83 |
84 | _createClass(RolesAuthorizeStep, [{
85 | key: 'canAccess',
86 | value: function canAccess(navigationInstruction) {
87 | if (navigationInstruction.config.roles) {
88 | return this.session.userHasAtLeastOneRole(navigationInstruction.config.roles);
89 | }
90 |
91 | return true;
92 | }
93 | }]);
94 |
95 | var _RolesAuthorizeStep = RolesAuthorizeStep;
96 | RolesAuthorizeStep = (0, _aureliaDependencyInjection.inject)(_session.Session, _logger.Logger)(RolesAuthorizeStep) || RolesAuthorizeStep;
97 | return RolesAuthorizeStep;
98 | })(BaseAuthorizeStep);
99 |
100 | exports.RolesAuthorizeStep = RolesAuthorizeStep;
101 |
102 | var AccessRightsAuthorizeStep = (function (_BaseAuthorizeStep2) {
103 | _inherits(AccessRightsAuthorizeStep, _BaseAuthorizeStep2);
104 |
105 | function AccessRightsAuthorizeStep(session, logger) {
106 | _classCallCheck(this, _AccessRightsAuthorizeStep);
107 |
108 | _get(Object.getPrototypeOf(_AccessRightsAuthorizeStep.prototype), 'constructor', this).call(this, session, logger);
109 | }
110 |
111 | _createClass(AccessRightsAuthorizeStep, [{
112 | key: 'canAccess',
113 | value: function canAccess(navigationInstruction) {
114 | if (navigationInstruction.config.accessRight) {
115 | return this.session.userHasAccessRight(navigationInstruction.config.accessRight);
116 | }
117 |
118 | return true;
119 | }
120 | }]);
121 |
122 | var _AccessRightsAuthorizeStep = AccessRightsAuthorizeStep;
123 | AccessRightsAuthorizeStep = (0, _aureliaDependencyInjection.inject)(_session.Session, _logger.Logger)(AccessRightsAuthorizeStep) || AccessRightsAuthorizeStep;
124 | return AccessRightsAuthorizeStep;
125 | })(BaseAuthorizeStep);
126 |
127 | exports.AccessRightsAuthorizeStep = AccessRightsAuthorizeStep;
--------------------------------------------------------------------------------
/dist/amd/logger.js:
--------------------------------------------------------------------------------
1 | define(['exports', 'CodeSeven/toastr', './config'], function (exports, _CodeSevenToastr, _config) {
2 | 'use strict';
3 |
4 | Object.defineProperty(exports, '__esModule', {
5 | value: true
6 | });
7 |
8 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
9 |
10 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
11 |
12 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
13 |
14 | var _toastr = _interopRequireDefault(_CodeSevenToastr);
15 |
16 | var defaults = {
17 | source: 'app',
18 | title: '',
19 | message: 'no message provided',
20 | data: '',
21 | showToast: true,
22 | type: 'info'
23 | };
24 |
25 | function log(options) {
26 | var opts = Object.assign({}, defaults, options);
27 |
28 | if (opts.showToast) {
29 | _toastr['default'][opts.type](opts.message, opts.title);
30 | }
31 | }
32 |
33 | function sanitize(options, messageType) {
34 | if (typeof options === 'string' || options instanceof String) {
35 | return {
36 | message: options,
37 | type: messageType
38 | };
39 | }
40 |
41 | options.type = messageType;
42 | return options;
43 | }
44 |
45 | var Logger = (function () {
46 | function Logger() {
47 | _classCallCheck(this, Logger);
48 |
49 | var defOpts = {
50 | closeButton: true,
51 | positionClass: 'toast-bottom-right',
52 | fadeOut: 1000
53 | };
54 |
55 | var configOptions = _config.Config.loggerOpts || {};
56 | var options = Object.assign(_toastr['default'].options, defOpts, configOptions);
57 | _toastr['default'].options = options;
58 | }
59 |
60 | _createClass(Logger, [{
61 | key: 'warn',
62 | value: function warn(options) {
63 | log(sanitize(options, 'warning'));
64 | }
65 | }, {
66 | key: 'info',
67 | value: function info(options) {
68 | log(sanitize(options, 'info'));
69 | }
70 | }, {
71 | key: 'error',
72 | value: function error(options) {
73 | log(sanitize(options, 'error'));
74 | }
75 | }, {
76 | key: 'success',
77 | value: function success(options) {
78 | log(sanitize(options, 'success'));
79 | }
80 | }]);
81 |
82 | return Logger;
83 | })();
84 |
85 | exports.Logger = Logger;
86 | });
87 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFNQSxNQUFNLFFBQVEsR0FBRztBQUNmLFVBQU0sRUFBRSxLQUFLO0FBQ2IsU0FBSyxFQUFFLEVBQUU7QUFDVCxXQUFPLEVBQUUscUJBQXFCO0FBQzlCLFFBQUksRUFBRSxFQUFFO0FBQ1IsYUFBUyxFQUFFLElBQUk7QUFDZixRQUFJLEVBQUUsTUFBTTtHQUNiLENBQUM7O0FBRUYsV0FBUyxHQUFHLENBQUMsT0FBTyxFQUFFO0FBQ3BCLFFBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQzs7QUFHaEQsUUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO0FBQ2xCLHlCQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUM3QztHQUNGOztBQUVELFdBQVMsUUFBUSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUU7QUFDdEMsUUFBSSxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksT0FBTyxZQUFZLE1BQU0sRUFBRTtBQUM1RCxhQUFPO0FBQ0wsZUFBTyxFQUFFLE9BQU87QUFDaEIsWUFBSSxFQUFFLFdBQVc7T0FDbEIsQ0FBQztLQUNIOztBQUVELFdBQU8sQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO0FBQzNCLFdBQU8sT0FBTyxDQUFDO0dBQ2hCOztNQUVZLE1BQU07QUFDTixhQURBLE1BQU0sR0FDSDs0QkFESCxNQUFNOztBQUVmLFVBQUksT0FBTyxHQUFHO0FBQ1osbUJBQVcsRUFBRSxJQUFJO0FBQ2pCLHFCQUFhLEVBQUUsb0JBQW9CO0FBQ25DLGVBQU8sRUFBRSxJQUFJO09BQ2QsQ0FBQzs7QUFFRixVQUFJLGFBQWEsR0FBRyxRQXhDaEIsTUFBTSxDQXdDaUIsVUFBVSxJQUFJLEVBQUUsQ0FBQztBQUM1QyxVQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLG1CQUFPLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDcEUseUJBQU8sT0FBTyxHQUFHLE9BQU8sQ0FBQztLQUMxQjs7aUJBWFUsTUFBTTs7YUFhYixjQUFDLE9BQU8sRUFBRTtBQUNaLFdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7T0FDbkM7OzthQUVHLGNBQUMsT0FBTyxFQUFFO0FBQ1osV0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztPQUNoQzs7O2FBRUksZUFBQyxPQUFPLEVBQUU7QUFDYixXQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO09BQ2pDOzs7YUFFTSxpQkFBQyxPQUFPLEVBQUU7QUFDZixXQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO09BQ25DOzs7V0EzQlUsTUFBTSIsImZpbGUiOiJsb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENyZWF0ZWQgYnkgbW9zaGVuc2t5IG9uIDYvMTYvMTUuXG4gKi9cbmltcG9ydCB0b2FzdHIgZnJvbSAnQ29kZVNldmVuL3RvYXN0cic7XG5pbXBvcnQge0NvbmZpZ30gZnJvbSAnLi9jb25maWcnO1xuXG5jb25zdCBkZWZhdWx0cyA9IHtcbiAgc291cmNlOiAnYXBwJyxcbiAgdGl0bGU6ICcnLFxuICBtZXNzYWdlOiAnbm8gbWVzc2FnZSBwcm92aWRlZCcsXG4gIGRhdGE6ICcnLFxuICBzaG93VG9hc3Q6IHRydWUsXG4gIHR5cGU6ICdpbmZvJ1xufTtcblxuZnVuY3Rpb24gbG9nKG9wdGlvbnMpIHtcbiAgdmFyIG9wdHMgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0cywgb3B0aW9ucyk7XG4gIC8vc3lzdGVtLmxvZyhvcG5zLnNvdXJjZSArICcsICcgKyBvcG5zLnR5cGUgKyAnLCAnICsgb3Bucy5tZXNzYWdlICsgJywgJyArIG9wbnMuZGF0YSArICcgJyk7XG5cbiAgaWYgKG9wdHMuc2hvd1RvYXN0KSB7XG4gICAgdG9hc3RyW29wdHMudHlwZV0ob3B0cy5tZXNzYWdlLCBvcHRzLnRpdGxlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzYW5pdGl6ZShvcHRpb25zLCBtZXNzYWdlVHlwZSkge1xuICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnIHx8IG9wdGlvbnMgaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZTogb3B0aW9ucyxcbiAgICAgIHR5cGU6IG1lc3NhZ2VUeXBlXG4gICAgfTtcbiAgfVxuXG4gIG9wdGlvbnMudHlwZSA9IG1lc3NhZ2VUeXBlO1xuICByZXR1cm4gb3B0aW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIExvZ2dlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGxldCBkZWZPcHRzID0ge1xuICAgICAgY2xvc2VCdXR0b246IHRydWUsXG4gICAgICBwb3NpdGlvbkNsYXNzOiAndG9hc3QtYm90dG9tLXJpZ2h0JyxcbiAgICAgIGZhZGVPdXQ6IDEwMDBcbiAgICB9O1xuXG4gICAgbGV0IGNvbmZpZ09wdGlvbnMgPSBDb25maWcubG9nZ2VyT3B0cyB8fCB7fTtcbiAgICBsZXQgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24odG9hc3RyLm9wdGlvbnMsIGRlZk9wdHMsIGNvbmZpZ09wdGlvbnMpO1xuICAgIHRvYXN0ci5vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIHdhcm4ob3B0aW9ucykge1xuICAgIGxvZyhzYW5pdGl6ZShvcHRpb25zLCAnd2FybmluZycpKTtcbiAgfVxuXG4gIGluZm8ob3B0aW9ucykge1xuICAgIGxvZyhzYW5pdGl6ZShvcHRpb25zLCAnaW5mbycpKTtcbiAgfVxuXG4gIGVycm9yKG9wdGlvbnMpIHtcbiAgICBsb2coc2FuaXRpemUob3B0aW9ucywgJ2Vycm9yJykpO1xuICB9XG5cbiAgc3VjY2VzcyhvcHRpb25zKSB7XG4gICAgbG9nKHNhbml0aXplKG9wdGlvbnMsICdzdWNjZXNzJykpO1xuICB9XG59XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
--------------------------------------------------------------------------------
/dist/system/logger.js:
--------------------------------------------------------------------------------
1 | System.register(['CodeSeven/toastr', './config'], function (_export) {
2 | 'use strict';
3 |
4 | var toastr, Config, defaults, Logger;
5 |
6 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
7 |
8 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
9 |
10 | function log(options) {
11 | var opts = Object.assign({}, defaults, options);
12 |
13 | if (opts.showToast) {
14 | toastr[opts.type](opts.message, opts.title);
15 | }
16 | }
17 |
18 | function sanitize(options, messageType) {
19 | if (typeof options === 'string' || options instanceof String) {
20 | return {
21 | message: options,
22 | type: messageType
23 | };
24 | }
25 |
26 | options.type = messageType;
27 | return options;
28 | }
29 |
30 | return {
31 | setters: [function (_CodeSevenToastr) {
32 | toastr = _CodeSevenToastr['default'];
33 | }, function (_config) {
34 | Config = _config.Config;
35 | }],
36 | execute: function () {
37 | defaults = {
38 | source: 'app',
39 | title: '',
40 | message: 'no message provided',
41 | data: '',
42 | showToast: true,
43 | type: 'info'
44 | };
45 |
46 | Logger = (function () {
47 | function Logger() {
48 | _classCallCheck(this, Logger);
49 |
50 | var defOpts = {
51 | closeButton: true,
52 | positionClass: 'toast-bottom-right',
53 | fadeOut: 1000
54 | };
55 |
56 | var configOptions = Config.loggerOpts || {};
57 | var options = Object.assign(toastr.options, defOpts, configOptions);
58 | toastr.options = options;
59 | }
60 |
61 | _createClass(Logger, [{
62 | key: 'warn',
63 | value: function warn(options) {
64 | log(sanitize(options, 'warning'));
65 | }
66 | }, {
67 | key: 'info',
68 | value: function info(options) {
69 | log(sanitize(options, 'info'));
70 | }
71 | }, {
72 | key: 'error',
73 | value: function error(options) {
74 | log(sanitize(options, 'error'));
75 | }
76 | }, {
77 | key: 'success',
78 | value: function success(options) {
79 | log(sanitize(options, 'success'));
80 | }
81 | }]);
82 |
83 | return Logger;
84 | })();
85 |
86 | _export('Logger', Logger);
87 | }
88 | };
89 | });
90 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7c0JBTU0sUUFBUSxFQThCRCxNQUFNOzs7Ozs7QUFyQm5CLFdBQVMsR0FBRyxDQUFDLE9BQU8sRUFBRTtBQUNwQixRQUFJLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7O0FBR2hELFFBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtBQUNsQixZQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzdDO0dBQ0Y7O0FBRUQsV0FBUyxRQUFRLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRTtBQUN0QyxRQUFJLE9BQU8sT0FBTyxLQUFLLFFBQVEsSUFBSSxPQUFPLFlBQVksTUFBTSxFQUFFO0FBQzVELGFBQU87QUFDTCxlQUFPLEVBQUUsT0FBTztBQUNoQixZQUFJLEVBQUUsV0FBVztPQUNsQixDQUFDO0tBQ0g7O0FBRUQsV0FBTyxDQUFDLElBQUksR0FBRyxXQUFXLENBQUM7QUFDM0IsV0FBTyxPQUFPLENBQUM7R0FDaEI7Ozs7Ozt1QkE5Qk8sTUFBTTs7O0FBRVIsY0FBUSxHQUFHO0FBQ2YsY0FBTSxFQUFFLEtBQUs7QUFDYixhQUFLLEVBQUUsRUFBRTtBQUNULGVBQU8sRUFBRSxxQkFBcUI7QUFDOUIsWUFBSSxFQUFFLEVBQUU7QUFDUixpQkFBUyxFQUFFLElBQUk7QUFDZixZQUFJLEVBQUUsTUFBTTtPQUNiOztBQXVCWSxZQUFNO0FBQ04saUJBREEsTUFBTSxHQUNIO2dDQURILE1BQU07O0FBRWYsY0FBSSxPQUFPLEdBQUc7QUFDWix1QkFBVyxFQUFFLElBQUk7QUFDakIseUJBQWEsRUFBRSxvQkFBb0I7QUFDbkMsbUJBQU8sRUFBRSxJQUFJO1dBQ2QsQ0FBQzs7QUFFRixjQUFJLGFBQWEsR0FBRyxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztBQUM1QyxjQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQ3BFLGdCQUFNLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztTQUMxQjs7cUJBWFUsTUFBTTs7aUJBYWIsY0FBQyxPQUFPLEVBQUU7QUFDWixlQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1dBQ25DOzs7aUJBRUcsY0FBQyxPQUFPLEVBQUU7QUFDWixlQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO1dBQ2hDOzs7aUJBRUksZUFBQyxPQUFPLEVBQUU7QUFDYixlQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1dBQ2pDOzs7aUJBRU0saUJBQUMsT0FBTyxFQUFFO0FBQ2YsZUFBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztXQUNuQzs7O2VBM0JVLE1BQU0iLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVkIGJ5IG1vc2hlbnNreSBvbiA2LzE2LzE1LlxuICovXG5pbXBvcnQgdG9hc3RyIGZyb20gJ0NvZGVTZXZlbi90b2FzdHInO1xuaW1wb3J0IHtDb25maWd9IGZyb20gJy4vY29uZmlnJztcblxuY29uc3QgZGVmYXVsdHMgPSB7XG4gIHNvdXJjZTogJ2FwcCcsXG4gIHRpdGxlOiAnJyxcbiAgbWVzc2FnZTogJ25vIG1lc3NhZ2UgcHJvdmlkZWQnLFxuICBkYXRhOiAnJyxcbiAgc2hvd1RvYXN0OiB0cnVlLFxuICB0eXBlOiAnaW5mbydcbn07XG5cbmZ1bmN0aW9uIGxvZyhvcHRpb25zKSB7XG4gIHZhciBvcHRzID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdHMsIG9wdGlvbnMpO1xuICAvL3N5c3RlbS5sb2cob3Bucy5zb3VyY2UgKyAnLCAnICsgb3Bucy50eXBlICsgJywgJyArIG9wbnMubWVzc2FnZSArICcsICcgKyBvcG5zLmRhdGEgKyAnICcpO1xuXG4gIGlmIChvcHRzLnNob3dUb2FzdCkge1xuICAgIHRvYXN0cltvcHRzLnR5cGVdKG9wdHMubWVzc2FnZSwgb3B0cy50aXRsZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2FuaXRpemUob3B0aW9ucywgbWVzc2FnZVR5cGUpIHtcbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJyB8fCBvcHRpb25zIGluc3RhbmNlb2YgU3RyaW5nKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2U6IG9wdGlvbnMsXG4gICAgICB0eXBlOiBtZXNzYWdlVHlwZVxuICAgIH07XG4gIH1cblxuICBvcHRpb25zLnR5cGUgPSBtZXNzYWdlVHlwZTtcbiAgcmV0dXJuIG9wdGlvbnM7XG59XG5cbmV4cG9ydCBjbGFzcyBMb2dnZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBsZXQgZGVmT3B0cyA9IHtcbiAgICAgIGNsb3NlQnV0dG9uOiB0cnVlLFxuICAgICAgcG9zaXRpb25DbGFzczogJ3RvYXN0LWJvdHRvbS1yaWdodCcsXG4gICAgICBmYWRlT3V0OiAxMDAwXG4gICAgfTtcblxuICAgIGxldCBjb25maWdPcHRpb25zID0gQ29uZmlnLmxvZ2dlck9wdHMgfHwge307XG4gICAgbGV0IG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHRvYXN0ci5vcHRpb25zLCBkZWZPcHRzLCBjb25maWdPcHRpb25zKTtcbiAgICB0b2FzdHIub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICB3YXJuKG9wdGlvbnMpIHtcbiAgICBsb2coc2FuaXRpemUob3B0aW9ucywgJ3dhcm5pbmcnKSk7XG4gIH1cblxuICBpbmZvKG9wdGlvbnMpIHtcbiAgICBsb2coc2FuaXRpemUob3B0aW9ucywgJ2luZm8nKSk7XG4gIH1cblxuICBlcnJvcihvcHRpb25zKSB7XG4gICAgbG9nKHNhbml0aXplKG9wdGlvbnMsICdlcnJvcicpKTtcbiAgfVxuXG4gIHN1Y2Nlc3Mob3B0aW9ucykge1xuICAgIGxvZyhzYW5pdGl6ZShvcHRpb25zLCAnc3VjY2VzcycpKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
--------------------------------------------------------------------------------
/dist/amd/config.js:
--------------------------------------------------------------------------------
1 | define(['exports', './locale'], function (exports, _locale) {
2 | 'use strict';
3 |
4 | Object.defineProperty(exports, '__esModule', {
5 | value: true
6 | });
7 |
8 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
9 |
10 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
11 |
12 | var ConfigDefaults = function ConfigDefaults() {
13 | _classCallCheck(this, ConfigDefaults);
14 | };
15 |
16 | exports.ConfigDefaults = ConfigDefaults;
17 |
18 | ConfigDefaults._defaults = {
19 | locale: 'en-US',
20 | localeResources: 'service/resources/'
21 | };
22 |
23 | ConfigDefaults.defaults = function () {
24 | var defaults = {};
25 | Object.assign(defaults, ConfigDefaults._defaults);
26 | return defaults;
27 | };
28 |
29 | var Config = (function () {
30 | function Config(innerConfig) {
31 | _classCallCheck(this, Config);
32 |
33 | this.innerConfig = innerConfig;
34 | this.values = this.innerConfig ? {} : ConfigDefaults.defaults();
35 | this.changedHandlers = new Map();
36 | }
37 |
38 | _createClass(Config, [{
39 | key: 'getValue',
40 | value: function getValue(identifier) {
41 | if (this.values.hasOwnProperty(identifier) !== null && this.values[identifier] !== undefined) {
42 | return this.values[identifier];
43 | }
44 | if (this.innerConfig !== null) {
45 | return this.innerConfig.getValue(identifier);
46 | }
47 | throw Error('Config not found: ' + identifier);
48 | }
49 | }, {
50 | key: 'setValue',
51 | value: function setValue(identifier, value) {
52 | this.values[identifier] = value;
53 | return this;
54 | }
55 | }, {
56 | key: 'onLocaleChanged',
57 | value: function onLocaleChanged(callback) {
58 | var _this = this;
59 |
60 | if (this.innerConfig !== undefined) {
61 | return this.innerConfig.onLocaleChanged(callback);
62 | } else {
63 | var _ret = (function () {
64 | var id = ++ValidationConfig.uniqueListenerId;
65 | _this.changedHandlers.set(id, callback);
66 | return {
67 | v: function () {
68 | _this.changedHandlers['delete'](id);
69 | }
70 | };
71 | })();
72 |
73 | if (typeof _ret === 'object') return _ret.v;
74 | }
75 | }
76 | }, {
77 | key: 'getDependencies',
78 | value: function getDependencies() {
79 | return this.getValue('dependencies');
80 | }
81 | }, {
82 | key: 'setHttpService',
83 | value: function setHttpService(httpOpts) {
84 | Config.httpOpts = httpOpts;
85 | }
86 | }, {
87 | key: 'setLoggerService',
88 | value: function setLoggerService(loggerOpts) {
89 | Config.loggerOpts = loggerOpts;
90 | }
91 | }, {
92 | key: 'routerAuthStep',
93 | value: function routerAuthStep(opts) {
94 | Config.routerAuthStepOpts = opts;
95 | }
96 | }, {
97 | key: 'useLocale',
98 | value: function useLocale(localeIdentifier) {
99 | this.setValue('locale', localeIdentifier);
100 | var callbacks = Array.from(this.changedHandlers.values());
101 | for (var i = 0; i < callbacks.length; i++) {
102 | callbacks[i]();
103 | }
104 | return this;
105 | }
106 | }, {
107 | key: 'locale',
108 | value: function locale() {
109 | return _locale.Locale.Repository.load(this.getValue('locale'), this.getValue('localeResources'));
110 | }
111 | }]);
112 |
113 | return Config;
114 | })();
115 |
116 | exports.Config = Config;
117 |
118 | Config.uniqueListenerId = 0;
119 | });
120 | //# sourceMappingURL=data:application/json;base64,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Q0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3pDLG1CQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNoQjtBQUNELGVBQU8sSUFBSSxDQUFDO09BQ2I7OzthQUVLLGtCQUFHO0FBQ1AsZUFBTyxRQTVFSCxNQUFNLENBNEVJLFVBQVUsQ0FDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7T0FDcEU7OztXQTlEVSxNQUFNOzs7OztBQWlFbkIsUUFBTSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyIsImZpbGUiOiJjb25maWcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENyZWF0ZWQgYnkgbW9zaGVuc2t5IG9uIDYvMTcvMTUuXG4gKi9cbmltcG9ydCB7TG9jYWxlfSBmcm9tICcuL2xvY2FsZSc7XG5cbmV4cG9ydCBjbGFzcyBDb25maWdEZWZhdWx0cyB7XG59XG5cbkNvbmZpZ0RlZmF1bHRzLl9kZWZhdWx0cyA9IHtcbiAgbG9jYWxlOiAnZW4tVVMnLFxuICBsb2NhbGVSZXNvdXJjZXM6ICdzZXJ2aWNlL3Jlc291cmNlcy8nXG59O1xuXG5Db25maWdEZWZhdWx0cy5kZWZhdWx0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGRlZmF1bHRzID0ge307XG4gIE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIENvbmZpZ0RlZmF1bHRzLl9kZWZhdWx0cyk7XG4gIHJldHVybiBkZWZhdWx0cztcbn07XG5cbmV4cG9ydCBjbGFzcyBDb25maWcge1xuICBjb25zdHJ1Y3Rvcihpbm5lckNvbmZpZykge1xuICAgIHRoaXMuaW5uZXJDb25maWcgPSBpbm5lckNvbmZpZztcbiAgICB0aGlzLnZhbHVlcyA9IHRoaXMuaW5uZXJDb25maWcgPyB7fSA6IENvbmZpZ0RlZmF1bHRzLmRlZmF1bHRzKCk7XG4gICAgdGhpcy5jaGFuZ2VkSGFuZGxlcnMgPSBuZXcgTWFwKCk7XG4gIH1cblxuICBnZXRWYWx1ZShpZGVudGlmaWVyKSB7XG4gICAgaWYgKHRoaXMudmFsdWVzLmhhc093blByb3BlcnR5KGlkZW50aWZpZXIpICE9PSBudWxsICYmIHRoaXMudmFsdWVzW2lkZW50aWZpZXJdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlc1tpZGVudGlmaWVyXTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW5uZXJDb25maWcgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLmlubmVyQ29uZmlnLmdldFZhbHVlKGlkZW50aWZpZXIpO1xuICAgIH1cbiAgICB0aHJvdyBFcnJvcignQ29uZmlnIG5vdCBmb3VuZDogJyArIGlkZW50aWZpZXIpO1xuICB9XG5cbiAgc2V0VmFsdWUoaWRlbnRpZmllciwgdmFsdWUpIHtcbiAgICB0aGlzLnZhbHVlc1tpZGVudGlmaWVyXSA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzOyAvL2ZsdWVudCBBUElcbiAgfVxuXG4gIG9uTG9jYWxlQ2hhbmdlZChjYWxsYmFjaykge1xuICAgIGlmICh0aGlzLmlubmVyQ29uZmlnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmlubmVyQ29uZmlnLm9uTG9jYWxlQ2hhbmdlZChjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpZCA9ICsrVmFsaWRhdGlvbkNvbmZpZy51bmlxdWVMaXN0ZW5lcklkO1xuICAgICAgdGhpcy5jaGFuZ2VkSGFuZGxlcnMuc2V0KGlkLCBjYWxsYmFjayk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZWRIYW5kbGVycy5kZWxldGUoaWQpO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBnZXREZXBlbmRlbmNpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoJ2RlcGVuZGVuY2llcycpO1xuICB9XG5cbiAgc2V0SHR0cFNlcnZpY2UoaHR0cE9wdHMpIHtcbiAgICBDb25maWcuaHR0cE9wdHMgPSBodHRwT3B0cztcbiAgfVxuXG4gIHNldExvZ2dlclNlcnZpY2UobG9nZ2VyT3B0cykge1xuICAgIENvbmZpZy5sb2dnZXJPcHRzID0gbG9nZ2VyT3B0cztcbiAgfVxuXG4gIHJvdXRlckF1dGhTdGVwKG9wdHMpIHtcbiAgICBDb25maWcucm91dGVyQXV0aFN0ZXBPcHRzID0gb3B0cztcbiAgfVxuXG4gIHVzZUxvY2FsZShsb2NhbGVJZGVudGlmaWVyKSB7XG4gICAgdGhpcy5zZXRWYWx1ZSgnbG9jYWxlJywgbG9jYWxlSWRlbnRpZmllcik7XG4gICAgdmFyIGNhbGxiYWNrcyA9IEFycmF5LmZyb20odGhpcy5jaGFuZ2VkSGFuZGxlcnMudmFsdWVzKCkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjYWxsYmFja3NbaV0oKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBsb2NhbGUoKSB7XG4gICAgcmV0dXJuIExvY2FsZS5SZXBvc2l0b3J5XG4gICAgICAubG9hZCh0aGlzLmdldFZhbHVlKCdsb2NhbGUnKSwgdGhpcy5nZXRWYWx1ZSgnbG9jYWxlUmVzb3VyY2VzJykpO1xuICB9XG59XG5cbkNvbmZpZy51bmlxdWVMaXN0ZW5lcklkID0gMDtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
--------------------------------------------------------------------------------
/src/http.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by moshensky on 6/16/15.
3 | */
4 | import {HttpClient} from 'aurelia-http-client';
5 | import $ from 'jquery';
6 | import {inject} from 'aurelia-dependency-injection';
7 | import {Session} from './session';
8 | import {Logger} from './logger';
9 | import {Locale} from './locale';
10 | import {Config} from './config';
11 | import {LoadingMask} from './loading-mask/loading-mask';
12 |
13 | @inject(Session, Logger, LoadingMask)
14 | export class Http {
15 | constructor(session, logger, loadingMask) {
16 | this.session = session;
17 | this.logger = logger;
18 | this.loadingMask = loadingMask;
19 | this.authHttp = undefined;
20 | this.locale = Locale.Repository.default;
21 |
22 | this.requestsCount = 0;
23 | this.host = Config.httpOpts.serviceHost;
24 | this.origin = this.host + Config.httpOpts.serviceApiPrefix;
25 | this.authOrigin = Config.httpOpts.authHost;
26 | this.hosts = Config.httpOpts.hosts || {};
27 | this.loadingMaskDelay = Config.httpOpts.loadingMaskDelay || 1000;
28 | this.requestTimeout = Config.httpOpts.requestTimeout;
29 |
30 | if (this.session.userRemembered()) {
31 | this.initAuthHttp(this.session.rememberedToken());
32 | }
33 | }
34 |
35 | _showLoadingMask() {
36 | this.requestsCount += 1;
37 | if (this.requestsCount === 1) {
38 | if (this.loadingMaskDelay > 0) {
39 | this._queryTimeout = window.setTimeout(() => {
40 | this.loadingMask.show()
41 | }, this.loadingMaskDelay);
42 | } else {
43 | this.loadingMask.show();
44 | }
45 | }
46 | }
47 |
48 | _hideLoadingMask() {
49 | this.requestsCount -= 1;
50 | if (this.requestsCount <= 0) {
51 | if (this._queryTimeout) {
52 | window.clearTimeout(this._queryTimeout);
53 | }
54 |
55 | this.loadingMask.hide();
56 | this.requestsCount = 0;
57 | }
58 | }
59 |
60 | get(url, data) {
61 | this._showLoadingMask();
62 | let urlWithProps = url;
63 | if (data !== undefined) {
64 | let props = Object.keys(data).map(function (key) {
65 | let d = data[key];
66 | if (Array.isArray(d)) {
67 | return d.map(value => {
68 | return '' + key + '=' + value
69 | }).join('&');
70 | } else {
71 | return '' + key + '=' + data[key];
72 | }
73 | }).join('&');
74 |
75 | urlWithProps += '?' + props;
76 | }
77 | const promise = this.authHttp.get(urlWithProps).then(response => {
78 | this._hideLoadingMask();
79 | return JSON.parse(response.response)
80 | });
81 | promise.catch(this.errorHandler.bind(this));
82 | return promise;
83 | }
84 |
85 | post(url, content = {}) {
86 | this._showLoadingMask();
87 | const promise = this.authHttp.post(url, content).then(response => {
88 | this._hideLoadingMask();
89 | if (response.response !== "") {
90 | return JSON.parse(response.response);
91 | }
92 | });
93 | promise.catch(this.errorHandler.bind(this));
94 |
95 | return promise;
96 | }
97 |
98 |
99 | put(url, content = {}) {
100 | this._showLoadingMask();
101 | const promise = this.authHttp.put(url, content).then(response => this._hideLoadingMask());
102 | promise.catch(this.errorHandler.bind(this));
103 | return promise;
104 | }
105 |
106 | delete(url) {
107 | const promise = this.authHttp.delete(url).then(response => this._hideLoadingMask());
108 | promise.catch(this.errorHandler.bind(this));
109 | return promise;
110 | }
111 |
112 | multipartFormPost(url, data) {
113 | var requestUrl = this.origin + url;
114 | return this.multipartForm(requestUrl, data, 'POST');
115 | }
116 |
117 | multipartFormPut(url, data) {
118 | var requestUrl = this.origin + url;
119 | return this.multipartForm(requestUrl, data, 'PUT');
120 | }
121 |
122 | multipartForm(url, data, method) {
123 | this._showLoadingMask();
124 | var self = this;
125 | var req = $.ajax({
126 | url: url,
127 | data: data,
128 | processData: false,
129 | contentType: false,
130 | type: method,
131 | headers: {
132 | 'Authorization': 'Bearer ' + this.token
133 | }
134 | });
135 |
136 | return new Promise(function (resolve, reject) {
137 | req.done(resolve);
138 | req.fail(reject);
139 | self._hideLoadingMask();
140 | }).catch(this.errorHandler.bind(this));
141 | }
142 |
143 | postDownloadFile(url, data) {
144 | return this.downloadFile(url, 'POST', data);
145 | }
146 |
147 | getDownloadFile(url) {
148 | return this.downloadFile(url, 'GET');
149 | }
150 |
151 | downloadFile(url, method, data) {
152 | this._showLoadingMask();
153 | const urlAddress = this.origin + url;
154 | const authHeaderValue = `Bearer ${this.token}`;
155 | const promise = new Promise((resolve, reject) => {
156 | const xmlhttp = new XMLHttpRequest();
157 | xmlhttp.open(method, urlAddress, true);
158 | xmlhttp.timeout = this.requestTimeout;
159 | xmlhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
160 | xmlhttp.setRequestHeader('Authorization', authHeaderValue);
161 | xmlhttp.responseType = "blob";
162 |
163 | xmlhttp.onload = function (oEvent) {
164 | if (this.status !== 200) {
165 | reject({statusCode: this.status});
166 | return;
167 | }
168 |
169 | const blob = xmlhttp.response;
170 | const windowUrl = window.URL || window.webkitURL;
171 | const url = windowUrl.createObjectURL(blob);
172 | const filename = this.getResponseHeader('Content-Disposition').match(/^attachment; filename=(.+)/)[1];
173 |
174 | const anchor = $('');
175 | anchor.prop('href', url);
176 | anchor.prop('download', filename);
177 | $('body').append(anchor);
178 | anchor.get(0).click();
179 | windowUrl.revokeObjectURL(url);
180 | anchor.remove();
181 | };
182 |
183 | xmlhttp.ontimeout = function () {
184 | reject({timeout: true})
185 | };
186 |
187 | xmlhttp.addEventListener("error", () => {
188 | reject();
189 | });
190 | xmlhttp.addEventListener("load", () => {
191 | resolve();
192 | this._hideLoadingMask();
193 | });
194 | if (method === 'GET') {
195 | xmlhttp.send();
196 | } else if (method === 'POST') {
197 | xmlhttp.send(JSON.stringify(data));
198 | } else {
199 | throw new Error("Unsuported method call!");
200 | }
201 | });
202 |
203 | promise.catch(this.errorHandler.bind(this));
204 | return promise;
205 | }
206 |
207 | loginBasicAuth(email, pass) {
208 | let client = new HttpClient();
209 | let encodedData = window.btoa(email + ':' + pass);
210 | let promise = client.createRequest('token')
211 | .asGet()
212 | .withBaseUrl(this.authOrigin)
213 | .withHeader('Authorization', 'Basic ' + encodedData)
214 | .send();
215 | promise.then(this.loginHandle.bind(this))
216 | promise.catch(this.errorHandler.bind(this));
217 |
218 | return promise;
219 | }
220 |
221 | loginResourceOwner(email, pass, clientId) {
222 | this._showLoadingMask();
223 | let data = {
224 | grant_type: 'password',
225 | client_id: clientId,
226 | username: email,
227 | password: pass
228 | };
229 |
230 | let client = new HttpClient()
231 | .configure(x => {
232 | x.withBaseUrl(this.authOrigin);
233 | x.withHeader("Content-Type", "application/x-www-form-urlencoded");
234 | });
235 |
236 | const promise = client.post('token', $.param(data));
237 | promise.then(this.loginHandle.bind(this))
238 | promise.catch(this.errorHandler.bind(this));
239 |
240 | return promise;
241 | }
242 |
243 | initAuthHttp(token) {
244 | this.token = token;
245 | this.authHttp = new HttpClient().configure(x => {
246 | x.withBaseUrl(this.origin);
247 | x.withHeader('Authorization', `Bearer ${this.token}`);
248 | x.withHeader("Content-Type", "application/json");
249 | });
250 | }
251 |
252 | getAuthHttpFor(hostName) {
253 | let authHttp = new HttpClient().configure(x => {
254 | x.withBaseUrl(this.hosts[hostName]);
255 | x.withHeader('Authorization', `Bearer ${this.token}`);
256 | x.withHeader("Content-Type", "application/json");
257 | });
258 |
259 | return authHttp;
260 | }
261 |
262 | _convertToArray(value) {
263 | let result = value || [];
264 | if (typeof result === 'string') {
265 | return result.split(',');
266 | }
267 |
268 | return result;
269 | }
270 |
271 | loginHandle(response) {
272 | this._hideLoadingMask();
273 | const data = JSON.parse(response.response);
274 | let token = data.access_token;
275 | this.initAuthHttp(token);
276 |
277 | let claims = data.userClaims || [];
278 | if (typeof claims === 'string') {
279 | claims = JSON.parse(claims);
280 | }
281 |
282 | this.session.setUser({
283 | token: token,
284 | userName: data.userName || 'please give me a name!',
285 | userClaims: claims,
286 | userRoles: this._convertToArray(data.userRoles),
287 | userAccessRights: this._convertToArray(data.userAccessRights)
288 | });
289 | }
290 |
291 | // TODO: use as in aurelia-validation
292 | errorHandler(response) {
293 | this._hideLoadingMask();
294 | if (response.statusCode === 401) {
295 | this.logger.warn(this.locale.translate('sessionTimedOut'));
296 | } else if (response.statusCode === 403) {
297 | this.logger.warn(this.locale.translate('accessDenied'));
298 | } else if (response.statusCode === 500) {
299 | this.logger.error(this.locale.translate('internalServerError'));
300 | } else if (response.timeout === true) {
301 | this.logger.error(this.locale.translate('requestTimeout'));
302 | } else {
303 | this.logger.error(this.locale.translate('errorHappend'));
304 | }
305 | }
306 | }
307 |
--------------------------------------------------------------------------------
/dist/es6/http.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by moshensky on 6/16/15.
3 | */
4 | import {HttpClient} from 'aurelia-http-client';
5 | import $ from 'jquery';
6 | import {inject} from 'aurelia-dependency-injection';
7 | import {Session} from './session';
8 | import {Logger} from './logger';
9 | import {Locale} from './locale';
10 | import {Config} from './config';
11 | import {LoadingMask} from './loading-mask/loading-mask';
12 |
13 | @inject(Session, Logger, LoadingMask)
14 | export class Http {
15 | constructor(session, logger, loadingMask) {
16 | this.session = session;
17 | this.logger = logger;
18 | this.loadingMask = loadingMask;
19 | this.authHttp = undefined;
20 | this.locale = Locale.Repository.default;
21 |
22 | this.requestsCount = 0;
23 | this.host = Config.httpOpts.serviceHost;
24 | this.origin = this.host + Config.httpOpts.serviceApiPrefix;
25 | this.authOrigin = Config.httpOpts.authHost;
26 | this.hosts = Config.httpOpts.hosts || {};
27 | this.loadingMaskDelay = Config.httpOpts.loadingMaskDelay || 1000;
28 | this.requestTimeout = Config.httpOpts.requestTimeout;
29 |
30 | if (this.session.userRemembered()) {
31 | this.initAuthHttp(this.session.rememberedToken());
32 | }
33 | }
34 |
35 | _showLoadingMask() {
36 | this.requestsCount += 1;
37 | if (this.requestsCount === 1) {
38 | if (this.loadingMaskDelay > 0) {
39 | this._queryTimeout = window.setTimeout(() => {
40 | this.loadingMask.show()
41 | }, this.loadingMaskDelay);
42 | } else {
43 | this.loadingMask.show();
44 | }
45 | }
46 | }
47 |
48 | _hideLoadingMask() {
49 | this.requestsCount -= 1;
50 | if (this.requestsCount <= 0) {
51 | if (this._queryTimeout) {
52 | window.clearTimeout(this._queryTimeout);
53 | }
54 |
55 | this.loadingMask.hide();
56 | this.requestsCount = 0;
57 | }
58 | }
59 |
60 | get(url, data) {
61 | this._showLoadingMask();
62 | let urlWithProps = url;
63 | if (data !== undefined) {
64 | let props = Object.keys(data).map(function (key) {
65 | let d = data[key];
66 | if (Array.isArray(d)) {
67 | return d.map(value => {
68 | return '' + key + '=' + value
69 | }).join('&');
70 | } else {
71 | return '' + key + '=' + data[key];
72 | }
73 | }).join('&');
74 |
75 | urlWithProps += '?' + props;
76 | }
77 | const promise = this.authHttp.get(urlWithProps).then(response => {
78 | this._hideLoadingMask();
79 | return JSON.parse(response.response)
80 | });
81 | promise.catch(this.errorHandler.bind(this));
82 | return promise;
83 | }
84 |
85 | post(url, content = {}) {
86 | this._showLoadingMask();
87 | const promise = this.authHttp.post(url, content).then(response => {
88 | this._hideLoadingMask();
89 | if (response.response !== "") {
90 | return JSON.parse(response.response);
91 | }
92 | });
93 | promise.catch(this.errorHandler.bind(this));
94 |
95 | return promise;
96 | }
97 |
98 |
99 | put(url, content = {}) {
100 | this._showLoadingMask();
101 | const promise = this.authHttp.put(url, content).then(response => this._hideLoadingMask());
102 | promise.catch(this.errorHandler.bind(this));
103 | return promise;
104 | }
105 |
106 | delete(url) {
107 | const promise = this.authHttp.delete(url).then(response => this._hideLoadingMask());
108 | promise.catch(this.errorHandler.bind(this));
109 | return promise;
110 | }
111 |
112 | multipartFormPost(url, data) {
113 | var requestUrl = this.origin + url;
114 | return this.multipartForm(requestUrl, data, 'POST');
115 | }
116 |
117 | multipartFormPut(url, data) {
118 | var requestUrl = this.origin + url;
119 | return this.multipartForm(requestUrl, data, 'PUT');
120 | }
121 |
122 | multipartForm(url, data, method) {
123 | this._showLoadingMask();
124 | var self = this;
125 | var req = $.ajax({
126 | url: url,
127 | data: data,
128 | processData: false,
129 | contentType: false,
130 | type: method,
131 | headers: {
132 | 'Authorization': 'Bearer ' + this.token
133 | }
134 | });
135 |
136 | return new Promise(function (resolve, reject) {
137 | req.done(resolve);
138 | req.fail(reject);
139 | self._hideLoadingMask();
140 | }).catch(this.errorHandler.bind(this));
141 | }
142 |
143 | postDownloadFile(url, data) {
144 | return this.downloadFile(url, 'POST', data);
145 | }
146 |
147 | getDownloadFile(url) {
148 | return this.downloadFile(url, 'GET');
149 | }
150 |
151 | downloadFile(url, method, data) {
152 | this._showLoadingMask();
153 | const urlAddress = this.origin + url;
154 | const authHeaderValue = `Bearer ${this.token}`;
155 | const promise = new Promise((resolve, reject) => {
156 | const xmlhttp = new XMLHttpRequest();
157 | xmlhttp.open(method, urlAddress, true);
158 | xmlhttp.timeout = this.requestTimeout;
159 | xmlhttp.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
160 | xmlhttp.setRequestHeader('Authorization', authHeaderValue);
161 | xmlhttp.responseType = "blob";
162 |
163 | xmlhttp.onload = function (oEvent) {
164 | if (this.status !== 200) {
165 | reject({statusCode: this.status});
166 | return;
167 | }
168 |
169 | const blob = xmlhttp.response;
170 | const windowUrl = window.URL || window.webkitURL;
171 | const url = windowUrl.createObjectURL(blob);
172 | const filename = this.getResponseHeader('Content-Disposition').match(/^attachment; filename=(.+)/)[1];
173 |
174 | const anchor = $('');
175 | anchor.prop('href', url);
176 | anchor.prop('download', filename);
177 | $('body').append(anchor);
178 | anchor.get(0).click();
179 | windowUrl.revokeObjectURL(url);
180 | anchor.remove();
181 | };
182 |
183 | xmlhttp.ontimeout = function () {
184 | reject({timeout: true})
185 | };
186 |
187 | xmlhttp.addEventListener("error", () => {
188 | reject();
189 | });
190 | xmlhttp.addEventListener("load", () => {
191 | resolve();
192 | this._hideLoadingMask();
193 | });
194 | if (method === 'GET') {
195 | xmlhttp.send();
196 | } else if (method === 'POST') {
197 | xmlhttp.send(JSON.stringify(data));
198 | } else {
199 | throw new Error("Unsuported method call!");
200 | }
201 | });
202 |
203 | promise.catch(this.errorHandler.bind(this));
204 | return promise;
205 | }
206 |
207 | loginBasicAuth(email, pass) {
208 | let client = new HttpClient();
209 | let encodedData = window.btoa(email + ':' + pass);
210 | let promise = client.createRequest('token')
211 | .asGet()
212 | .withBaseUrl(this.authOrigin)
213 | .withHeader('Authorization', 'Basic ' + encodedData)
214 | .send();
215 | promise.then(this.loginHandle.bind(this))
216 | promise.catch(this.errorHandler.bind(this));
217 |
218 | return promise;
219 | }
220 |
221 | loginResourceOwner(email, pass, clientId) {
222 | this._showLoadingMask();
223 | let data = {
224 | grant_type: 'password',
225 | client_id: clientId,
226 | username: email,
227 | password: pass
228 | };
229 |
230 | let client = new HttpClient()
231 | .configure(x => {
232 | x.withBaseUrl(this.authOrigin);
233 | x.withHeader("Content-Type", "application/x-www-form-urlencoded");
234 | });
235 |
236 | const promise = client.post('token', $.param(data));
237 | promise.then(this.loginHandle.bind(this))
238 | promise.catch(this.errorHandler.bind(this));
239 |
240 | return promise;
241 | }
242 |
243 | initAuthHttp(token) {
244 | this.token = token;
245 | this.authHttp = new HttpClient().configure(x => {
246 | x.withBaseUrl(this.origin);
247 | x.withHeader('Authorization', `Bearer ${this.token}`);
248 | x.withHeader("Content-Type", "application/json");
249 | });
250 | }
251 |
252 | getAuthHttpFor(hostName) {
253 | let authHttp = new HttpClient().configure(x => {
254 | x.withBaseUrl(this.hosts[hostName]);
255 | x.withHeader('Authorization', `Bearer ${this.token}`);
256 | x.withHeader("Content-Type", "application/json");
257 | });
258 |
259 | return authHttp;
260 | }
261 |
262 | _convertToArray(value) {
263 | let result = value || [];
264 | if (typeof result === 'string') {
265 | return result.split(',');
266 | }
267 |
268 | return result;
269 | }
270 |
271 | loginHandle(response) {
272 | this._hideLoadingMask();
273 | const data = JSON.parse(response.response);
274 | let token = data.access_token;
275 | this.initAuthHttp(token);
276 |
277 | let claims = data.userClaims || [];
278 | if (typeof claims === 'string') {
279 | claims = JSON.parse(claims);
280 | }
281 |
282 | this.session.setUser({
283 | token: token,
284 | userName: data.userName || 'please give me a name!',
285 | userClaims: claims,
286 | userRoles: this._convertToArray(data.userRoles),
287 | userAccessRights: this._convertToArray(data.userAccessRights)
288 | });
289 | }
290 |
291 | // TODO: use as in aurelia-validation
292 | errorHandler(response) {
293 | this._hideLoadingMask();
294 | if (response.statusCode === 401) {
295 | this.logger.warn(this.locale.translate('sessionTimedOut'));
296 | } else if (response.statusCode === 403) {
297 | this.logger.warn(this.locale.translate('accessDenied'));
298 | } else if (response.statusCode === 500) {
299 | this.logger.error(this.locale.translate('internalServerError'));
300 | } else if (response.timeout === true) {
301 | this.logger.error(this.locale.translate('requestTimeout'));
302 | } else {
303 | this.logger.error(this.locale.translate('errorHappend'));
304 | }
305 | }
306 | }
307 |
--------------------------------------------------------------------------------
/dist/amd/locale.js:
--------------------------------------------------------------------------------
1 | define(['exports'], function (exports) {
2 | 'use strict';
3 |
4 | Object.defineProperty(exports, '__esModule', {
5 | value: true
6 | });
7 |
8 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
9 |
10 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
11 |
12 | var Locale = (function () {
13 | function Locale(defaults, data) {
14 | _classCallCheck(this, Locale);
15 |
16 | this.defaults = defaults;
17 | this.currentLocale = data;
18 | }
19 |
20 | _createClass(Locale, [{
21 | key: 'getValueFor',
22 | value: function getValueFor(identifier, category) {
23 | if (this.currentLocale && this.currentLocale[category]) {
24 | var currentLocaleSetting = this.currentLocale[category][identifier];
25 | if (currentLocaleSetting !== undefined && currentLocaleSetting !== null) return currentLocaleSetting;
26 | }
27 | if (this.defaults[category]) {
28 | var defaultSetting = this.defaults[category][identifier];
29 | if (defaultSetting !== undefined && defaultSetting !== null) return defaultSetting;
30 | }
31 | throw 'validation: I18N: Could not find: ' + identifier + ' in category: ' + category;
32 | }
33 | }, {
34 | key: 'setting',
35 | value: function setting(settingIdentifier) {
36 | return this.getValueFor(settingIdentifier, 'settings');
37 | }
38 | }, {
39 | key: 'translate',
40 | value: function translate(translationIdentifier, newValue, threshold) {
41 | var translation = this.getValueFor(translationIdentifier, 'messages');
42 | if (typeof translation === 'function') {
43 | return translation(newValue, threshold);
44 | }
45 | if (typeof translation === 'string') {
46 | return translation;
47 | }
48 | throw 'Validation message for ' + translationIdentifier + 'was in an unsupported format';
49 | }
50 | }]);
51 |
52 | return Locale;
53 | })();
54 |
55 | exports.Locale = Locale;
56 |
57 | var LocaleRepository = (function () {
58 | function LocaleRepository() {
59 | _classCallCheck(this, LocaleRepository);
60 |
61 | this['default'] = null;
62 | this.instances = new Map();
63 | this.defaults = {
64 | settings: {},
65 | messages: {}
66 | };
67 | }
68 |
69 | _createClass(LocaleRepository, [{
70 | key: 'load',
71 | value: function load(localeIdentifier, basePath) {
72 | var _this = this;
73 |
74 | if (!basePath) basePath = 'aurelia-custom-app-common-files/resources/';
75 |
76 | return new Promise(function (resolve, reject) {
77 | if (_this.instances.has(localeIdentifier)) {
78 | var locale = _this.instances.get(localeIdentifier);
79 | resolve(locale);
80 | } else {
81 | System['import'](basePath + localeIdentifier).then(function (resource) {
82 | var locale = _this.addLocale(localeIdentifier, resource.data);
83 | resolve(locale);
84 | });
85 | }
86 | });
87 | }
88 | }, {
89 | key: 'addLocale',
90 | value: function addLocale(localeIdentifier, data) {
91 | var instance = new Locale(this.defaults, data);
92 | this.instances.set(localeIdentifier, instance);
93 | if (this['default'] === null) this['default'] = instance;
94 | return instance;
95 | }
96 | }]);
97 |
98 | return LocaleRepository;
99 | })();
100 |
101 | Locale.Repository = new LocaleRepository();
102 | });
103 | //# sourceMappingURL=data:application/json;base64,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LENBQUMsQ0FBQztBQUM3RCxxQkFBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2pCLENBQUMsQ0FBQztXQUNKO1NBQ0YsQ0FBQyxDQUFDO09BQ0o7OzthQUVRLG1CQUFDLGdCQUFnQixFQUFFLElBQUksRUFDaEM7QUFDRSxZQUFJLFFBQVEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9DLFlBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQy9DLFlBQUcsSUFBSSxXQUFRLEtBQUssSUFBSSxFQUN0QixJQUFJLFdBQVEsR0FBRyxRQUFRLENBQUM7QUFDMUIsZUFBTyxRQUFRLENBQUM7T0FDakI7OztXQWpDRyxnQkFBZ0I7OztBQW9DdEIsUUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUMiLCJmaWxlIjoibG9jYWxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVkIGJ5IG1vc2hlbnNreSBvbiA2LzE3LzE1LlxuICovXG5leHBvcnQgY2xhc3MgTG9jYWxle1xuICBjb25zdHJ1Y3RvcihkZWZhdWx0cywgZGF0YSlcbiAge1xuICAgIHRoaXMuZGVmYXVsdHMgPSBkZWZhdWx0cztcbiAgICB0aGlzLmN1cnJlbnRMb2NhbGUgPSBkYXRhO1xuICB9XG5cbiAgZ2V0VmFsdWVGb3IoaWRlbnRpZmllciwgY2F0ZWdvcnkpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50TG9jYWxlICYmIHRoaXMuY3VycmVudExvY2FsZVtjYXRlZ29yeV0pIHtcbiAgICAgIHZhciBjdXJyZW50TG9jYWxlU2V0dGluZyA9IHRoaXMuY3VycmVudExvY2FsZVtjYXRlZ29yeV1baWRlbnRpZmllcl07XG4gICAgICBpZiAoY3VycmVudExvY2FsZVNldHRpbmcgIT09IHVuZGVmaW5lZCAmJiBjdXJyZW50TG9jYWxlU2V0dGluZyAhPT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRMb2NhbGVTZXR0aW5nO1xuICAgIH1cbiAgICBpZiAodGhpcy5kZWZhdWx0c1tjYXRlZ29yeV0pIHtcbiAgICAgIHZhciBkZWZhdWx0U2V0dGluZyA9IHRoaXMuZGVmYXVsdHNbY2F0ZWdvcnldW2lkZW50aWZpZXJdO1xuICAgICAgaWYgKGRlZmF1bHRTZXR0aW5nICE9PSB1bmRlZmluZWQgJiYgZGVmYXVsdFNldHRpbmcgIT09IG51bGwpXG4gICAgICAgIHJldHVybiBkZWZhdWx0U2V0dGluZztcbiAgICB9XG4gICAgdGhyb3cgJ3ZhbGlkYXRpb246IEkxOE46IENvdWxkIG5vdCBmaW5kOiAnICsgaWRlbnRpZmllciArICcgaW4gY2F0ZWdvcnk6ICcgKyBjYXRlZ29yeTtcbiAgfVxuXG4gIHNldHRpbmcoc2V0dGluZ0lkZW50aWZpZXIpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZUZvcihzZXR0aW5nSWRlbnRpZmllciwgJ3NldHRpbmdzJyk7XG4gIH1cblxuICB0cmFuc2xhdGUodHJhbnNsYXRpb25JZGVudGlmaWVyLCBuZXdWYWx1ZSwgdGhyZXNob2xkKSB7XG4gICAgdmFyIHRyYW5zbGF0aW9uID0gdGhpcy5nZXRWYWx1ZUZvcih0cmFuc2xhdGlvbklkZW50aWZpZXIsICdtZXNzYWdlcycpO1xuICAgIGlmICh0eXBlb2YgdHJhbnNsYXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0cmFuc2xhdGlvbihuZXdWYWx1ZSwgdGhyZXNob2xkKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0cmFuc2xhdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB0cmFuc2xhdGlvbjtcbiAgICB9XG4gICAgdGhyb3cgJ1ZhbGlkYXRpb24gbWVzc2FnZSBmb3IgJyArIHRyYW5zbGF0aW9uSWRlbnRpZmllciArICd3YXMgaW4gYW4gdW5zdXBwb3J0ZWQgZm9ybWF0JztcbiAgfVxufVxuXG5jbGFzcyBMb2NhbGVSZXBvc2l0b3J5ICB7XG4gIGNvbnN0cnVjdG9yKCl7XG4gICAgdGhpcy5kZWZhdWx0ID0gbnVsbDtcbiAgICB0aGlzLmluc3RhbmNlcyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLmRlZmF1bHRzID0ge1xuICAgICAgc2V0dGluZ3M6IHt9LFxuICAgICAgbWVzc2FnZXM6IHt9XG4gICAgfTtcbiAgfVxuXG4gIGxvYWQobG9jYWxlSWRlbnRpZmllciwgYmFzZVBhdGgpIHtcbiAgICBpZighYmFzZVBhdGgpIGJhc2VQYXRoID0gJ2F1cmVsaWEtY3VzdG9tLWFwcC1jb21tb24tZmlsZXMvcmVzb3VyY2VzLyc7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYodGhpcy5pbnN0YW5jZXMuaGFzKGxvY2FsZUlkZW50aWZpZXIpKSB7XG4gICAgICAgIGxldCBsb2NhbGUgPSB0aGlzLmluc3RhbmNlcy5nZXQobG9jYWxlSWRlbnRpZmllcik7XG4gICAgICAgIHJlc29sdmUobG9jYWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFN5c3RlbS5pbXBvcnQoYmFzZVBhdGggKyBsb2NhbGVJZGVudGlmaWVyKS50aGVuKChyZXNvdXJjZSkgPT4ge1xuICAgICAgICAgIGxldCBsb2NhbGUgPSB0aGlzLmFkZExvY2FsZShsb2NhbGVJZGVudGlmaWVyLCByZXNvdXJjZS5kYXRhKTtcbiAgICAgICAgICByZXNvbHZlKGxvY2FsZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYWRkTG9jYWxlKGxvY2FsZUlkZW50aWZpZXIsIGRhdGEpXG4gIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBuZXcgTG9jYWxlKHRoaXMuZGVmYXVsdHMsIGRhdGEpO1xuICAgIHRoaXMuaW5zdGFuY2VzLnNldChsb2NhbGVJZGVudGlmaWVyLCBpbnN0YW5jZSk7XG4gICAgaWYodGhpcy5kZWZhdWx0ID09PSBudWxsKVxuICAgICAgdGhpcy5kZWZhdWx0ID0gaW5zdGFuY2U7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG59XG5cbkxvY2FsZS5SZXBvc2l0b3J5ID0gbmV3IExvY2FsZVJlcG9zaXRvcnkoKTtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
--------------------------------------------------------------------------------
/dist/system/config.js:
--------------------------------------------------------------------------------
1 | System.register(['./locale'], function (_export) {
2 | 'use strict';
3 |
4 | var Locale, ConfigDefaults, Config;
5 |
6 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
7 |
8 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
9 |
10 | return {
11 | setters: [function (_locale) {
12 | Locale = _locale.Locale;
13 | }],
14 | execute: function () {
15 | ConfigDefaults = function ConfigDefaults() {
16 | _classCallCheck(this, ConfigDefaults);
17 | };
18 |
19 | _export('ConfigDefaults', ConfigDefaults);
20 |
21 | ConfigDefaults._defaults = {
22 | locale: 'en-US',
23 | localeResources: 'service/resources/'
24 | };
25 |
26 | ConfigDefaults.defaults = function () {
27 | var defaults = {};
28 | Object.assign(defaults, ConfigDefaults._defaults);
29 | return defaults;
30 | };
31 |
32 | Config = (function () {
33 | function Config(innerConfig) {
34 | _classCallCheck(this, Config);
35 |
36 | this.innerConfig = innerConfig;
37 | this.values = this.innerConfig ? {} : ConfigDefaults.defaults();
38 | this.changedHandlers = new Map();
39 | }
40 |
41 | _createClass(Config, [{
42 | key: 'getValue',
43 | value: function getValue(identifier) {
44 | if (this.values.hasOwnProperty(identifier) !== null && this.values[identifier] !== undefined) {
45 | return this.values[identifier];
46 | }
47 | if (this.innerConfig !== null) {
48 | return this.innerConfig.getValue(identifier);
49 | }
50 | throw Error('Config not found: ' + identifier);
51 | }
52 | }, {
53 | key: 'setValue',
54 | value: function setValue(identifier, value) {
55 | this.values[identifier] = value;
56 | return this;
57 | }
58 | }, {
59 | key: 'onLocaleChanged',
60 | value: function onLocaleChanged(callback) {
61 | var _this = this;
62 |
63 | if (this.innerConfig !== undefined) {
64 | return this.innerConfig.onLocaleChanged(callback);
65 | } else {
66 | var _ret = (function () {
67 | var id = ++ValidationConfig.uniqueListenerId;
68 | _this.changedHandlers.set(id, callback);
69 | return {
70 | v: function () {
71 | _this.changedHandlers['delete'](id);
72 | }
73 | };
74 | })();
75 |
76 | if (typeof _ret === 'object') return _ret.v;
77 | }
78 | }
79 | }, {
80 | key: 'getDependencies',
81 | value: function getDependencies() {
82 | return this.getValue('dependencies');
83 | }
84 | }, {
85 | key: 'setHttpService',
86 | value: function setHttpService(httpOpts) {
87 | Config.httpOpts = httpOpts;
88 | }
89 | }, {
90 | key: 'setLoggerService',
91 | value: function setLoggerService(loggerOpts) {
92 | Config.loggerOpts = loggerOpts;
93 | }
94 | }, {
95 | key: 'routerAuthStep',
96 | value: function routerAuthStep(opts) {
97 | Config.routerAuthStepOpts = opts;
98 | }
99 | }, {
100 | key: 'useLocale',
101 | value: function useLocale(localeIdentifier) {
102 | this.setValue('locale', localeIdentifier);
103 | var callbacks = Array.from(this.changedHandlers.values());
104 | for (var i = 0; i < callbacks.length; i++) {
105 | callbacks[i]();
106 | }
107 | return this;
108 | }
109 | }, {
110 | key: 'locale',
111 | value: function locale() {
112 | return Locale.Repository.load(this.getValue('locale'), this.getValue('localeResources'));
113 | }
114 | }]);
115 |
116 | return Config;
117 | })();
118 |
119 | _export('Config', Config);
120 |
121 | Config.uniqueListenerId = 0;
122 | }
123 | };
124 | });
125 | //# sourceMappingURL=data:application/json;base64,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LGVBQWUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQzFELGlCQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6Qyx1QkFBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDaEI7QUFDRCxtQkFBTyxJQUFJLENBQUM7V0FDYjs7O2lCQUVLLGtCQUFHO0FBQ1AsbUJBQU8sTUFBTSxDQUFDLFVBQVUsQ0FDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7V0FDcEU7OztlQTlEVSxNQUFNOzs7OztBQWlFbkIsWUFBTSxDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyIsImZpbGUiOiJjb25maWcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENyZWF0ZWQgYnkgbW9zaGVuc2t5IG9uIDYvMTcvMTUuXG4gKi9cbmltcG9ydCB7TG9jYWxlfSBmcm9tICcuL2xvY2FsZSc7XG5cbmV4cG9ydCBjbGFzcyBDb25maWdEZWZhdWx0cyB7XG59XG5cbkNvbmZpZ0RlZmF1bHRzLl9kZWZhdWx0cyA9IHtcbiAgbG9jYWxlOiAnZW4tVVMnLFxuICBsb2NhbGVSZXNvdXJjZXM6ICdzZXJ2aWNlL3Jlc291cmNlcy8nXG59O1xuXG5Db25maWdEZWZhdWx0cy5kZWZhdWx0cyA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIGRlZmF1bHRzID0ge307XG4gIE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIENvbmZpZ0RlZmF1bHRzLl9kZWZhdWx0cyk7XG4gIHJldHVybiBkZWZhdWx0cztcbn07XG5cbmV4cG9ydCBjbGFzcyBDb25maWcge1xuICBjb25zdHJ1Y3Rvcihpbm5lckNvbmZpZykge1xuICAgIHRoaXMuaW5uZXJDb25maWcgPSBpbm5lckNvbmZpZztcbiAgICB0aGlzLnZhbHVlcyA9IHRoaXMuaW5uZXJDb25maWcgPyB7fSA6IENvbmZpZ0RlZmF1bHRzLmRlZmF1bHRzKCk7XG4gICAgdGhpcy5jaGFuZ2VkSGFuZGxlcnMgPSBuZXcgTWFwKCk7XG4gIH1cblxuICBnZXRWYWx1ZShpZGVudGlmaWVyKSB7XG4gICAgaWYgKHRoaXMudmFsdWVzLmhhc093blByb3BlcnR5KGlkZW50aWZpZXIpICE9PSBudWxsICYmIHRoaXMudmFsdWVzW2lkZW50aWZpZXJdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnZhbHVlc1tpZGVudGlmaWVyXTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW5uZXJDb25maWcgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLmlubmVyQ29uZmlnLmdldFZhbHVlKGlkZW50aWZpZXIpO1xuICAgIH1cbiAgICB0aHJvdyBFcnJvcignQ29uZmlnIG5vdCBmb3VuZDogJyArIGlkZW50aWZpZXIpO1xuICB9XG5cbiAgc2V0VmFsdWUoaWRlbnRpZmllciwgdmFsdWUpIHtcbiAgICB0aGlzLnZhbHVlc1tpZGVudGlmaWVyXSA9IHZhbHVlO1xuICAgIHJldHVybiB0aGlzOyAvL2ZsdWVudCBBUElcbiAgfVxuXG4gIG9uTG9jYWxlQ2hhbmdlZChjYWxsYmFjaykge1xuICAgIGlmICh0aGlzLmlubmVyQ29uZmlnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmlubmVyQ29uZmlnLm9uTG9jYWxlQ2hhbmdlZChjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpZCA9ICsrVmFsaWRhdGlvbkNvbmZpZy51bmlxdWVMaXN0ZW5lcklkO1xuICAgICAgdGhpcy5jaGFuZ2VkSGFuZGxlcnMuc2V0KGlkLCBjYWxsYmFjayk7XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICB0aGlzLmNoYW5nZWRIYW5kbGVycy5kZWxldGUoaWQpO1xuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBnZXREZXBlbmRlbmNpZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VmFsdWUoJ2RlcGVuZGVuY2llcycpO1xuICB9XG5cbiAgc2V0SHR0cFNlcnZpY2UoaHR0cE9wdHMpIHtcbiAgICBDb25maWcuaHR0cE9wdHMgPSBodHRwT3B0cztcbiAgfVxuXG4gIHNldExvZ2dlclNlcnZpY2UobG9nZ2VyT3B0cykge1xuICAgIENvbmZpZy5sb2dnZXJPcHRzID0gbG9nZ2VyT3B0cztcbiAgfVxuXG4gIHJvdXRlckF1dGhTdGVwKG9wdHMpIHtcbiAgICBDb25maWcucm91dGVyQXV0aFN0ZXBPcHRzID0gb3B0cztcbiAgfVxuXG4gIHVzZUxvY2FsZShsb2NhbGVJZGVudGlmaWVyKSB7XG4gICAgdGhpcy5zZXRWYWx1ZSgnbG9jYWxlJywgbG9jYWxlSWRlbnRpZmllcik7XG4gICAgdmFyIGNhbGxiYWNrcyA9IEFycmF5LmZyb20odGhpcy5jaGFuZ2VkSGFuZGxlcnMudmFsdWVzKCkpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjYWxsYmFja3NbaV0oKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBsb2NhbGUoKSB7XG4gICAgcmV0dXJuIExvY2FsZS5SZXBvc2l0b3J5XG4gICAgICAubG9hZCh0aGlzLmdldFZhbHVlKCdsb2NhbGUnKSwgdGhpcy5nZXRWYWx1ZSgnbG9jYWxlUmVzb3VyY2VzJykpO1xuICB9XG59XG5cbkNvbmZpZy51bmlxdWVMaXN0ZW5lcklkID0gMDtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
--------------------------------------------------------------------------------
/dist/system/locale.js:
--------------------------------------------------------------------------------
1 | System.register([], function (_export) {
2 | 'use strict';
3 |
4 | var Locale, LocaleRepository;
5 |
6 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
7 |
8 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
9 |
10 | return {
11 | setters: [],
12 | execute: function () {
13 | Locale = (function () {
14 | function Locale(defaults, data) {
15 | _classCallCheck(this, Locale);
16 |
17 | this.defaults = defaults;
18 | this.currentLocale = data;
19 | }
20 |
21 | _createClass(Locale, [{
22 | key: 'getValueFor',
23 | value: function getValueFor(identifier, category) {
24 | if (this.currentLocale && this.currentLocale[category]) {
25 | var currentLocaleSetting = this.currentLocale[category][identifier];
26 | if (currentLocaleSetting !== undefined && currentLocaleSetting !== null) return currentLocaleSetting;
27 | }
28 | if (this.defaults[category]) {
29 | var defaultSetting = this.defaults[category][identifier];
30 | if (defaultSetting !== undefined && defaultSetting !== null) return defaultSetting;
31 | }
32 | throw 'validation: I18N: Could not find: ' + identifier + ' in category: ' + category;
33 | }
34 | }, {
35 | key: 'setting',
36 | value: function setting(settingIdentifier) {
37 | return this.getValueFor(settingIdentifier, 'settings');
38 | }
39 | }, {
40 | key: 'translate',
41 | value: function translate(translationIdentifier, newValue, threshold) {
42 | var translation = this.getValueFor(translationIdentifier, 'messages');
43 | if (typeof translation === 'function') {
44 | return translation(newValue, threshold);
45 | }
46 | if (typeof translation === 'string') {
47 | return translation;
48 | }
49 | throw 'Validation message for ' + translationIdentifier + 'was in an unsupported format';
50 | }
51 | }]);
52 |
53 | return Locale;
54 | })();
55 |
56 | _export('Locale', Locale);
57 |
58 | LocaleRepository = (function () {
59 | function LocaleRepository() {
60 | _classCallCheck(this, LocaleRepository);
61 |
62 | this['default'] = null;
63 | this.instances = new Map();
64 | this.defaults = {
65 | settings: {},
66 | messages: {}
67 | };
68 | }
69 |
70 | _createClass(LocaleRepository, [{
71 | key: 'load',
72 | value: function load(localeIdentifier, basePath) {
73 | var _this = this;
74 |
75 | if (!basePath) basePath = 'aurelia-custom-app-common-files/resources/';
76 |
77 | return new Promise(function (resolve, reject) {
78 | if (_this.instances.has(localeIdentifier)) {
79 | var locale = _this.instances.get(localeIdentifier);
80 | resolve(locale);
81 | } else {
82 | System['import'](basePath + localeIdentifier).then(function (resource) {
83 | var locale = _this.addLocale(localeIdentifier, resource.data);
84 | resolve(locale);
85 | });
86 | }
87 | });
88 | }
89 | }, {
90 | key: 'addLocale',
91 | value: function addLocale(localeIdentifier, data) {
92 | var instance = new Locale(this.defaults, data);
93 | this.instances.set(localeIdentifier, instance);
94 | if (this['default'] === null) this['default'] = instance;
95 | return instance;
96 | }
97 | }]);
98 |
99 | return LocaleRepository;
100 | })();
101 |
102 | Locale.Repository = new LocaleRepository();
103 | }
104 | };
105 | });
106 | //# sourceMappingURL=data:application/json;base64,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QUFHLE1BQUssU0FBUyxDQUFDLGdCQUFnQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM3RCx5QkFBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUNqQixDQUFDLENBQUM7ZUFDSjthQUNGLENBQUMsQ0FBQztXQUNKOzs7aUJBRVEsbUJBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUNoQztBQUNFLGdCQUFJLFFBQVEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQy9DLGdCQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUMvQyxnQkFBRyxJQUFJLFdBQVEsS0FBSyxJQUFJLEVBQ3RCLElBQUksV0FBUSxHQUFHLFFBQVEsQ0FBQztBQUMxQixtQkFBTyxRQUFRLENBQUM7V0FDakI7OztlQWpDRyxnQkFBZ0I7OztBQW9DdEIsWUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUMiLCJmaWxlIjoibG9jYWxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVkIGJ5IG1vc2hlbnNreSBvbiA2LzE3LzE1LlxuICovXG5leHBvcnQgY2xhc3MgTG9jYWxle1xuICBjb25zdHJ1Y3RvcihkZWZhdWx0cywgZGF0YSlcbiAge1xuICAgIHRoaXMuZGVmYXVsdHMgPSBkZWZhdWx0cztcbiAgICB0aGlzLmN1cnJlbnRMb2NhbGUgPSBkYXRhO1xuICB9XG5cbiAgZ2V0VmFsdWVGb3IoaWRlbnRpZmllciwgY2F0ZWdvcnkpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50TG9jYWxlICYmIHRoaXMuY3VycmVudExvY2FsZVtjYXRlZ29yeV0pIHtcbiAgICAgIHZhciBjdXJyZW50TG9jYWxlU2V0dGluZyA9IHRoaXMuY3VycmVudExvY2FsZVtjYXRlZ29yeV1baWRlbnRpZmllcl07XG4gICAgICBpZiAoY3VycmVudExvY2FsZVNldHRpbmcgIT09IHVuZGVmaW5lZCAmJiBjdXJyZW50TG9jYWxlU2V0dGluZyAhPT0gbnVsbClcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRMb2NhbGVTZXR0aW5nO1xuICAgIH1cbiAgICBpZiAodGhpcy5kZWZhdWx0c1tjYXRlZ29yeV0pIHtcbiAgICAgIHZhciBkZWZhdWx0U2V0dGluZyA9IHRoaXMuZGVmYXVsdHNbY2F0ZWdvcnldW2lkZW50aWZpZXJdO1xuICAgICAgaWYgKGRlZmF1bHRTZXR0aW5nICE9PSB1bmRlZmluZWQgJiYgZGVmYXVsdFNldHRpbmcgIT09IG51bGwpXG4gICAgICAgIHJldHVybiBkZWZhdWx0U2V0dGluZztcbiAgICB9XG4gICAgdGhyb3cgJ3ZhbGlkYXRpb246IEkxOE46IENvdWxkIG5vdCBmaW5kOiAnICsgaWRlbnRpZmllciArICcgaW4gY2F0ZWdvcnk6ICcgKyBjYXRlZ29yeTtcbiAgfVxuXG4gIHNldHRpbmcoc2V0dGluZ0lkZW50aWZpZXIpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRWYWx1ZUZvcihzZXR0aW5nSWRlbnRpZmllciwgJ3NldHRpbmdzJyk7XG4gIH1cblxuICB0cmFuc2xhdGUodHJhbnNsYXRpb25JZGVudGlmaWVyLCBuZXdWYWx1ZSwgdGhyZXNob2xkKSB7XG4gICAgdmFyIHRyYW5zbGF0aW9uID0gdGhpcy5nZXRWYWx1ZUZvcih0cmFuc2xhdGlvbklkZW50aWZpZXIsICdtZXNzYWdlcycpO1xuICAgIGlmICh0eXBlb2YgdHJhbnNsYXRpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiB0cmFuc2xhdGlvbihuZXdWYWx1ZSwgdGhyZXNob2xkKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0cmFuc2xhdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiB0cmFuc2xhdGlvbjtcbiAgICB9XG4gICAgdGhyb3cgJ1ZhbGlkYXRpb24gbWVzc2FnZSBmb3IgJyArIHRyYW5zbGF0aW9uSWRlbnRpZmllciArICd3YXMgaW4gYW4gdW5zdXBwb3J0ZWQgZm9ybWF0JztcbiAgfVxufVxuXG5jbGFzcyBMb2NhbGVSZXBvc2l0b3J5ICB7XG4gIGNvbnN0cnVjdG9yKCl7XG4gICAgdGhpcy5kZWZhdWx0ID0gbnVsbDtcbiAgICB0aGlzLmluc3RhbmNlcyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLmRlZmF1bHRzID0ge1xuICAgICAgc2V0dGluZ3M6IHt9LFxuICAgICAgbWVzc2FnZXM6IHt9XG4gICAgfTtcbiAgfVxuXG4gIGxvYWQobG9jYWxlSWRlbnRpZmllciwgYmFzZVBhdGgpIHtcbiAgICBpZighYmFzZVBhdGgpIGJhc2VQYXRoID0gJ2F1cmVsaWEtY3VzdG9tLWFwcC1jb21tb24tZmlsZXMvcmVzb3VyY2VzLyc7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYodGhpcy5pbnN0YW5jZXMuaGFzKGxvY2FsZUlkZW50aWZpZXIpKSB7XG4gICAgICAgIGxldCBsb2NhbGUgPSB0aGlzLmluc3RhbmNlcy5nZXQobG9jYWxlSWRlbnRpZmllcik7XG4gICAgICAgIHJlc29sdmUobG9jYWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIFN5c3RlbS5pbXBvcnQoYmFzZVBhdGggKyBsb2NhbGVJZGVudGlmaWVyKS50aGVuKChyZXNvdXJjZSkgPT4ge1xuICAgICAgICAgIGxldCBsb2NhbGUgPSB0aGlzLmFkZExvY2FsZShsb2NhbGVJZGVudGlmaWVyLCByZXNvdXJjZS5kYXRhKTtcbiAgICAgICAgICByZXNvbHZlKGxvY2FsZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYWRkTG9jYWxlKGxvY2FsZUlkZW50aWZpZXIsIGRhdGEpXG4gIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBuZXcgTG9jYWxlKHRoaXMuZGVmYXVsdHMsIGRhdGEpO1xuICAgIHRoaXMuaW5zdGFuY2VzLnNldChsb2NhbGVJZGVudGlmaWVyLCBpbnN0YW5jZSk7XG4gICAgaWYodGhpcy5kZWZhdWx0ID09PSBudWxsKVxuICAgICAgdGhpcy5kZWZhdWx0ID0gaW5zdGFuY2U7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9XG59XG5cbkxvY2FsZS5SZXBvc2l0b3J5ID0gbmV3IExvY2FsZVJlcG9zaXRvcnkoKTtcbiJdLCJzb3VyY2VSb290IjoiL3NvdXJjZS8ifQ==
--------------------------------------------------------------------------------
/dist/amd/authorize-steps.js:
--------------------------------------------------------------------------------
1 | define(['exports', 'aurelia-dependency-injection', './session', './logger', './locale', './config', 'aurelia-router'], function (exports, _aureliaDependencyInjection, _session, _logger, _locale, _config, _aureliaRouter) {
2 | 'use strict';
3 |
4 | Object.defineProperty(exports, '__esModule', {
5 | value: true
6 | });
7 |
8 | var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
9 |
10 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
11 |
12 | function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
13 |
14 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
15 |
16 | var BaseAuthorizeStep = (function () {
17 | function BaseAuthorizeStep(session, logger) {
18 | _classCallCheck(this, BaseAuthorizeStep);
19 |
20 | this.session = session;
21 | this.logger = logger;
22 | this.locale = _locale.Locale.Repository['default'];
23 | this.loginRoute = _config.Config.routerAuthStepOpts.loginRoute;
24 | }
25 |
26 | _createClass(BaseAuthorizeStep, [{
27 | key: 'run',
28 | value: function run(navigationInstruction, next) {
29 | if (!this.session.isUserLoggedIn() && navigationInstruction.config.route !== this.loginRoute) {
30 | this.logger.warn(this.locale.translate('pleaseLogin'));
31 | return next.cancel(new _aureliaRouter.Redirect(this.loginRoute));
32 | }
33 |
34 | var canAccess = this.authorize(navigationInstruction);
35 | if (canAccess === false) {
36 | this.logger.error(this.locale.translate('notAuthorized'));
37 | return next.cancel();
38 | }
39 |
40 | return next();
41 | }
42 | }, {
43 | key: 'authorize',
44 | value: function authorize(navigationInstruction) {
45 | if (navigationInstruction.parentInstruction === null) {
46 | return this.canAccess(navigationInstruction);
47 | } else {
48 | var canAccess = this.canAccess(navigationInstruction);
49 | if (hasRole) {
50 | return this.authorize(navigationInstruction.parentInstruction);
51 | } else {
52 | return false;
53 | }
54 | }
55 | }
56 | }, {
57 | key: 'canAccess',
58 | value: function canAccess() {}
59 | }]);
60 |
61 | return BaseAuthorizeStep;
62 | })();
63 |
64 | var RolesAuthorizeStep = (function (_BaseAuthorizeStep) {
65 | _inherits(RolesAuthorizeStep, _BaseAuthorizeStep);
66 |
67 | function RolesAuthorizeStep(session, logger) {
68 | _classCallCheck(this, _RolesAuthorizeStep);
69 |
70 | _get(Object.getPrototypeOf(_RolesAuthorizeStep.prototype), 'constructor', this).call(this, session, logger);
71 | }
72 |
73 | _createClass(RolesAuthorizeStep, [{
74 | key: 'canAccess',
75 | value: function canAccess(navigationInstruction) {
76 | if (navigationInstruction.config.roles) {
77 | return this.session.userHasAtLeastOneRole(navigationInstruction.config.roles);
78 | }
79 |
80 | return true;
81 | }
82 | }]);
83 |
84 | var _RolesAuthorizeStep = RolesAuthorizeStep;
85 | RolesAuthorizeStep = (0, _aureliaDependencyInjection.inject)(_session.Session, _logger.Logger)(RolesAuthorizeStep) || RolesAuthorizeStep;
86 | return RolesAuthorizeStep;
87 | })(BaseAuthorizeStep);
88 |
89 | exports.RolesAuthorizeStep = RolesAuthorizeStep;
90 |
91 | var AccessRightsAuthorizeStep = (function (_BaseAuthorizeStep2) {
92 | _inherits(AccessRightsAuthorizeStep, _BaseAuthorizeStep2);
93 |
94 | function AccessRightsAuthorizeStep(session, logger) {
95 | _classCallCheck(this, _AccessRightsAuthorizeStep);
96 |
97 | _get(Object.getPrototypeOf(_AccessRightsAuthorizeStep.prototype), 'constructor', this).call(this, session, logger);
98 | }
99 |
100 | _createClass(AccessRightsAuthorizeStep, [{
101 | key: 'canAccess',
102 | value: function canAccess(navigationInstruction) {
103 | if (navigationInstruction.config.accessRight) {
104 | return this.session.userHasAccessRight(navigationInstruction.config.accessRight);
105 | }
106 |
107 | return true;
108 | }
109 | }]);
110 |
111 | var _AccessRightsAuthorizeStep = AccessRightsAuthorizeStep;
112 | AccessRightsAuthorizeStep = (0, _aureliaDependencyInjection.inject)(_session.Session, _logger.Logger)(AccessRightsAuthorizeStep) || AccessRightsAuthorizeStep;
113 | return AccessRightsAuthorizeStep;
114 | })(BaseAuthorizeStep);
115 |
116 | exports.AccessRightsAuthorizeStep = AccessRightsAuthorizeStep;
117 | });
118 | //# sourceMappingURL=data:application/json;base64,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QUFNLEVBQUU7S0FDeEI7O2lCQUhVLHlCQUF5Qjs7YUFLM0IsbUJBQUMscUJBQXFCLEVBQUU7QUFDL0IsWUFBSSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO0FBQzVDLGlCQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ2xGOztBQUVELGVBQU8sSUFBSSxDQUFDO09BQ2I7OztxQ0FYVSx5QkFBeUI7QUFBekIsNkJBQXlCLEdBRHJDLGdDQWxFTyxNQUFNLFdBQ04sT0FBTyxVQUNQLE1BQU0sQ0FnRVUsQ0FDWCx5QkFBeUIsS0FBekIseUJBQXlCO1dBQXpCLHlCQUF5QjtLQUFTLGlCQUFpQiIsImZpbGUiOiJhdXRob3JpemUtc3RlcHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENyZWF0ZWQgYnkgbW9zaGVuc2t5IG9uIDYvMTcvMTUuXG4gKi9cbmltcG9ydCB7aW5qZWN0fSBmcm9tICdhdXJlbGlhLWRlcGVuZGVuY3ktaW5qZWN0aW9uJztcbmltcG9ydCB7U2Vzc2lvbn0gZnJvbSAnLi9zZXNzaW9uJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQge0xvY2FsZX0gZnJvbSAnLi9sb2NhbGUnO1xuaW1wb3J0IHtDb25maWd9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7UmVkaXJlY3R9IGZyb20gJ2F1cmVsaWEtcm91dGVyJztcblxuXG5jbGFzcyBCYXNlQXV0aG9yaXplU3RlcCB7XG4gIGNvbnN0cnVjdG9yKHNlc3Npb24sIGxvZ2dlcikge1xuICAgIHRoaXMuc2Vzc2lvbiA9IHNlc3Npb247XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5sb2NhbGUgPSBMb2NhbGUuUmVwb3NpdG9yeS5kZWZhdWx0O1xuICAgIHRoaXMubG9naW5Sb3V0ZSA9IENvbmZpZy5yb3V0ZXJBdXRoU3RlcE9wdHMubG9naW5Sb3V0ZTtcbiAgfVxuXG4gIHJ1bihuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24sIG5leHQpIHtcbiAgICBpZiAoIXRoaXMuc2Vzc2lvbi5pc1VzZXJMb2dnZWRJbigpICYmIG5hdmlnYXRpb25JbnN0cnVjdGlvbi5jb25maWcucm91dGUgIT09IHRoaXMubG9naW5Sb3V0ZSkge1xuICAgICAgdGhpcy5sb2dnZXIud2Fybih0aGlzLmxvY2FsZS50cmFuc2xhdGUoJ3BsZWFzZUxvZ2luJykpO1xuICAgICAgcmV0dXJuIG5leHQuY2FuY2VsKG5ldyBSZWRpcmVjdCh0aGlzLmxvZ2luUm91dGUpKTtcbiAgICB9XG5cbiAgICBsZXQgY2FuQWNjZXNzID0gdGhpcy5hdXRob3JpemUobmF2aWdhdGlvbkluc3RydWN0aW9uKTtcbiAgICBpZiAoY2FuQWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IodGhpcy5sb2NhbGUudHJhbnNsYXRlKCdub3RBdXRob3JpemVkJykpO1xuICAgICAgcmV0dXJuIG5leHQuY2FuY2VsKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHQoKTtcbiAgfVxuXG4gIGF1dGhvcml6ZShuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24pIHtcbiAgICBpZiAobmF2aWdhdGlvbkluc3RydWN0aW9uLnBhcmVudEluc3RydWN0aW9uID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYW5BY2Nlc3MobmF2aWdhdGlvbkluc3RydWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNhbkFjY2VzcyA9IHRoaXMuY2FuQWNjZXNzKG5hdmlnYXRpb25JbnN0cnVjdGlvbik7XG4gICAgICBpZiAoaGFzUm9sZSl7XG4gICAgICAgIHJldHVybiB0aGlzLmF1dGhvcml6ZShuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24ucGFyZW50SW5zdHJ1Y3Rpb24pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2FuQWNjZXNzKCkge1xuXG4gIH1cbn1cblxuXG5AaW5qZWN0KFNlc3Npb24sIExvZ2dlcilcbmV4cG9ydCBjbGFzcyBSb2xlc0F1dGhvcml6ZVN0ZXAgZXh0ZW5kcyBCYXNlQXV0aG9yaXplU3RlcCB7XG4gIGNvbnN0cnVjdG9yKHNlc3Npb24sIGxvZ2dlcikge1xuICAgIHN1cGVyKHNlc3Npb24sIGxvZ2dlcik7XG4gIH1cblxuICBjYW5BY2Nlc3MobmF2aWdhdGlvbkluc3RydWN0aW9uKSB7XG4gICAgaWYgKG5hdmlnYXRpb25JbnN0cnVjdGlvbi5jb25maWcucm9sZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlc3Npb24udXNlckhhc0F0TGVhc3RPbmVSb2xlKG5hdmlnYXRpb25JbnN0cnVjdGlvbi5jb25maWcucm9sZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cblxuQGluamVjdChTZXNzaW9uLCBMb2dnZXIpXG5leHBvcnQgY2xhc3MgQWNjZXNzUmlnaHRzQXV0aG9yaXplU3RlcCBleHRlbmRzIEJhc2VBdXRob3JpemVTdGVwIHtcbiAgY29uc3RydWN0b3Ioc2Vzc2lvbiwgbG9nZ2VyKSB7XG4gICAgc3VwZXIoc2Vzc2lvbiwgbG9nZ2VyKTtcbiAgfVxuXG4gIGNhbkFjY2VzcyhuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24pIHtcbiAgICBpZiAobmF2aWdhdGlvbkluc3RydWN0aW9uLmNvbmZpZy5hY2Nlc3NSaWdodCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbi51c2VySGFzQWNjZXNzUmlnaHQobmF2aWdhdGlvbkluc3RydWN0aW9uLmNvbmZpZy5hY2Nlc3NSaWdodCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
--------------------------------------------------------------------------------
/dist/amd/session.js:
--------------------------------------------------------------------------------
1 | define(['exports', 'aurelia-dependency-injection', 'aurelia-router', './logger'], function (exports, _aureliaDependencyInjection, _aureliaRouter, _logger) {
2 | 'use strict';
3 |
4 | Object.defineProperty(exports, '__esModule', {
5 | value: true
6 | });
7 |
8 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
9 |
10 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
11 |
12 | var constant = {
13 | appData: 'appData'
14 | };
15 |
16 | var Session = (function () {
17 | function Session(router, logger) {
18 | _classCallCheck(this, _Session);
19 |
20 | this.router = router;
21 | this.log = logger;
22 |
23 | this.initUserData();
24 |
25 | if (this.userRemembered()) {
26 | this.restoreData();
27 | }
28 | }
29 |
30 | _createClass(Session, [{
31 | key: 'initUserData',
32 | value: function initUserData() {
33 | this.userName = null;
34 | this.userClaims = [];
35 | this.userRoles = [];
36 | this.userAccessRights = [];
37 |
38 | this.isLoggedIn = false;
39 | this.isBusy = false;
40 | }
41 | }, {
42 | key: 'setUser',
43 | value: function setUser(data) {
44 | if (data) {
45 | localStorage[constant.appData] = JSON.stringify(data);
46 | this.restoreData();
47 | }
48 | }
49 | }, {
50 | key: 'clearUser',
51 | value: function clearUser() {
52 | localStorage.clear();
53 | this.initUserData();
54 | }
55 | }, {
56 | key: 'userHasAccessRight',
57 | value: function userHasAccessRight(requiredAccessRight) {
58 | return this.userAccessRights[requiredAccessRight] === true;
59 | }
60 | }, {
61 | key: 'userHasAllAccessRights',
62 | value: function userHasAllAccessRights(requiredAccessRights) {
63 | var _this = this;
64 |
65 | return requiredAccessRights.every(function (accessRight) {
66 | return _this.userHasAccessRight(accessRight);
67 | });
68 | }
69 | }, {
70 | key: 'userHasRole',
71 | value: function userHasRole(requredRole) {
72 | return this.userRoles[requredRole] === true;
73 | }
74 | }, {
75 | key: 'userHasAtLeastOneRole',
76 | value: function userHasAtLeastOneRole(requiredRoles) {
77 | var _this2 = this;
78 |
79 | return requiredRoles.some(function (requiredRole) {
80 | return _this2.userHasRole(requiredRole);
81 | });
82 | }
83 | }, {
84 | key: 'getUserClaim',
85 | value: function getUserClaim(claimType) {
86 | return this.userClaims[claimType];
87 | }
88 | }, {
89 | key: 'isUserLoggedIn',
90 | value: function isUserLoggedIn() {
91 | return this.isLoggedIn === true;
92 | }
93 | }, {
94 | key: 'userRemembered',
95 | value: function userRemembered() {
96 | var isInLocalStorage = localStorage[constant.appData] !== undefined;
97 | return isInLocalStorage;
98 | }
99 | }, {
100 | key: 'restoreData',
101 | value: function restoreData() {
102 | var data = JSON.parse(localStorage[constant.appData]);
103 |
104 | this.userName = data.userName;
105 | this.userClaims = data.userClaims.reduce(function (hash, userClaim) {
106 | hash[userClaim.type] = userClaim.value;
107 | return hash;
108 | }, {});
109 | this.userRoles = data.userRoles.reduce(function (hash, userRole) {
110 | hash[userRole] = true;
111 | return hash;
112 | }, {});
113 | this.userAccessRights = data.userAccessRights.reduce(function (hash, accessRight) {
114 | hash[accessRight] = true;
115 | return hash;
116 | }, {});
117 |
118 | this.userAccessRights['access'] = true;
119 |
120 | this.isLoggedIn = true;
121 | this.router.navigate('');
122 | }
123 | }, {
124 | key: 'rememberedToken',
125 | value: function rememberedToken() {
126 | var token = JSON.parse(localStorage[constant.appData]).token;
127 | return token;
128 | }
129 | }, {
130 | key: 'getUserName',
131 | value: function getUserName() {
132 | return this.userName;
133 | }
134 | }]);
135 |
136 | var _Session = Session;
137 | Session = (0, _aureliaDependencyInjection.inject)(_aureliaRouter.Router, _logger.Logger)(Session) || Session;
138 | return Session;
139 | })();
140 |
141 | exports.Session = Session;
142 | });
143 | //# sourceMappingURL=data:application/json;base64,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ZW5za3kgb24gNi8xNi8xNS5cbiAqL1xuaW1wb3J0IHtpbmplY3R9IGZyb20gJ2F1cmVsaWEtZGVwZW5kZW5jeS1pbmplY3Rpb24nO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ2F1cmVsaWEtcm91dGVyJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuL2xvZ2dlcic7XG5cbmNvbnN0IGNvbnN0YW50ID0ge1xuICBhcHBEYXRhOiAnYXBwRGF0YSdcbn07XG5cbkBpbmplY3QoUm91dGVyLCBMb2dnZXIpXG5leHBvcnQgY2xhc3MgU2Vzc2lvbiB7XG5cbiAgY29uc3RydWN0b3Iocm91dGVyLCBsb2dnZXIpIHtcbiAgICB0aGlzLnJvdXRlciA9IHJvdXRlcjtcbiAgICB0aGlzLmxvZyA9IGxvZ2dlcjtcblxuICAgIHRoaXMuaW5pdFVzZXJEYXRhKCk7XG5cbiAgICBpZiAodGhpcy51c2VyUmVtZW1iZXJlZCgpKSB7XG4gICAgICB0aGlzLnJlc3RvcmVEYXRhKCk7XG4gICAgfVxuICB9XG5cbiAgaW5pdFVzZXJEYXRhKCkge1xuICAgIHRoaXMudXNlck5hbWUgPSBudWxsO1xuICAgIHRoaXMudXNlckNsYWltcyA9IFtdO1xuICAgIHRoaXMudXNlclJvbGVzID0gW107XG4gICAgdGhpcy51c2VyQWNjZXNzUmlnaHRzID0gW107XG5cbiAgICB0aGlzLmlzTG9nZ2VkSW4gPSBmYWxzZTtcbiAgICB0aGlzLmlzQnVzeSA9IGZhbHNlO1xuICB9XG5cbiAgc2V0VXNlcihkYXRhKSB7XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGxvY2FsU3RvcmFnZVtjb25zdGFudC5hcHBEYXRhXSA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgICAgdGhpcy5yZXN0b3JlRGF0YSgpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyVXNlcigpIHtcbiAgICBsb2NhbFN0b3JhZ2UuY2xlYXIoKTtcbiAgICB0aGlzLmluaXRVc2VyRGF0YSgpO1xuICB9XG5cbiAgdXNlckhhc0FjY2Vzc1JpZ2h0KHJlcXVpcmVkQWNjZXNzUmlnaHQpIHtcbiAgICByZXR1cm4gdGhpcy51c2VyQWNjZXNzUmlnaHRzW3JlcXVpcmVkQWNjZXNzUmlnaHRdID09PSB0cnVlO1xuICB9XG5cbiAgdXNlckhhc0FsbEFjY2Vzc1JpZ2h0cyhyZXF1aXJlZEFjY2Vzc1JpZ2h0cykge1xuICAgIHJldHVybiByZXF1aXJlZEFjY2Vzc1JpZ2h0cy5ldmVyeShhY2Nlc3NSaWdodCA9PiB7XG4gICAgICByZXR1cm4gdGhpcy51c2VySGFzQWNjZXNzUmlnaHQoYWNjZXNzUmlnaHQpO1xuICAgIH0pXG4gIH1cblxuICB1c2VySGFzUm9sZShyZXF1cmVkUm9sZSkge1xuICAgIHJldHVybiB0aGlzLnVzZXJSb2xlc1tyZXF1cmVkUm9sZV0gPT09IHRydWU7XG4gIH1cblxuICB1c2VySGFzQXRMZWFzdE9uZVJvbGUocmVxdWlyZWRSb2xlcykge1xuICAgIHJldHVybiByZXF1aXJlZFJvbGVzLnNvbWUocmVxdWlyZWRSb2xlID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnVzZXJIYXNSb2xlKHJlcXVpcmVkUm9sZSk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRVc2VyQ2xhaW0oY2xhaW1UeXBlKSB7XG4gICAgcmV0dXJuIHRoaXMudXNlckNsYWltc1tjbGFpbVR5cGVdO1xuICB9XG5cbiAgaXNVc2VyTG9nZ2VkSW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNMb2dnZWRJbiA9PT0gdHJ1ZTtcbiAgfVxuXG4gIHVzZXJSZW1lbWJlcmVkKCkge1xuICAgIGxldCBpc0luTG9jYWxTdG9yYWdlID0gbG9jYWxTdG9yYWdlW2NvbnN0YW50LmFwcERhdGFdICE9PSB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIGlzSW5Mb2NhbFN0b3JhZ2U7XG4gIH1cblxuICByZXN0b3JlRGF0YSgpIHtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VbY29uc3RhbnQuYXBwRGF0YV0pO1xuXG4gICAgdGhpcy51c2VyTmFtZSA9IGRhdGEudXNlck5hbWU7XG4gICAgdGhpcy51c2VyQ2xhaW1zID0gZGF0YS51c2VyQ2xhaW1zLnJlZHVjZShmdW5jdGlvbiAoaGFzaCwgdXNlckNsYWltKSB7XG4gICAgICBoYXNoW3VzZXJDbGFpbS50eXBlXSA9IHVzZXJDbGFpbS52YWx1ZTtcbiAgICAgIHJldHVybiBoYXNoO1xuICAgIH0sIHt9KTtcbiAgICB0aGlzLnVzZXJSb2xlcyA9IGRhdGEudXNlclJvbGVzLnJlZHVjZSgoaGFzaCwgdXNlclJvbGUpID0+IHtcbiAgICAgIGhhc2hbdXNlclJvbGVdID0gdHJ1ZTtcbiAgICAgIHJldHVybiBoYXNoO1xuICAgIH0sIHt9KTtcbiAgICB0aGlzLnVzZXJBY2Nlc3NSaWdodHMgPSBkYXRhLnVzZXJBY2Nlc3NSaWdodHMucmVkdWNlKChoYXNoLCBhY2Nlc3NSaWdodCkgPT4ge1xuICAgICAgaGFzaFthY2Nlc3NSaWdodF0gPSB0cnVlO1xuICAgICAgcmV0dXJuIGhhc2g7XG4gICAgfSwge30pO1xuXG4gICAgLy8gdG9kbzogZGVsZXRlXG4gICAgdGhpcy51c2VyQWNjZXNzUmlnaHRzWydhY2Nlc3MnXSA9IHRydWU7XG5cbiAgICB0aGlzLmlzTG9nZ2VkSW4gPSB0cnVlO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKCcnKTtcbiAgfVxuXG4gIHJlbWVtYmVyZWRUb2tlbigpIHtcbiAgICBjb25zdCB0b2tlbiA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlW2NvbnN0YW50LmFwcERhdGFdKS50b2tlbjtcbiAgICByZXR1cm4gdG9rZW47XG4gIH1cbiAgXG4gIGdldFVzZXJOYW1lKCkge1xuICAgICAgcmV0dXJuIHRoaXMudXNlck5hbWU7XG4gIH1cbn1cblxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
--------------------------------------------------------------------------------
/dist/system/authorize-steps.js:
--------------------------------------------------------------------------------
1 | System.register(['aurelia-dependency-injection', './session', './logger', './locale', './config', 'aurelia-router'], function (_export) {
2 | 'use strict';
3 |
4 | var inject, Session, Logger, Locale, Config, Redirect, BaseAuthorizeStep, RolesAuthorizeStep, AccessRightsAuthorizeStep;
5 |
6 | var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; desc = parent = getter = undefined; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
7 |
8 | var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
9 |
10 | function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
11 |
12 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
13 |
14 | return {
15 | setters: [function (_aureliaDependencyInjection) {
16 | inject = _aureliaDependencyInjection.inject;
17 | }, function (_session) {
18 | Session = _session.Session;
19 | }, function (_logger) {
20 | Logger = _logger.Logger;
21 | }, function (_locale) {
22 | Locale = _locale.Locale;
23 | }, function (_config) {
24 | Config = _config.Config;
25 | }, function (_aureliaRouter) {
26 | Redirect = _aureliaRouter.Redirect;
27 | }],
28 | execute: function () {
29 | BaseAuthorizeStep = (function () {
30 | function BaseAuthorizeStep(session, logger) {
31 | _classCallCheck(this, BaseAuthorizeStep);
32 |
33 | this.session = session;
34 | this.logger = logger;
35 | this.locale = Locale.Repository['default'];
36 | this.loginRoute = Config.routerAuthStepOpts.loginRoute;
37 | }
38 |
39 | _createClass(BaseAuthorizeStep, [{
40 | key: 'run',
41 | value: function run(navigationInstruction, next) {
42 | if (!this.session.isUserLoggedIn() && navigationInstruction.config.route !== this.loginRoute) {
43 | this.logger.warn(this.locale.translate('pleaseLogin'));
44 | return next.cancel(new Redirect(this.loginRoute));
45 | }
46 |
47 | var canAccess = this.authorize(navigationInstruction);
48 | if (canAccess === false) {
49 | this.logger.error(this.locale.translate('notAuthorized'));
50 | return next.cancel();
51 | }
52 |
53 | return next();
54 | }
55 | }, {
56 | key: 'authorize',
57 | value: function authorize(navigationInstruction) {
58 | if (navigationInstruction.parentInstruction === null) {
59 | return this.canAccess(navigationInstruction);
60 | } else {
61 | var canAccess = this.canAccess(navigationInstruction);
62 | if (hasRole) {
63 | return this.authorize(navigationInstruction.parentInstruction);
64 | } else {
65 | return false;
66 | }
67 | }
68 | }
69 | }, {
70 | key: 'canAccess',
71 | value: function canAccess() {}
72 | }]);
73 |
74 | return BaseAuthorizeStep;
75 | })();
76 |
77 | RolesAuthorizeStep = (function (_BaseAuthorizeStep) {
78 | _inherits(RolesAuthorizeStep, _BaseAuthorizeStep);
79 |
80 | function RolesAuthorizeStep(session, logger) {
81 | _classCallCheck(this, _RolesAuthorizeStep);
82 |
83 | _get(Object.getPrototypeOf(_RolesAuthorizeStep.prototype), 'constructor', this).call(this, session, logger);
84 | }
85 |
86 | _createClass(RolesAuthorizeStep, [{
87 | key: 'canAccess',
88 | value: function canAccess(navigationInstruction) {
89 | if (navigationInstruction.config.roles) {
90 | return this.session.userHasAtLeastOneRole(navigationInstruction.config.roles);
91 | }
92 |
93 | return true;
94 | }
95 | }]);
96 |
97 | var _RolesAuthorizeStep = RolesAuthorizeStep;
98 | RolesAuthorizeStep = inject(Session, Logger)(RolesAuthorizeStep) || RolesAuthorizeStep;
99 | return RolesAuthorizeStep;
100 | })(BaseAuthorizeStep);
101 |
102 | _export('RolesAuthorizeStep', RolesAuthorizeStep);
103 |
104 | AccessRightsAuthorizeStep = (function (_BaseAuthorizeStep2) {
105 | _inherits(AccessRightsAuthorizeStep, _BaseAuthorizeStep2);
106 |
107 | function AccessRightsAuthorizeStep(session, logger) {
108 | _classCallCheck(this, _AccessRightsAuthorizeStep);
109 |
110 | _get(Object.getPrototypeOf(_AccessRightsAuthorizeStep.prototype), 'constructor', this).call(this, session, logger);
111 | }
112 |
113 | _createClass(AccessRightsAuthorizeStep, [{
114 | key: 'canAccess',
115 | value: function canAccess(navigationInstruction) {
116 | if (navigationInstruction.config.accessRight) {
117 | return this.session.userHasAccessRight(navigationInstruction.config.accessRight);
118 | }
119 |
120 | return true;
121 | }
122 | }]);
123 |
124 | var _AccessRightsAuthorizeStep = AccessRightsAuthorizeStep;
125 | AccessRightsAuthorizeStep = inject(Session, Logger)(AccessRightsAuthorizeStep) || AccessRightsAuthorizeStep;
126 | return AccessRightsAuthorizeStep;
127 | })(BaseAuthorizeStep);
128 |
129 | _export('AccessRightsAuthorizeStep', AccessRightsAuthorizeStep);
130 | }
131 | };
132 | });
133 | //# sourceMappingURL=data:application/json;base64,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QUFTLGlCQUFpQjs7OztBQWdCNUMsK0JBQXlCO2tCQUF6Qix5QkFBeUI7O0FBQ3pCLGlCQURBLHlCQUF5QixDQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFOzs7QUFDM0IsNEdBQU0sT0FBTyxFQUFFLE1BQU0sRUFBRTtTQUN4Qjs7cUJBSFUseUJBQXlCOztpQkFLM0IsbUJBQUMscUJBQXFCLEVBQUU7QUFDL0IsZ0JBQUkscUJBQXFCLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtBQUM1QyxxQkFBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNsRjs7QUFFRCxtQkFBTyxJQUFJLENBQUM7V0FDYjs7O3lDQVhVLHlCQUF5QjtBQUF6QixpQ0FBeUIsR0FEckMsTUFBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FDWCx5QkFBeUIsS0FBekIseUJBQXlCO2VBQXpCLHlCQUF5QjtTQUFTLGlCQUFpQiIsImZpbGUiOiJhdXRob3JpemUtc3RlcHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENyZWF0ZWQgYnkgbW9zaGVuc2t5IG9uIDYvMTcvMTUuXG4gKi9cbmltcG9ydCB7aW5qZWN0fSBmcm9tICdhdXJlbGlhLWRlcGVuZGVuY3ktaW5qZWN0aW9uJztcbmltcG9ydCB7U2Vzc2lvbn0gZnJvbSAnLi9zZXNzaW9uJztcbmltcG9ydCB7TG9nZ2VyfSBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQge0xvY2FsZX0gZnJvbSAnLi9sb2NhbGUnO1xuaW1wb3J0IHtDb25maWd9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7UmVkaXJlY3R9IGZyb20gJ2F1cmVsaWEtcm91dGVyJztcblxuXG5jbGFzcyBCYXNlQXV0aG9yaXplU3RlcCB7XG4gIGNvbnN0cnVjdG9yKHNlc3Npb24sIGxvZ2dlcikge1xuICAgIHRoaXMuc2Vzc2lvbiA9IHNlc3Npb247XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXI7XG4gICAgdGhpcy5sb2NhbGUgPSBMb2NhbGUuUmVwb3NpdG9yeS5kZWZhdWx0O1xuICAgIHRoaXMubG9naW5Sb3V0ZSA9IENvbmZpZy5yb3V0ZXJBdXRoU3RlcE9wdHMubG9naW5Sb3V0ZTtcbiAgfVxuXG4gIHJ1bihuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24sIG5leHQpIHtcbiAgICBpZiAoIXRoaXMuc2Vzc2lvbi5pc1VzZXJMb2dnZWRJbigpICYmIG5hdmlnYXRpb25JbnN0cnVjdGlvbi5jb25maWcucm91dGUgIT09IHRoaXMubG9naW5Sb3V0ZSkge1xuICAgICAgdGhpcy5sb2dnZXIud2Fybih0aGlzLmxvY2FsZS50cmFuc2xhdGUoJ3BsZWFzZUxvZ2luJykpO1xuICAgICAgcmV0dXJuIG5leHQuY2FuY2VsKG5ldyBSZWRpcmVjdCh0aGlzLmxvZ2luUm91dGUpKTtcbiAgICB9XG5cbiAgICBsZXQgY2FuQWNjZXNzID0gdGhpcy5hdXRob3JpemUobmF2aWdhdGlvbkluc3RydWN0aW9uKTtcbiAgICBpZiAoY2FuQWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IodGhpcy5sb2NhbGUudHJhbnNsYXRlKCdub3RBdXRob3JpemVkJykpO1xuICAgICAgcmV0dXJuIG5leHQuY2FuY2VsKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHQoKTtcbiAgfVxuXG4gIGF1dGhvcml6ZShuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24pIHtcbiAgICBpZiAobmF2aWdhdGlvbkluc3RydWN0aW9uLnBhcmVudEluc3RydWN0aW9uID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5jYW5BY2Nlc3MobmF2aWdhdGlvbkluc3RydWN0aW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IGNhbkFjY2VzcyA9IHRoaXMuY2FuQWNjZXNzKG5hdmlnYXRpb25JbnN0cnVjdGlvbik7XG4gICAgICBpZiAoaGFzUm9sZSl7XG4gICAgICAgIHJldHVybiB0aGlzLmF1dGhvcml6ZShuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24ucGFyZW50SW5zdHJ1Y3Rpb24pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2FuQWNjZXNzKCkge1xuXG4gIH1cbn1cblxuXG5AaW5qZWN0KFNlc3Npb24sIExvZ2dlcilcbmV4cG9ydCBjbGFzcyBSb2xlc0F1dGhvcml6ZVN0ZXAgZXh0ZW5kcyBCYXNlQXV0aG9yaXplU3RlcCB7XG4gIGNvbnN0cnVjdG9yKHNlc3Npb24sIGxvZ2dlcikge1xuICAgIHN1cGVyKHNlc3Npb24sIGxvZ2dlcik7XG4gIH1cblxuICBjYW5BY2Nlc3MobmF2aWdhdGlvbkluc3RydWN0aW9uKSB7XG4gICAgaWYgKG5hdmlnYXRpb25JbnN0cnVjdGlvbi5jb25maWcucm9sZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLnNlc3Npb24udXNlckhhc0F0TGVhc3RPbmVSb2xlKG5hdmlnYXRpb25JbnN0cnVjdGlvbi5jb25maWcucm9sZXMpO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cblxuQGluamVjdChTZXNzaW9uLCBMb2dnZXIpXG5leHBvcnQgY2xhc3MgQWNjZXNzUmlnaHRzQXV0aG9yaXplU3RlcCBleHRlbmRzIEJhc2VBdXRob3JpemVTdGVwIHtcbiAgY29uc3RydWN0b3Ioc2Vzc2lvbiwgbG9nZ2VyKSB7XG4gICAgc3VwZXIoc2Vzc2lvbiwgbG9nZ2VyKTtcbiAgfVxuXG4gIGNhbkFjY2VzcyhuYXZpZ2F0aW9uSW5zdHJ1Y3Rpb24pIHtcbiAgICBpZiAobmF2aWdhdGlvbkluc3RydWN0aW9uLmNvbmZpZy5hY2Nlc3NSaWdodCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2Vzc2lvbi51c2VySGFzQWNjZXNzUmlnaHQobmF2aWdhdGlvbkluc3RydWN0aW9uLmNvbmZpZy5hY2Nlc3NSaWdodCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuIl0sInNvdXJjZVJvb3QiOiIvc291cmNlLyJ9
--------------------------------------------------------------------------------