relution-sdk
Version:
Relution Software Development Kit for TypeScript and JavaScript
71 lines • 7.3 kB
JavaScript
/*
* @file security/Authorization.ts
* Relution SDK
*
* Created by Thomas Beckmann on 28.04.2016
* Copyright 2016 M-Way Solutions GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @module security
*/
/** */
;
function cloneCredentials(credentials) {
return JSON.parse(JSON.stringify(credentials));
}
exports.cloneCredentials = cloneCredentials;
function freezeCredentials(credentials) {
return Object.freeze(credentials);
}
exports.freezeCredentials = freezeCredentials;
/**
* turns the object deeply immutable.
*
* @param authorization to freeze.
* @return {Authorization} authorization for convenience.
*
* @internal for library use only.
*/
function freezeAuthorization(authorization) {
authorization.roles = Object.freeze(authorization.roles);
return Object.freeze(authorization);
}
exports.freezeAuthorization = freezeAuthorization;
/**
* Virtual role for all authenticated users.
*/
exports.ROLE_AUTHENTICATED = 'user.authenticated';
/**
* Administrator's role name. Users in this role should have full access to
* all services in the system.
*/
exports.ROLE_ADMIN = 'ADMIN';
/**
* The name of the predefined role, user.anyone, that all users and groups
* belong to.
*/
exports.USER_ANYONE = 'user.anyone';
/**
* immutable [[Authorization]] representing the anonymous user.
*
* @type {Authorization}
*/
exports.ANONYMOUS_AUTHORIZATION = freezeAuthorization({
name: void 0,
roles: [
exports.USER_ANYONE
]
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWN1cml0eS9hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrQkc7QUFDSDs7R0FFRztBQUNILE1BQU07O0FBc0JOLDBCQUFtRSxXQUF5QjtJQUUxRixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUhlLHdCQUFnQixtQkFHL0IsQ0FBQTtBQUNELDJCQUFvRSxXQUF5QjtJQUUzRixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBSGUseUJBQWlCLG9CQUdoQyxDQUFBO0FBa0JEOzs7Ozs7O0dBT0c7QUFDSCw2QkFBb0MsYUFBNEI7SUFDOUQsYUFBYSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN6RCxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBSGUsMkJBQW1CLHNCQUdsQyxDQUFBO0FBRUQ7O0dBRUc7QUFDVSwwQkFBa0IsR0FBRyxvQkFBb0IsQ0FBQztBQUN2RDs7O0dBR0c7QUFDVSxrQkFBVSxHQUFHLE9BQU8sQ0FBQztBQUNsQzs7O0dBR0c7QUFDVSxtQkFBVyxHQUFHLGFBQWEsQ0FBQztBQUN6Qzs7OztHQUlHO0FBQ1UsK0JBQXVCLEdBQUcsbUJBQW1CLENBQUM7SUFDekQsSUFBSSxFQUFFLEtBQUssQ0FBQztJQUNaLEtBQUssRUFBRTtRQUNMLG1CQUFXO0tBQ1o7Q0FDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBAZmlsZSBzZWN1cml0eS9BdXRob3JpemF0aW9uLnRzXHJcbiAqIFJlbHV0aW9uIFNES1xyXG4gKlxyXG4gKiBDcmVhdGVkIGJ5IFRob21hcyBCZWNrbWFubiBvbiAyOC4wNC4yMDE2XHJcbiAqIENvcHlyaWdodCAyMDE2IE0tV2F5IFNvbHV0aW9ucyBHbWJIXHJcbiAqXHJcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XHJcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cclxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XHJcbiAqXHJcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxyXG4gKlxyXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXHJcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcclxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXHJcbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcclxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXHJcbiAqL1xyXG4vKipcclxuICogQG1vZHVsZSBzZWN1cml0eVxyXG4gKi9cclxuLyoqICovXHJcblxyXG4vKipcclxuICogc29tZSBKU09OIGxpdGVyYWwgb2Yga2V5L3ZhbHVlIHBhaXJzIHJlcHJlc2VudGluZyBjcmVkZW50aWFscy5cclxuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgQ3JlZGVudGlhbHMge1xyXG4gIFtrZXk6IHN0cmluZ106IGFueTtcclxuICBbaW5kZXg6IG51bWJlcl06IGFueTtcclxufVxyXG4vKipcclxuICogdmVyc2lvbiBvZiBbW0NyZWRlbnRpYWxzXV0gdXNlZCBieSBSZWx1dGlvbiBzZXJ2ZXIuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIExvZ2luT2JqZWN0IGV4dGVuZHMgQ3JlZGVudGlhbHMge1xyXG4gIHVzZXJOYW1lPzogc3RyaW5nO1xyXG4gIG9yZ2FOYW1lPzogc3RyaW5nO1xyXG4gIHBhc3N3b3JkPzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIHVzZWQgb25seSBpZiBbW3VzZXJOYW1lXV0gaXMgbm90IHNldC5cclxuICAgKi9cclxuICBlbWFpbD86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNsb25lQ3JlZGVudGlhbHM8Q3JlZGVudGlhbHNUIGV4dGVuZHMgQ3JlZGVudGlhbHM+KGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsc1QpOlxyXG4gICAgQ3JlZGVudGlhbHNUIHtcclxuICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShjcmVkZW50aWFscykpO1xyXG59XHJcbmV4cG9ydCBmdW5jdGlvbiBmcmVlemVDcmVkZW50aWFsczxDcmVkZW50aWFsc1QgZXh0ZW5kcyBDcmVkZW50aWFscz4oY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzVCk6XHJcbiAgICBDcmVkZW50aWFsc1Qge1xyXG4gIHJldHVybiBPYmplY3QuZnJlZXplKGNyZWRlbnRpYWxzKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIHByb3ZpZGVzIGFjY2VzcyBjb250cm9sIHJlbGF0ZWQgaW5mb3JtYXRpb24uXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhvcml6YXRpb24ge1xyXG4gIC8qKlxyXG4gICAqIHRoZSAqVVVJRCogb2YgdGhlIHVzZXIgcmVwcmVzZW50ZWQuXHJcbiAgICpcclxuICAgKiBOb3RpY2UsIG9ubHkgdGhlIFtbQU5PTllNT1VTX0FVVEhPUklaQVRJT05dXSBkb2VzIG5vdCBzcGVjaWZ5IGEgbmFtZS5cclxuICAgKi9cclxuICBuYW1lPzogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIHNlY3VyaXR5IHJvbGVzIHRoZSB1c2VyIGJlbG9uZ3MgdG8sIG5ldmVyIG51bGwuXHJcbiAgICovXHJcbiAgcm9sZXM6IHN0cmluZ1tdO1xyXG59XHJcblxyXG4vKipcclxuICogdHVybnMgdGhlIG9iamVjdCBkZWVwbHkgaW1tdXRhYmxlLlxyXG4gKlxyXG4gKiBAcGFyYW0gYXV0aG9yaXphdGlvbiB0byBmcmVlemUuXHJcbiAqIEByZXR1cm4ge0F1dGhvcml6YXRpb259IGF1dGhvcml6YXRpb24gZm9yIGNvbnZlbmllbmNlLlxyXG4gKlxyXG4gKiBAaW50ZXJuYWwgZm9yIGxpYnJhcnkgdXNlIG9ubHkuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gZnJlZXplQXV0aG9yaXphdGlvbihhdXRob3JpemF0aW9uOiBBdXRob3JpemF0aW9uKTogQXV0aG9yaXphdGlvbiB7XHJcbiAgYXV0aG9yaXphdGlvbi5yb2xlcyA9IE9iamVjdC5mcmVlemUoYXV0aG9yaXphdGlvbi5yb2xlcyk7XHJcbiAgcmV0dXJuIE9iamVjdC5mcmVlemUoYXV0aG9yaXphdGlvbik7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBWaXJ0dWFsIHJvbGUgZm9yIGFsbCBhdXRoZW50aWNhdGVkIHVzZXJzLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFJPTEVfQVVUSEVOVElDQVRFRCA9ICd1c2VyLmF1dGhlbnRpY2F0ZWQnO1xyXG4vKipcclxuICogQWRtaW5pc3RyYXRvcidzIHJvbGUgbmFtZS4gVXNlcnMgaW4gdGhpcyByb2xlIHNob3VsZCBoYXZlIGZ1bGwgYWNjZXNzIHRvXHJcbiAqIGFsbCBzZXJ2aWNlcyBpbiB0aGUgc3lzdGVtLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFJPTEVfQURNSU4gPSAnQURNSU4nO1xyXG4vKipcclxuICogVGhlIG5hbWUgb2YgdGhlIHByZWRlZmluZWQgcm9sZSwgdXNlci5hbnlvbmUsIHRoYXQgYWxsIHVzZXJzIGFuZCBncm91cHNcclxuICogYmVsb25nIHRvLlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IFVTRVJfQU5ZT05FXHQ9ICd1c2VyLmFueW9uZSc7XHJcbi8qKlxyXG4gKiBpbW11dGFibGUgW1tBdXRob3JpemF0aW9uXV0gcmVwcmVzZW50aW5nIHRoZSBhbm9ueW1vdXMgdXNlci5cclxuICpcclxuICogQHR5cGUge0F1dGhvcml6YXRpb259XHJcbiAqL1xyXG5leHBvcnQgY29uc3QgQU5PTllNT1VTX0FVVEhPUklaQVRJT04gPSBmcmVlemVBdXRob3JpemF0aW9uKHtcclxuICBuYW1lOiB2b2lkIDAsXHJcbiAgcm9sZXM6IFtcclxuICAgIFVTRVJfQU5ZT05FXHJcbiAgXVxyXG59KTtcclxuIl19