relution-sdk
Version:
Relution Software Development Kit for TypeScript and JavaScript
65 lines • 9.69 kB
JavaScript
/*
* @file security/roles.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
*/
/** */
;
var domain = require('../core/domain');
/**
* turns the object deeply immutable.
*
* @param organization to freeze.
* @return {Organization} organization for convenience.
*
* @internal for library use only.
*/
function freezeOrganization(organization) {
if (organization.propertyMap) {
organization.propertyMap = Object.freeze(organization.propertyMap);
}
return domain.freeze(organization);
}
exports.freezeOrganization = freezeOrganization;
/**
* turns the object deeply immutable.
*
* @param user to freeze.
* @return {User} user for convenience.
*
* @internal for library use only.
*/
function freezeUser(user) {
if (user.lastLoggedTime) {
user.lastLoggedTime = Object.freeze(new Date(+user.lastLoggedTime));
}
if (user.passwordExpires) {
user.passwordExpires = Object.freeze(new Date(+user.passwordExpires));
}
if (user.confirmationTokenValidTo) {
user.confirmationTokenValidTo = Object.freeze(new Date(+user.confirmationTokenValidTo));
}
if (user.preferences) {
user.preferences = Object.freeze(user.preferences);
}
return domain.freeze(user);
}
exports.freezeUser = freezeUser;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9sZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VjdXJpdHkvcm9sZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWtCRztBQUNIOztHQUVHO0FBQ0gsTUFBTTs7QUFFTixJQUFZLE1BQU0sV0FBTSxnQkFBZ0IsQ0FBQyxDQUFBO0FBNkV6Qzs7Ozs7OztHQU9HO0FBQ0gsNEJBQW1DLFlBQTBCO0lBQzNELEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQzdCLFlBQVksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ3JDLENBQUM7QUFMZSwwQkFBa0IscUJBS2pDLENBQUE7QUE0QkQ7Ozs7Ozs7R0FPRztBQUNILG9CQUEyQixJQUFVO0lBQ25DLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ0QsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7SUFDMUYsQ0FBQztJQUNELEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFkZSxrQkFBVSxhQWN6QixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQGZpbGUgc2VjdXJpdHkvcm9sZXMudHNcclxuICogUmVsdXRpb24gU0RLXHJcbiAqXHJcbiAqIENyZWF0ZWQgYnkgVGhvbWFzIEJlY2ttYW5uIG9uIDI4LjA0LjIwMTZcclxuICogQ29weXJpZ2h0IDIwMTYgTS1XYXkgU29sdXRpb25zIEdtYkhcclxuICpcclxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcclxuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxyXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcclxuICpcclxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXHJcbiAqXHJcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcclxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxyXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cclxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxyXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuICovXHJcbi8qKlxyXG4gKiBAbW9kdWxlIHNlY3VyaXR5XHJcbiAqL1xyXG4vKiogKi9cclxuXHJcbmltcG9ydCAqIGFzIGRvbWFpbiBmcm9tICcuLi9jb3JlL2RvbWFpbic7XHJcblxyXG4vKipcclxuICogUm9sZSBpcyBlaXRoZXIgYSBVc2VyIG9yIGEgR3JvdXAuXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBSb2xlVHlwZSA9XHJcbiAgJ0dST1VQJyB8XHJcbiAgJ1VTRVInO1xyXG4vKipcclxuICogQSBHcm91cCBjYW4gaGF2ZSBvbmUgb2YgdGhlc2UgdHlwZXMuXHJcbiAqL1xyXG5leHBvcnQgdHlwZSBHcm91cFR5cGUgPVxyXG4gIC8qKlxyXG4gICAqIGNyZWF0ZWQgYnkgdGhlIHN5c3RlbS5cclxuICAgKlxyXG4gICAqIFJlcHJlc2VudHMgbG93LWxldmVsIHBlcm1pc3Npb24gdXNlZCB0byBncmFudC9kZW55IGFjY2VzcyB0byBzeXN0ZW0tZnVuY3Rpb25hbGl0eSBhbmQgZW50aXRpZXMuXHJcbiAgICovXHJcbiAgJ1NZU1RFTV9QRVJNSVNTSU9OJyB8XHJcbiAgLyoqXHJcbiAgICogQ2FuIGhhdmUgVXNlciBhbmQgR3JvdXAgZW50aXRpZXMgYXMgbWVtYmVycy5cclxuICAgKi9cclxuICAnR1JPVVAnIHxcclxuICAvKipcclxuICAgKiBMaWtlIGEgR1JPVVAsIGJ1dCBpcyBjcmVhdGVkIGJ5IHRoZSBzeXN0ZW0gYW5kIGNhbid0IGJlIHJlbmFtZWQgb3IgbW92ZWQgdG8gYW5vdGhlclxyXG4gICAqIE9yZ2FuaXphdGlvbi5cclxuICAgKi9cclxuICAnU1lTVEVNX0dST1VQJztcclxuLyoqXHJcbiAqIExpZ2h0d2VpZ2h0IERUTyBmb3Igc2VuZGluZyBtZW1iZXJzIGFuZCByb2xlcyBvZiBncm91cHMvdXNlcnMgaW4gSlNPTiByZXNwb25zZXMuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFJvbGVEdG8ge1xyXG4gIC8vIGNvbS5td2F5c29sdXRpb25zLmdvZmVyMi5zZWN1cml0eS5kb21haW4uUm9sZUR0b1xyXG4gIHV1aWQ6IHN0cmluZztcclxuICBuYW1lOiBzdHJpbmc7XHJcblxyXG4gIHN5c3RlbVBlcm1pc3Npb246IGJvb2xlYW47XHJcblxyXG4gIHR5cGU6IFJvbGVUeXBlO1xyXG4gIGdyb3VwVHlwZT86IEdyb3VwVHlwZTtcclxufVxyXG5cclxuLyoqXHJcbiAqIHJvbGUgZGF0YSBhcyBleGNoYW5nZWQgd2l0aCBSZWx1dGlvbiBzZXJ2ZXIuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFJvbGUgZXh0ZW5kcyBkb21haW4uUmVmZXJlbmNlYWJsZSwgZG9tYWluLlNlY3VyZSwgZG9tYWluLkhhc1ZlcnNpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbi5IYXNCdW5kbGUge1xyXG4gIHR5cGU6IFJvbGVUeXBlO1xyXG4gIHJvbGVzOiBzdHJpbmdbXTtcclxuICByb2xlc09iamVjdHM6IFJvbGVEdG9bXTtcclxuICBzeXNSb2xlczogc3RyaW5nW107XHJcbiAgcHJvdmlkZXI/OiBzdHJpbmc7XHJcbiAgZm9yZWlnbktleT86IHN0cmluZztcclxuXHJcbiAgLy8gZGVwcmVjYXRlZDogYSBSb2xlIGlzIHJlYWRvbmx5IGlmIGFuZCBvbmx5IGlmIGl0IGhhcyBhIHByb3ZpZGVyXHJcbiAgcmVhZG9ubHk/OiBib29sZWFuO1xyXG59XHJcblxyXG4vKipcclxuICogdGVuYW5jeSBvcmdhbml6YXRpb24gZGF0YSBhcyBleGNoYW5nZWQgd2l0aCBSZWx1dGlvbiBzZXJ2ZXIuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIE9yZ2FuaXphdGlvbiBleHRlbmRzIGRvbWFpbi5SZWZlcmVuY2VhYmxlLCBkb21haW4uU2VjdXJlLCBkb21haW4uSGFzVmVyc2lvbixcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW4uSGFzQnVuZGxlLCBkb21haW4uSGFzTW9kaWZpZWQge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICB1bmlxdWVOYW1lOiBzdHJpbmc7XHJcblxyXG4gIGFkZHJlc3M/OiBhbnk7XHJcbiAgYmlsbGluZ1NldHRpbmdzPzogYW55O1xyXG4gIHBhc3N3b3JkUG9saWN5PzogYW55O1xyXG4gIHRlY2huaWNhbFBlcnNvbj86IGFueTtcclxuICB1cmw/OiBzdHJpbmc7XHJcbiAgYXNzZXRQYXRoPzogc3RyaW5nO1xyXG4gIHJlcG9ydExvY2FsZVN0cmluZz86IHN0cmluZztcclxuXHJcbiAgZGVmYXVsdFJvbGVzPzogc3RyaW5nW107XHJcbiAgcHJvcGVydHlNYXA/OiBhbnk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiB0dXJucyB0aGUgb2JqZWN0IGRlZXBseSBpbW11dGFibGUuXHJcbiAqXHJcbiAqIEBwYXJhbSBvcmdhbml6YXRpb24gdG8gZnJlZXplLlxyXG4gKiBAcmV0dXJuIHtPcmdhbml6YXRpb259IG9yZ2FuaXphdGlvbiBmb3IgY29udmVuaWVuY2UuXHJcbiAqXHJcbiAqIEBpbnRlcm5hbCBmb3IgbGlicmFyeSB1c2Ugb25seS5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBmcmVlemVPcmdhbml6YXRpb24ob3JnYW5pemF0aW9uOiBPcmdhbml6YXRpb24pOiBPcmdhbml6YXRpb24ge1xyXG4gIGlmIChvcmdhbml6YXRpb24ucHJvcGVydHlNYXApIHtcclxuICAgIG9yZ2FuaXphdGlvbi5wcm9wZXJ0eU1hcCA9IE9iamVjdC5mcmVlemUob3JnYW5pemF0aW9uLnByb3BlcnR5TWFwKTtcclxuICB9XHJcbiAgcmV0dXJuIGRvbWFpbi5mcmVlemUob3JnYW5pemF0aW9uKTtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiB1c2VyIGRhdGEgYXMgZXhjaGFuZ2VkIHdpdGggUmVsdXRpb24gc2VydmVyLlxyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBVc2VyIGV4dGVuZHMgUm9sZSB7XHJcbiAgb3JnYW5pemF0aW9uVXVpZDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBwYXNzd29yZD86IHN0cmluZztcclxuXHJcbiAgc2FsdXRhdGlvbj86IHN0cmluZztcclxuICBnaXZlbk5hbWU/OiBzdHJpbmc7XHJcbiAgc3VybmFtZT86IHN0cmluZztcclxuICBwb3NpdGlvbj86IHN0cmluZztcclxuICBlbWFpbD86IHN0cmluZztcclxuICBwaG9uZT86IHN0cmluZztcclxuICBjb3VudHJ5Pzogc3RyaW5nO1xyXG4gIGxhc3RMb2dnZWRUaW1lPzogRGF0ZSB8IG51bWJlcjtcclxuICBwYXNzd29yZEV4cGlyZXM/OiBEYXRlIHwgbnVtYmVyO1xyXG4gIGxvY2tlZD86IGJvb2xlYW47XHJcbiAgYWN0aXZhdGVkPzogYm9vbGVhbjtcclxuICBjb25maXJtYXRpb25Ub2tlbj86IHN0cmluZztcclxuICBjb25maXJtYXRpb25Ub2tlblZhbGlkVG8/OiBEYXRlO1xyXG5cclxuICBwcmVmZXJlbmNlcz86IGFueTtcclxufVxyXG5cclxuLyoqXHJcbiAqIHR1cm5zIHRoZSBvYmplY3QgZGVlcGx5IGltbXV0YWJsZS5cclxuICpcclxuICogQHBhcmFtIHVzZXIgdG8gZnJlZXplLlxyXG4gKiBAcmV0dXJuIHtVc2VyfSB1c2VyIGZvciBjb252ZW5pZW5jZS5cclxuICpcclxuICogQGludGVybmFsIGZvciBsaWJyYXJ5IHVzZSBvbmx5LlxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGZyZWV6ZVVzZXIodXNlcjogVXNlcik6IFVzZXIge1xyXG4gIGlmICh1c2VyLmxhc3RMb2dnZWRUaW1lKSB7XHJcbiAgICB1c2VyLmxhc3RMb2dnZWRUaW1lID0gT2JqZWN0LmZyZWV6ZShuZXcgRGF0ZSgrdXNlci5sYXN0TG9nZ2VkVGltZSkpO1xyXG4gIH1cclxuICBpZiAodXNlci5wYXNzd29yZEV4cGlyZXMpIHtcclxuICAgIHVzZXIucGFzc3dvcmRFeHBpcmVzID0gT2JqZWN0LmZyZWV6ZShuZXcgRGF0ZSgrdXNlci5wYXNzd29yZEV4cGlyZXMpKTtcclxuICB9XHJcbiAgaWYgKHVzZXIuY29uZmlybWF0aW9uVG9rZW5WYWxpZFRvKSB7XHJcbiAgICB1c2VyLmNvbmZpcm1hdGlvblRva2VuVmFsaWRUbyA9IE9iamVjdC5mcmVlemUobmV3IERhdGUoK3VzZXIuY29uZmlybWF0aW9uVG9rZW5WYWxpZFRvKSk7XHJcbiAgfVxyXG4gIGlmICh1c2VyLnByZWZlcmVuY2VzKSB7XHJcbiAgICB1c2VyLnByZWZlcmVuY2VzID0gT2JqZWN0LmZyZWV6ZSh1c2VyLnByZWZlcmVuY2VzKTtcclxuICB9XHJcbiAgcmV0dXJuIGRvbWFpbi5mcmVlemUodXNlcik7XHJcbn1cclxuIl19