Files
Lisbet Alvarez 3ba93927fe Update copyright headers (#3146)
* empty commit

* Add missing copyright headers

* chore: 🤖 update copywrite config file with correct year

* Add missing copyright headers

* empty commit (gh action merge checks are stuck)
2026-01-28 17:09:06 -08:00

85 lines
2.5 KiB
JavaScript

/**
* Copyright IBM Corp. 2021, 2026
* SPDX-License-Identifier: BUSL-1.1
*/
import ApplicationSerializer from './application';
import { get } from '@ember/object';
export default class RoleSerializer extends ApplicationSerializer {
// =methods
/**
* If `adapterOptions.serializeGrants` is true, the serialization should
* include **only grants** and the version. Normally, grants are not
* serialized.
* If `adapterOptions.principalIDs` is set (to an array of user and
* group IDs), then the payload is serialized via `serializeWithPrincipals`.
* If `adapterOptions.grantScopeIDs` is set (to an array of scope IDs or
* keywords), then the payload is serialized via `serializeWithGrantScopeIDs`.
* @override
* @param {Snapshot} snapshot
* @return {object}
*/
serialize(snapshot) {
let serialized = super.serialize(...arguments);
const grantStrings = get(snapshot, 'adapterOptions.grantStrings');
if (grantStrings) {
serialized = this.serializeWithGrantStrings(snapshot, grantStrings);
}
const principalIDs = snapshot?.adapterOptions?.principalIDs;
if (principalIDs) {
serialized = this.serializeWithPrincipals(snapshot, principalIDs);
}
const grantScopeIDs = snapshot?.adapterOptions?.grantScopeIDs;
if (grantScopeIDs) {
serialized = this.serializeWithGrantScopeIDs(snapshot, grantScopeIDs);
}
return serialized;
}
/**
* Returns a payload containing only the grants array and version.
* @param {Snapshot} snapshot
* @param {[string]} grantStrings
* @return {object}
*/
serializeWithGrantStrings(snapshot, grantStrings) {
return {
version: snapshot.attr('version'),
grant_strings: grantStrings,
};
}
/**
* Returns a payload containing only the principal_ids array using IDs passed
* into the function (rather than existing principals on the model) and version.
* @param {Snapshot} snapshot
* @param {[string]} principalIDs
* @return {object}
*/
serializeWithPrincipals(snapshot, principalIDs) {
return {
version: snapshot.attr('version'),
principal_ids: principalIDs,
};
}
/**
* Returns a payload containing only the grant_scope_ids array and version.
* @param {Snapshot} snapshot
* @param {[string]} grantScopeIDs
* @return {object}
*/
serializeWithGrantScopeIDs(snapshot, grantScopeIDs) {
return {
version: snapshot.attr('version'),
grant_scope_ids: grantScopeIDs,
};
}
}